
    M/Ph#                        d Z ddlZddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZmZ ddlmZ ddlmZ  G d	 d
          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          ZdS )!z
Unit tests for fit_constrained
Tests for Poisson and Binomial are in discrete


Created on Sun Jan  7 09:21:39 2018

Author: Josef Perktold
    N)assert_allcloseassert_equal)family)GLM)OLSWLS)ValueWarning)add_constantc                   6    e Zd Zed             Zd Zd Zd ZdS )ConstrainedCompareMixinc                 h   d\  }}t           j                            d           t           j                            ||dz
            }t	          |          }|                    d          dz  }|dt           j                            |          z  z   }|| _        || _        g d| _        t          j	        | j                  | _
        dg| _        |d d | j        f         x| _        }t          |d|d d df         z  z
  |          }g d|j        d d <   || _        |                                  d S )Nd             r   r               ?constx2x3x4)nprandomseedrandnr
   sumendogexogidx_ucarrayidx_p_ucidx_cexogcr   
exog_namesmod2initclsnobsk_exogxy_trueyxc	mod_ols_cs           i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/genmod/tests/test_constrained.pysetup_classz#ConstrainedCompareMixin.setup_class   s   f
	vIOOD&1*--OOqAQ....	!\\
x
++C	111cj=))	BC!AAAqD'M)2..	"="="=	QQQ




    c                 p    | j         }| j        }t          |j        | j                 |j        d           d S N绽|=rtol)res1res2r   paramsr&   selfr=   r>   s      r5   test_paramsz#ConstrainedCompareMixin.test_params-   s6    yyDM2DKeLLLLLLr7   c                    | j         }| j        }t          |j        |j                   t	          |j        |j        d           t	          |j        | j                 |j        d           t	          |                                | j        d d d f         | j        f         |                                dd           d S )Nr:   r;   g:0y5>gV瞯<)r<   atol)	r=   r>   r   df_residr   scalebser&   
cov_paramsr@   s      r5   test_sezConstrainedCompareMixin.test_se2   s    yyT]DM222
DJU;;;;/FFFF))$-4*@+& '(,(9(95	R 	R 	R 	R 	R 	Rr7   c                 Z    | j         }| j        }t          |j        |j        d           d S r9   )r=   r>   r   resid_responseresidr@   s      r5   
test_residz"ConstrainedCompareMixin.test_resid<   s0    yy+TZeDDDDDDr7   N)__name__
__module____qualname__classmethodr6   rB   rI   rM    r7   r5   r   r      se          [&M M M
R R RE E E E Er7   r   c                   $    e Zd Zed             ZdS )TestGLMGaussianOffsetc                 l   | j                                         | _        t          | j        | j        d| j        d d | j        f                                         z            }g d|j	        d d <   |                                | _
        t          j        | j        j        d                   | _        d S )Nr   offsetr   r   r*   fitr>   r   r"   r(   r#   r'   squeezer)   r=   r   arangeshaper&   r-   mods     r5   r+   zTestGLMGaussianOffset.initD   s    8<<>>#)SYsx395==???A A A777qqq7799y!344r7   NrN   rO   rP   rQ   r+   rR   r7   r5   rT   rT   B   s-        5 5 [5 5 5r7   rT   c                   $    e Zd Zed             ZdS )TestGLMGaussianConstrainedc                     | j                                         | _        t          | j        | j                  }g d|j        d d <   |                    d          | _        d S )Nr   x1r   r   r   x1=0.5	r*   rY   r>   r   r"   r#   r)   fit_constrainedr=   r]   s     r5   r+   zTestGLMGaussianConstrained.initP   sU    8<<>>#)SX&&===qqq&&x00r7   Nr_   rR   r7   r5   ra   ra   N   -        1 1 [1 1 1r7   ra   c                   $    e Zd Zed             ZdS )TestGLMGaussianOffsetHCc                 x   d}| j                             |          | _        t          | j        | j        d| j        d d | j        f                                         z            }g d|j	        d d <   |                    |          | _
        t          j        | j        j        d                   | _        d S )NHC0cov_typer   rV   r   r   rX   r-   rn   r^   s      r5   r+   zTestGLMGaussianOffsetHC.initZ   s    8<<<22#)SYsx395==???A A A777qqq77H7--y!344r7   Nr_   rR   r7   r5   rj   rj   X   -        5 5 [5 5 5r7   rj   c                   $    e Zd Zed             ZdS )TestGLMGaussianConstrainedHCc                     d}| j                             |          | _        t          | j        | j                  }g d|j        d d <   |                    d|          | _        d S )Nrl   rm   rc   re   rf   ro   s      r5   r+   z!TestGLMGaussianConstrainedHC.initg   se    8<<<22#)SX&&===qqq&&x(&CCr7   Nr_   rR   r7   r5   rr   rr   e   2        D D [D D Dr7   rr   c                   $    e Zd Zed             ZdS )ConstrainedCompareWtdMixinc                    d\  }}t           j                            d           t           j                            ||dz
            }t	          |          }t           j                            dd|          | _        |                    d          dz  }|dt           j                            |          z  z   }|| _        || _	        g d| _
        t          j        | j
                  | _        dg| _        |d d | j
        f         x| _        }t          |d|d d df         z  z
  || j                  }g d	|j        d d <   || _        |                                  d S )
Nr   r   r   
   r   r   r   )weightsr   )r   r   r   r    r
   randintaweightsr!   r"   r#   r$   r%   r&   r'   r(   r   r)   r*   r+   r,   s           r5   r6   z&ConstrainedCompareWtdMixin.setup_classr   s8   f
	vIOOD&1*--OOy((B55qAQ....	!\\
x
++C	111cj=))	BC!AAAqD'M)2s|DDD	"="="=	QQQ




r7   N)rN   rO   rP   rQ   r6   rR   r7   r5   rv   rv   p   s-          [  r7   rv   c                   $    e Zd Zed             ZdS )TestGLMWtdGaussianOffsetc                 x   | j                                         | _        t          | j        | j        d| j        d d | j        f                                         z  | j	                  }g d|j
        d d <   |                                | _        t          j        | j        j        d                   | _        d S )Nr   rW   var_weightsr   r   r*   rY   r>   r   r"   r(   r#   r'   rZ   r{   r)   r=   r   r[   r\   r&   r]   s     r5   r+   zTestGLMWtdGaussianOffset.init   s    8<<>>#)SYsx395==???!l, , , 877qqq7799y!344r7   Nr_   rR   r7   r5   r}   r}      rp   r7   r}   c                   $    e Zd Zed             ZdS )TestGLMWtdGaussianConstrainedc                     | j                                         | _        t          | j        | j        | j                  }g d|j        d d <   |                    d          | _	        d S )Nr   rc   re   
r*   rY   r>   r   r"   r#   r{   r)   rg   r=   r]   s     r5   r+   z"TestGLMWtdGaussianConstrained.init   s\    8<<>>#)SX3<@@@===qqq&&x00r7   Nr_   rR   r7   r5   r   r      rh   r7   r   c                   $    e Zd Zed             ZdS )TestGLMWtdGaussianOffsetHCc                    d}| j                             |          | _        t          | j        | j        d| j        d d | j        f                                         z  | j	                  }g d|j
        d d <   |                    |          | _        t          j        | j        j        d                   | _        d S )Nrl   rm   r   r   r   r   r   ro   s      r5   r+   zTestGLMWtdGaussianOffsetHC.init   s    8<<<22#)SYsx395==???!l, , , 877qqq77H7--y!344r7   Nr_   rR   r7   r5   r   r      s-        5 5 [5 5 5r7   r   c                   $    e Zd Zed             ZdS )TestGLMWtdGaussianConstrainedHCc                     d}| j                             |          | _        t          | j        | j        | j                  }g d|j        d d <   |                    d|          | _	        d S )Nrl   rm   r   rc   re   r   ro   s      r5   r+   z$TestGLMWtdGaussianConstrainedHC.init   sl    8<<<22#)SX3<@@@===qqq&&x(&CCr7   Nr_   rR   r7   r5   r   r      rt   r7   r   c                   L    e Zd Zed             Zed             Zd Zd Zd ZdS )TestGLMBinomialCountConstrainedc                    ddl m}  |            }t          j        |j                  |_        t          j        |j                  |_        t          |j        d          }t          j        t          |j                            }|d d d df         }t          |j        |t          j                    |          | _        t          |j        |t          j                    |          | _        |                                  d S )Nr   )loadT)prepend)r   rW   )statsmodels.datasets.star98r   r   asarrayr#   r"   r
   oneslenr   r   Binomialr*   mod1r+   )r-   r   datar#   rW   	exog_keeps         r5   r6   z+TestGLMBinomialCountConstrained.setup_class   s    444444 tvvJty))	Z
++
DIt444TZ))CRCL	tz9V_5F5F$& & & tz40A0A$& & &




r7   c                    | j                                         | _        | j        j        j        d         }t          j        |dz
            | _        t          j	        |          dd          }| j        
                    |          | _        d S )Nr   r   r   r*   rY   r>   r   r#   r\   r   r[   r&   eyerg   r=   r-   kconstraintss      r5   r+   z$TestGLMBinomialCountConstrained.init   si    8<<>>HM"yQ''fQiin8++K88r7   c                 Z    | j         }| j        }t          |j        |j        d           d S )N:0yE>r;   )r=   r>   r   rK   r@   s      r5   rM   z*TestGLMBinomialCountConstrained.test_resid   s1    yy+T-@tLLLLLLr7   c                 X   dD ]:}t          t          | j        |          t          | j        |          d           ;t	          j                    5  t	          j        dt                     t          | j        j        | j        j        d           d d d            d S # 1 swxY w Y   d S )N)llfnull_devianceaicrE   df_modelpearson_chi2rF   r:   r;   ignore)	r   getattrr=   r>   warningscatch_warningssimplefilterFutureWarningbic)rA   attrs     r5   test_glm_attrz-TestGLMBinomialCountConstrained.test_glm_attr   s   : 	B 	BDGDIt44#DIt445B B B B B$&& 	F 	F!(M:::DIM49=uEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   ABB#&B#c                 z   | j         }| j        }t          |j                  }t          |j                  }d}t	          j                    5  t	          j        dt                     |                    t          j
        |          dd          |d          }|                    t          j
        |          dd          |d          }d d d            n# 1 swxY w Y   t          |j        |j        d           t          |j        |j        d	           t          |j        |j                   d}t	          j                    5  t	          j        dt                     |                    t          j
        |          dd          |d          }|                    t          j
        |          dd          |d          }d d d            n# 1 swxY w Y   t          |j        |j        d	           t          |j        |j        d	           t          |j        |j                   t          |j        |j                   t          |                                d
d          |                                d
d                     t	          j                    5  t	          j        dt$                     t	          j        dt                     t	          j        dt&                     | j                                          | j                                          d d d            d S # 1 swxY w Y   d S )NFr   r   T)use_fscalarg#B;)rD   r   r;   i)r=   r>   r   r?   r   r   r   r	   	wald_testr   r   r   pvalue	statisticr   df_denomdf_numsummaryr   RuntimeWarningsummary2)rA   r=   r>   k1k2r   wt2wt1s           r5   	test_waldz)TestGLMBinomialCountConstrained.test_wald   s   yy$&& 	K 	K!(L999..ABBuT.JJC..ABBuT.JJC	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	
CJU;;;;s}4@@@@S\3<000$&& 	K 	K!(L999..ABBuT.JJC..ABBuT.JJC	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	
CJQ7777s}4@@@@S\3<000SZ,,,S[[]]344(#++--*=>>> $&& 	! 	! !(M:::!(L999!(N;;;II   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s9   A?CCC	A?GGG"BL00L47L4N)	rN   rO   rP   rQ   r6   r+   rM   r   r   rR   r7   r5   r   r      s{          [" 9 9 [9M M MF F F"! "! "! "! "!r7   r   c                   $    e Zd Zed             ZdS )!TestGLMBinomialCountConstrainedHCc                 &   | j                             d          | _        | j        j        j        d         }t          j        |dz
            | _        t          j	        |          dd          }| j        
                    |d          | _        d S )Nrl   rm   r   r   r   r   r   s      r5   r+   z&TestGLMBinomialCountConstrainedHC.init
  st    8<<<//HM"yQ''fQiin8++K%+HHr7   Nr_   rR   r7   r5   r   r   	  s2        I I [I I Ir7   r   )__doc__r   numpyr   numpy.testingr   r   statsmodels.genmod.familiesr   +statsmodels.genmod.generalized_linear_modelr   #statsmodels.regression.linear_modelr   r   statsmodels.tools.sm_exceptionsr	   statsmodels.tools.toolsr
   r   rT   ra   rj   rr   rv   r}   r   r   r   r   r   rR   r7   r5   <module>r      s         7 7 7 7 7 7 7 7 . . . . . . ; ; ; ; ; ; 8 8 8 8 8 8 8 8 8 8 8 8 8 8 0 0 0 0 0 0(E (E (E (E (E (E (E (EV	5 	5 	5 	5 	53 	5 	5 	51 1 1 1 1!8 1 1 1
5 
5 
5 
5 
55 
5 
5 
5D D D D D#: D D D    !8   0
5 
5 
5 
5 
59 
5 
5 
51 1 1 1 1$> 1 1 15 5 5 5 5!; 5 5 5D D D D D&@ D D DN! N! N! N! N!&= N! N! N!bI I I I I(G I I I I Ir7   