U
    ÃmœdÙš  ã                   @   sœ  d Z ddlZddlZddlmZmZ ddlZddl	Z	ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZ eƒ Ze ej¡e_e ej¡e_e ejdd…d
f ¡ejdd…d
f< eejdd�e_G dd„ dƒZG dd„ deƒZ G dd„ deƒZ!G dd„ deƒZ"G dd„ deƒZ#G dd„ deƒZ$G dd„ deƒZ%G dd„ deƒZ&G dd„ deƒZ'G dd „ d eƒZ(G d!d"„ d"eƒZ)dId#d$„Z*d%d&„ Z+d'd(„ Z,G d)d*„ d*eƒZ-G d+d,„ d,eƒZ.G d-d.„ d.eƒZ/G d/d0„ d0eƒZ0G d1d2„ d2eƒZ1G d3d4„ d4eƒZ2d5d6„ Z3dddd7d7d7d
d
d
dddd7d7d7d
d
gZ4e	j5j6d8e4e e4¡e 7e4¡gd9d:d;gd<�d=d>„ ƒZ8d?d@„ Z9G dAdB„ dBeƒZ:G dCdD„ dDeƒZ;dEdF„ Z<dGdH„ Z=dS )Ja�  
Test for weights in GLM, Poisson and OLS/WLS, continuous test_glm.py


Below is a table outlining the test coverage.

================================= ====================== ====== ===================== === ======= ======== ============== ============= ============== ============= ============== ==== =========
Test                              Compared To            params normalized_cov_params bse loglike deviance resid_response resid_pearson resid_deviance resid_working resid_anscombe chi2 optimizer
================================= ====================== ====== ===================== === ======= ======== ============== ============= ============== ============= ============== ==== =========
TestGlmPoissonPlain               stata                  X                            X   X       X        X              X             X              X             X              X    bfgs
TestGlmPoissonFwNr                stata                  X                            X   X       X        X              X             X              X             X              X    bfgs
TestGlmPoissonAwNr                stata                  X                            X   X       X        X              X             X              X             X              X    bfgs
TestGlmPoissonFwHC                stata                  X                            X   X       X                                                                                 X
TestGlmPoissonAwHC                stata                  X                            X   X       X                                                                                 X
TestGlmPoissonFwClu               stata                  X                            X   X       X                                                                                 X
TestGlmTweedieAwNr                R                      X                            X           X        X              X             X              X                                 newton
TestGlmGammaAwNr                  R                      X                            X   special X        X              X             X              X                                 bfgs
TestGlmGaussianAwNr               R                      X                            X   special X        X              X             X              X                                 bfgs
TestRepeatedvsAggregated          statsmodels.GLM        X      X                                                                                                                        bfgs
TestRepeatedvsAverage             statsmodels.GLM        X      X                                                                                                                        bfgs
TestTweedieRepeatedvsAggregated   statsmodels.GLM        X      X                                                                                                                        bfgs
TestTweedieRepeatedvsAverage      statsmodels.GLM        X      X                                                                                                                        bfgs
TestBinomial0RepeatedvsAverage    statsmodels.GLM        X      X
TestBinomial0RepeatedvsDuplicated statsmodels.GLM        X      X                                                                                                                        bfgs
TestBinomialVsVarWeights          statsmodels.GLM        X      X                     X                                                                                                  bfgs
TestGlmGaussianWLS                statsmodels.WLS        X      X                     X                                                                                                  bfgs
================================= ====================== ====== ===================== === ======= ======== ============== ============= ============== ============= ============== ==== =========
é    N)Úassert_allcloseÚassert_raises©Úload)ÚGLM)ÚSpecificationWarning)Úadd_constanté   )Úres_R_var_weightÚresults_glm_poisson_weightsé   F©Úprependc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚCheckWeightc                 C   sÒ   | j }| j}t|j|jddd� t| ddƒ}t|dƒrJt|j|jddd� t| tt	t
tttfƒrdd S t|j||j ddd� t| tƒrŠd S t| tƒr˜d S t| ttfƒsºt|j|jddd� t|j|jddd� d S )	Nç�íµ ÷Æ°>ç�íµ ÷ÆÀ>©ÚatolÚrtolÚ	corr_factr	   Únormalized_cov_paramsg:Œ0âŽyE>çH¯¼šò×z>)Úres1Úres2r   ÚparamsÚgetattrÚhasattrr   Ú
isinstanceÚTestRepeatedvsAggregatedÚTestRepeatedvsAverageÚTestTweedieRepeatedvsAggregatedÚTestTweedieRepeatedvsAverageÚTestBinomial0RepeatedvsAverageÚ!TestBinomial0RepeatedvsDuplicatedÚbseÚTestBinomialVsVarWeightsÚTestGlmGaussianWLSÚTestGlmGaussianAwNrÚTestGlmGammaAwNrÚllfÚllÚdeviance)Úselfr   r   r   © r-   úb/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/genmod/tests/test_glm_weights.pyÚ
test_basic8   s2    
 þü

zCheckWeight.test_basicc                 C   sà   t | ttttttfƒrd S | j}| j}t	|dƒs4d S t
t|j|jjƒƒ}t|j|d ddd� t|j|d ddd� t|j|d ddd� t|j|d ddd� | d	¡d kr²d S |j}|d	 t |j¡ }t||ddd� d S )
NÚresidsÚresid_responser   r   r   Úresid_pearsonÚresid_devianceÚresid_workingÚresid_anscombe)r   r   r   r    r!   r"   r#   r   r   r   ÚdictÚzipZresids_colnamesr0   ÚTr   r1   r2   r3   r4   Úgetr5   ÚnpÚsqrtÚ_var_weights)r,   r   r   Z	resid_allZresid_aZresid_a1r-   r-   r.   Útest_residualsV   sB    ü
 ÿ ÿ ÿ ÿzCheckWeight.test_residualsc                 C   s°   | j }t|jjtjjƒr"d}d}nd}d}t| ttt	t
fƒr@d S |j}| j jj|||d�}t|j|jddd� |jj|jd	d
�}t t tj |¡¡ ¡}t|j|ddd� d S )NÚnewtonZeimÚbfgsZoim)Ústart_paramsÚmethodÚoptim_hessiançü©ñÒMbP?gü©ñÒMb`?r   F©Zobserved)r   r   ÚmodelÚfamilyÚsmÚfamiliesÚTweedieÚTestGlmPoissonFwHCÚTestGlmPoissonAwHCÚTestGlmPoissonFwClur"   r   Úfitr   Úhessianr:   r;   ÚdiagÚlinalgÚinvr$   )r,   r   rA   rB   r@   r   ÚHZres2_bser-   r-   r.   Útest_compare_optimizersu   s&    þÿz#CheckWeight.test_compare_optimizersc                 C   s(   t | jdƒr$t| jj| jjddd� d S )NZchi2r   r   )r   r   r   r   Zpearson_chi2Z
deviance_p©r,   r-   r-   r.   Útest_pearson_chi2Š   s
     ÿzCheckWeight.test_pearson_chi2c                 C   s$   | j  ¡ }t|jj|jjdd� d S )Nç»½×Ùß|Û=)r   )r   Zget_predictionr   ZlinpredZse_mean)r,   Úpredr-   r-   r.   Útest_getprediction�   s    
zCheckWeight.test_getpredictionN)Ú__name__Ú
__module__Ú__qualname__r/   r=   rS   rU   rX   r-   r-   r-   r.   r   7   s
   r   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGlmPoissonPlainc                 C   s*   t tjtjtj ¡ d� ¡ | _t	j
| _d S )N©rF   )r   Úcpunish_dataÚendogÚexogrG   rH   ÚPoissonrM   r   Ú	res_stataZresults_poisson_none_nonrobustr   )Úclsr-   r-   r.   Úsetup_class•   s    
ÿzTestGlmPoissonPlain.setup_classN©rY   rZ   r[   Úclassmethodrd   r-   r-   r-   r.   r\   ”   s   r\   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGlmPoissonFwNrc                 C   s\   dddddddddddddddddg}t  |¡}ttjtjtj ¡ |d� 	¡ | _
tj| _d S )Nr	   é   r   ©rF   Úfreq_weights)r:   Úarrayr   r^   r_   r`   rG   rH   ra   rM   r   rb   Z!results_poisson_fweight_nonrobustr   )rc   Úfweightsr-   r-   r.   rd   ž   s    &

 ÿzTestGlmPoissonFwNr.setup_classNre   r-   r-   r-   r.   rg   �   s   rg   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGlmPoissonAwNrc                 C   sÎ   dddddddddddddddddg}t  |¡}| ¡ }ttjƒ}|| | }ttjtjtj	 
¡ |d� ¡ | _ddlm} |tjƒ| _| jj ¡ | j_| jjd d …dd…f  t  |d d …t jf ¡9  < d S )Nr	   rh   r   ©rF   Úvar_weightsr   )Úcopyé   )r:   rk   ÚsumÚlenr^   r_   r   r`   rG   rH   ra   rM   r   rp   rb   Z!results_poisson_aweight_nonrobustr   r0   r;   Znewaxis)rc   rl   ÚwsumÚnobsÚaweightsrp   r-   r-   r.   rd   «   s    &


 ÿzTestGlmPoissonAwNr.setup_classNre   r-   r-   r-   r.   rm   ª   s   rm   c                       sT   e Zd Zedd„ ƒZejjddd�‡ fdd„ƒZejjddd�‡ fdd	„ƒZ	‡  Z
S )
ÚTestGlmPoissonPwNrc                 C   s~   dddddddddddddddddg}t  |¡}| ¡ }ttjƒ}|| | }ttjtjtj	 
¡ |d�jdd�| _tj| _d S )Nr	   rh   r   ri   ZHC1©Úcov_type)r:   rk   rr   rs   r^   r_   r   r`   rG   rH   ra   rM   r   rb   Z!results_poisson_pweight_nonrobustr   )rc   rl   rt   ru   rv   r-   r-   r.   rd   Ã   s    &


 ÿþzTestGlmPoissonPwNr.setup_classzKnown to failT)ÚreasonÚstrictc                    s   t t| ƒ ¡  d S ©N)Úsuperrw   r/   rT   ©Ú	__class__r-   r.   r/   Ó   s    zTestGlmPoissonPwNr.test_basicc                    s   t t| ƒ ¡  d S r|   )r}   rw   rS   rT   r~   r-   r.   rS   ×   s    z*TestGlmPoissonPwNr.test_compare_optimizers)rY   rZ   r[   rf   rd   ÚpytestÚmarkZxfailr/   rS   Ú__classcell__r-   r-   r~   r.   rw   Â   s   
rw   c                   @   s   e Zd Zedd„ ƒZdS )rJ   c                 C   s–   dddddddddddddddddg}t  |¡}| ¡ }ttjƒ}|| | }t  |d | ¡| _ttjtj	t
j ¡ |d�}|jdd�| _tj| _d S )Nr	   rh   r   ç      ð?ri   ÚHC0rx   )r:   rk   rr   rs   r^   r_   r;   r   r   r`   rG   rH   ra   rM   r   rb   Zresults_poisson_fweight_hc1r   ©rc   rl   rt   ru   rv   Úmodr-   r-   r.   rd   Ý   s    &


þzTestGlmPoissonFwHC.setup_classNre   r-   r-   r-   r.   rJ   Ü   s   rJ   c                   @   s   e Zd Zedd„ ƒZdS )rK   c                 C   sš   dddddddddddddddddg}t  |¡}| ¡ }ttjƒ}|| | }t  |d | ¡d | _ttjtj	t
j ¡ |d�}|jdd�| _tj| _d S )	Nr	   rh   r   rƒ   gƒL´#¢†ï?rn   r„   rx   )r:   rk   rr   rs   r^   r_   r;   r   r   r`   rG   rH   ra   rM   r   rb   Zresults_poisson_aweight_hc1r   r…   r-   r-   r.   rd   ò   s    &


þzTestGlmPoissonAwHC.setup_classNre   r-   r-   r-   r.   rK   ñ   s   rK   c                   @   s   e Zd Zedd„ ƒZdS )rL   c           	      C   sÚ   dddddddddddddddddg}t  |¡}| ¡ }ttjƒ}|| | }t  dd¡d }tt  |¡ƒ}dt  ||d  ¡ | _	|ddœ}t
 t¡�0 ttjtjtj ¡ |d�}|jd|d	�| _W 5 Q R X tj| _d S )
Nr	   rh   r   é   F©ÚgroupsZuse_correctionri   Úcluster©ry   Úcov_kwds)r:   rk   rr   rs   r^   r_   ÚarangeÚuniquer;   r   r€   Úwarnsr   r   r`   rG   rH   ra   rM   r   rb   Zresults_poisson_fweight_clu1r   )	rc   rl   rt   ru   rv   ÚgidZn_groupsrŒ   r†   r-   r-   r.   rd   
  s     &



þzTestGlmPoissonFwClu.setup_classNre   r-   r-   r-   r.   rL   	  s   rL   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGlmTweedieAwNrc                 C   s¢   dd l m  m} tjj ¡ }|j}|j}||d< t	 
dt|jƒ¡}d|d d d…< d|d d d…< |jd|tjjdtjj ¡ d	�|d
�}|jddd�| _tj| _d S )Nr   Úfairr	   rq   r   é   zfair ~ age + yrs_marriedgÍÌÌÌÌÌø?)Ú	var_powerÚlink©ÚdatarF   ro   çÙ}ÚõÐò¾:©r   r   )Ústatsmodels.formula.apiÚformulaÚapirG   Údatasetsr’   Úload_pandasr_   r`   r:   Úrepeatrs   ÚindexÚglmrH   rI   ÚlinksÚLogrM   r   Úres_rZ"results_tweedie_aweights_nonrobustr   ©rc   Úsmfr—   r_   rv   rE   r-   r-   r.   rd   $  s&    
þù	zTestGlmTweedieAwNr.setup_classNre   r-   r-   r-   r.   r‘   #  s   r‘   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )r(   c                 C   s¨   ddl m} |ƒ }|j}|jd d …d d…f }tj|dd�}t dt|ƒ¡}d|d d d…< d|d d d…< tj	||tj
jtj
j ¡ d	�|d
�}|jddd�| _tj| _d S )Nr	   )Ú	CancerLogéÿÿÿÿTr   rq   r   r“   ©r•   rn   r˜   r   r™   )Zresults.results_glmr§   r_   r`   rG   r   r:   rŸ   rs   r   rH   ÚGammar¢   r£   rM   r   r¤   Z results_gamma_aweights_nonrobustr   )rc   r§   r   r_   r`   rv   rE   r-   r-   r.   rd   =  s    þzTestGlmGammaAwNr.setup_classc                 C   sP   | j j| j j ¡  }| j jj| j jj| j j| j j	|d�}t
|| jjddd� d S )N©rj   Úscaler   r   r   )r   r+   Ú	_iweightsrr   rF   ÚloglikerE   r_   Úmur<   r   r   r*   )r,   r¬   r*   r-   r-   r.   Ú
test_r_llfN  s    ýzTestGlmGammaAwNr.test_r_llfN©rY   rZ   r[   rf   rd   r°   r-   r-   r-   r.   r(   <  s   
r(   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )r'   c                 C   s®   dd l m  m} tjj ¡ }|j}|j}||d< |d  d  < t	 
ddddd	dddddddd	ddddg¡}|jd
|tjjtjj ¡ d�|d�}|jddd�| _tj| _d S )Nr   Ú
EXECUTIONSÚINCOMEéè  r	   rh   r   é   rq   úEXECUTIONS ~ INCOME + SOUTH - 1r©   r–   r˜   r™   )rš   r›   rœ   rG   r�   Úcpunishrž   r_   r`   r:   rk   r¡   rH   ÚGaussianr¢   r£   rM   r   r¤   Z#results_gaussian_aweights_nonrobustr   r¥   r-   r-   r.   rd   X  s"    $ÿüzTestGlmGaussianAwNr.setup_classc           
      C   s¤   | j }| j}| j j}|j|j |j }|j}|jj|j	|j
||d�}d|j	|j
 d  ¡  | }|j d t t |j¡¡d  }|| | }	t|	|jddd� d S )Nr«   g      à¿rh   r   r   r   )r   r   rE   r¬   Zdf_residZwnobsrj   rF   r®   r_   r¯   rr   r:   Úlogro   r   r*   )
r,   r   r   rE   r¬   Úwtsr)   Zadj_smZadj_rZllf_adjr-   r-   r.   r°   l  s    þ"zTestGlmGaussianAwNr.test_r_llfNr±   r-   r-   r-   r.   r'   W  s   
r'   c                 C   s¬  t j d¡ tj}|ƒ  | ¡}||jkr¼|dkrLdt jjt| ƒd�|k  }nnt  	t| ƒdf¡}d}t jjt| ƒ|fd�|d d …d f k  
d¡|d d …df< ||d d …df  |d d …df< nì||jkrÔt j |¡}nÔ||jkrît j d|¡}nº||jk�r|t jjt| ƒd� }n–||jk�r8ddlm} | |d¡}np||jk�r\dd	lm}	 |	 |¡}nL||jk�r¤d}
d
}||
|  }t jj|
|jd d�t j || ¡ }nt‚|S )Nih  r   r	   ©Úsizerh   é
   )Únbinomç      à?)Úinvgaussrƒ   )r:   ÚrandomÚseedrG   rH   ZinverseÚBinomialÚuniformrs   Úemptyrr   ra   Úpoissonrª   Úgammar¸   ÚnormalÚNegativeBinomialZscipy.stats.distributionsr¾   ZrvsÚInverseGaussianrÀ   rI   ÚshapeÚ
ValueError)Úlin_predÚfamily_classr•   Úbinom_versionÚfamr¯   r_   Únr¾   rÀ   ZraterË   r¬   r-   r-   r.   Ú	gen_endog‚  sF    
ÿÿ"

ÿrÒ   c                  C   sÚ  t j d¡ tj} tjj}| j|j|j|j	|j
|jgf| j|j
|j|jgf| j|j
|j|jgf| j|j|j
|jgf| j|j
|j|j|jgf| j|j
|j|j|jgfg}d}d}t jj||fd�}d|d d …df< d}|D �]ú\}}|D �]ê}	dD �]Þ}
d	}|| jk�r|
dk�rqð�nÒ|| jk�r4|	|j	k�r4qð�n´|| jk�rR|	|j
k�rRqð�n–||	f| j|jfk�rzd
| d¡ }�nn||	f| j|j
fk�r¦d| d¡d  }�nB||	f| j|jfk�rÎd| d¡ }�n||	f| j|j
fk�rêqð�nþ||	f| j|jfk�rqð�nâ||	f| j|jfk�r"qð�nÆ||	f| j|j
fk�r>qð�nª||	f| j|jfk�rZqð�nŽ||	f| j|j
fk�r„d| d¡ }qð�nd||	f| j|jfk�rÂd
d| d¡  }t  |dt j¡}qð�n&||	f| j|jfk�rîd| d¡d  }qðnú||	f| j|jfk�rd| d¡d  }d}nÌ||	f| j|jfk�rZd
d| d¡  }t  |dt j¡}d}nŽ||	f| j|jfk�rŒdt jj|jd d� }qðn\||	f| j|jfk�r¸d| d¡d  }qðn0||	f| j|jfk�rÔd}nt jj|jd d�}t|||	|
ƒ}|
dk�r:t  |¡}t jjdd|| ¡ k ¡ d�}|||| ¡ k< nZt j|jd d�}|d d …df |jdd� }t jj d|| ¡ k ¡ d�}|||| ¡ k< t! "¡ �* t! #d¡ tj$|||||	ƒ d�d�}W 5 Q R X |j%dddd�}d|j&fdfD ]ä\}}|dk�r|�r�qêt! "¡ �* t! #d¡ tj$|||||	ƒ d�d�}W 5 Q R X |j%|||d �}t'|j&|j&d!d"d#� t'|j(|j(d!d!d#� t'|j)|j)d!d!d#� |j*}|j+|j&dd$�}t  ,t  -t j. /|¡¡ ¡}t'||j*d!d"d#� �qêqðqæqØd S )%Ni.U éd   r   r»   r	   r   F)r   r	   r?   é   r¨   é   éþÿÿÿrq   g-Cëâ6?r¿   r>   rC   çš™™™™™¹?Trh   ©rË   ©ZaxisÚignorer©   )ro   rF   ZIRLSrV   r   )rA   r   Útol_criterion)r   N)Úmax_start_irlsr@   rA   r   g-Cëâ6
?r™   rD   )0r:   rÁ   rÂ   rG   rH   r¢   rÃ   ÚLogitZProbitZCLogLogr£   ZCauchyra   ÚIdentityZSqrtrª   ZInversePowerr¸   rÊ   ZInverseSquaredrÉ   rÈ   rr   ZclipÚinfrÄ   rË   rÒ   Z	ones_likeÚrandintZmeanZonesrÇ   ÚwarningsÚcatch_warningsÚsimplefilterr   rM   r   r   r)   r¬   r$   rN   r;   rO   rP   rQ   )rÐ   ZlnkrH   rÑ   Úpr`   Zskip_onerÎ   Zfamily_linksr•   rÏ   rA   rÍ   r_   rº   ÚtmpÚyZmod_irlsZ	rslt_irlsrÜ   r@   Zmod_gradientZrslt_gradientZgradient_bseZehessr-   r-   r.   Útest_wtd_gradient_irls«  s    ÿþ ÿø


ÿ
ÿ
ÿ
ÿ
ÿ
ÿ

ý



ÿÿÿ



ÿý  ÿ
 ÿ
 ÿÿ
ÿrç   c                 C   sp   t  t  | ¡¡}t j| jd t|ƒd fd�}t|ƒD ]4\}}|dkrHq6t  || kdd¡|d d …|d f< q6|S )Nr   r	   rØ   )r:   ÚsortrŽ   ZzerosrË   rs   Ú	enumerateÚwhere)ÚxÚvaluesÚoutÚiÚvr-   r-   r.   Úget_dummiesD  s    $rð   c                   @   s   e Zd Zedd„ ƒZdS )r   c                 C   s€  t j d¡ d}d}t  ||f¡}d|d d …df< t jjdd|d�|d d …df< t  t  ddd	d
g¡|d
 ¡}t|ƒ|d d …dd …f< t  dddddg¡}|| jdd�}t	j
j}t	j
jj}t|||ƒ}	t	j|	|||ƒ d�d�}
|
 ¡ | _t |¡}|	|d< | dddd	d
g¡ ¡ dg }| dddd	d
g¡ ¡ dg }t  |j ¡ ¡}|d }|d }t	j||||ƒ d�|d�}| ¡ | _d S )Néá  rÓ   rq   r	   r   éûÿÿÿ©ÚlowÚhighr¼   rh   r   rµ   r¨   r×   çš™™™™™©¿çš™™™™™É?çffffffÖ?rÙ   r©   r]   r_   ©rF   Úexposure©r:   rÁ   rÂ   rÅ   rà   rŸ   rk   rð   rr   rG   rH   ra   r¢   r£   rÒ   r   rM   r   ÚpdÚ	DataFrameÚgroupbyÚcountr    Útolistr   ©rc   rÑ   rä   r`   rë   ÚbetarÍ   rF   r•   r_   Úmod1ÚaggÚ	agg_endogÚagg_wtÚagg_exogÚmod2r-   r-   r.   rd   O  s4    


ÿz$TestRepeatedvsAggregated.setup_classNre   r-   r-   r-   r.   r   N  s   r   c                   @   s   e Zd Zedd„ ƒZdS )r   c                 C   s„  t j d¡ d}d}t  ||f¡}d|d d …df< t jjdd|d�|d d …df< t  t  ddd	d
g¡|d
 ¡}t|ƒ|d d …dd …f< t  dddddg¡}|| jdd�}t	j
j}t	j
jj}t|||ƒ}	t	j|	|||ƒ d�d�}
|
 ¡ | _t |¡}|	|d< | dddd	d
g¡ ¡ dg }| dddd	d
g¡ ¡ dg }t  |j ¡ ¡}|d }|d | }t	j||||ƒ d�|d�}| ¡ | _d S )Nrñ   é'  rq   r	   r   rò   ró   rh   r   rµ   r¨   r×   rö   r÷   rø   rÙ   r©   r]   r_   rn   rû   ©rc   rÑ   rä   r`   rë   r  rÍ   rF   r•   r_   r  r  r  r  r  Z	avg_endogr  r-   r-   r.   rd   n  s4    


ÿz!TestRepeatedvsAverage.setup_classNre   r-   r-   r-   r.   r   m  s   r   c                   @   s   e Zd Zedd„ ƒZdS )r    c                 C   sš  t j d¡ d}d}t  ||f¡}d|d d …df< t jjdd|d�|d d …df< t  t  ddd	d
g¡|d
 ¡}t|ƒ|d d …dd …f< t  dddddg¡}|| jdd�}t	j
j}t	j
jj}t|||ƒ}	t	j|	|||ƒ dd�d�}
|
jdddd�| _t |¡}|	|d< | dddd	d
g¡ ¡ dg }| dddd	d
g¡ ¡ dg }t  |j ¡ ¡}|d }|d }t	j||||ƒ dd�||d d�}|jdddd�| _d S )Nrñ   r	  rq   r	   r   rò   ró   rh   r   rµ   é   r×   rö   r÷   rø   rÙ   ç      ø?©r•   r”   r]   g#B’¡œÇ;r   ©r   r   rÛ   r_   r¿   )rF   rú   ro   ©r:   rÁ   rÂ   rÅ   rà   rŸ   rk   rð   rr   rG   rH   rI   r¢   r£   rÒ   r   rM   r   rü   rý   rþ   rÿ   r    r   r   r  r-   r-   r.   rd   �  s8    

 þz+TestTweedieRepeatedvsAggregated.setup_classNre   r-   r-   r-   r.   r    Œ  s   r    c                   @   s   e Zd Zedd„ ƒZdS )r!   c                 C   sš  t j d¡ d}d}t  ||f¡}d|d d …df< t jjdd|d�|d d …df< t  t  ddd	d
g¡|d
 ¡}t|ƒ|d d …dd …f< t  dddddg¡}|| jdd�}t	j
j}t	j
jj}t|||ƒ}	t	j|	|||ƒ dd�d�}
|
jddddd�| _t |¡}|	|d< | dddd	d
g¡ ¡ dg }| dddd	d
g¡ ¡ dg }t  |j ¡ ¡}|d }|d | }t	j||||ƒ dd�|d�}|jdddd�| _d S )Nrñ   r´   rq   r	   r   rò   ró   rh   r   rµ   r  r×   rö   r÷   rø   rÙ   r  r  r]   rV   r   Úx2©r   r   rÛ   Z	scaletyper_   rn   r  r  r
  r-   r-   r.   rd   ­  s:    

ÿ
þz(TestTweedieRepeatedvsAverage.setup_classNre   r-   r-   r-   r.   r!   ¬  s   r!   c                   @   s   e Zd Zedd„ ƒZdS )r"   c                 C   sš  t j d¡ d}d}t  ||f¡}d|d d …df< t jjdd|d�|d d …df< t  t  ddd	d
g¡|d
 ¡}t|ƒ|d d …dd …f< t  dddddg¡}|| jdd�}t	j
j}t	j
jj}t|||dd�}	t	j|	|||ƒ d�d�}
|
jddddd�| _t |¡}|	|d< | dddd	d
g¡ ¡ dg }| dddd	d
g¡ ¡ dg }t  |j ¡ ¡}|d }|d | }t	j||||ƒ d�|d�}|jdddd�| _d S )Nrñ   rÔ   rq   r	   r   rò   ró   rh   r   rµ   r¨   r×   rö   r÷   rø   rÙ   ©rÏ   r©   r]   rV   r   r  r  r_   rn   r  )r:   rÁ   rÂ   rÅ   rà   rŸ   rk   rð   rr   rG   rH   rÃ   r¢   rÝ   rÒ   r   rM   r   rü   rý   rþ   rÿ   r    r   r   r
  r-   r-   r.   rd   Î  s:    

ÿ

þz*TestBinomial0RepeatedvsAverage.setup_classNre   r-   r-   r-   r.   r"   Í  s   r"   c                   @   s   e Zd Zedd„ ƒZdS )r#   c                 C   sB  t j d¡ d}d}t  ||f¡}d|d d …df< t jjdd|d�|d d …df< t  t  ddd	d
g¡|d
 ¡}t|ƒ|d d …dd …f< t  dddddg¡}|| jdd�}t	j
j}t	j
jj}t|||dd�}	t j dd|¡}
t	j|	|||ƒ d�|
d�}| ¡ | _t j||
dd�}t  |	|
¡}t	j||||ƒ d�d�}| ¡ | _d S )Nrñ   r	  rq   r	   r   rò   ró   rh   r   rµ   r¨   r×   rö   r÷   rø   rÙ   r  r©   ri   r]   )r:   rÁ   rÂ   rÅ   rà   rŸ   rk   rð   rr   rG   rH   rÃ   r¢   rÝ   rÒ   r   rM   r   r   )rc   rÑ   rä   r`   rë   r  rÍ   rF   r•   r_   Úwtr  Zexog_dupZ	endog_dupr  r-   r-   r.   rd   ï  s(    

z-TestBinomial0RepeatedvsDuplicated.setup_classNre   r-   r-   r-   r.   r#   î  s   r#   c                  C   sÒ   dddddddddddddddddg} t  | ¡} t  dd¡d }|ddœ}t t¡�2 ttjtj	t
j ¡ | d�jd|d	�}| ¡  W 5 Q R X t t¡�2 ttjtj	t
j ¡ | d
�jd|d	�}| ¡  W 5 Q R X d S )Nr	   rh   r   r‡   Frˆ   ri   rŠ   r‹   rn   )r:   rk   r�   r€   r�   r   r   r^   r_   r`   rG   rH   ra   rM   Úsummary)Úweightsr�   rŒ   r   r-   r-   r.   Útest_warnings_raised  s,    &


 ÿ þ
 ÿ þr  rh   Ú	formattedÚlistÚndarrayÚSeries)Zidsc                 C   s   t | ƒ d S r|   )Úcheck_weights_as_formats)r  r-   r-   r.   Útest_weights_different_formats!  s    r  c                 C   s¬   t tjtjtj ¡ | d� ¡ }t|j	t
jƒs0t‚t|jt
jƒsBt‚t|jt
jƒsTt‚t tjtjtj ¡ | d� ¡ }t|j	t
jƒs„t‚t|jt
jƒs–t‚t|jt
jƒs¨t‚d S )Nri   rn   )r   r^   r_   r`   rG   rH   ra   rM   r   Z_freq_weightsr:   r  ÚAssertionErrorr<   r­   )r  Úresr-   r-   r.   r  (  s    
 ÿ

 ÿ
r  c                   @   s   e Zd Zedd„ ƒZdS )r%   c                 C   sÀ   ddl m} |ƒ }tj|jdd�|_tj|jdd�|_| j|j d¡  _t|jdd�|_t|j|jt	j
 ¡ d� ¡ | _|jjdd	�}|jd d …df | }t||jt	j
 ¡ |d
� ¡ | _d S )Nr   r   ÚW)ÚrequirementsFr   r]   r	   rÙ   rn   )Zstatsmodels.datasets.star98r   r:   Úrequirer`   r_   Zstdr   r   rG   rH   rÃ   rM   r   rr   r   )rc   r   r—   r  Zendog2r-   r-   r.   rd   9  s    
ÿþz$TestBinomialVsVarWeights.setup_classNre   r-   r-   r-   r.   r%   8  s   r%   c                   @   s   e Zd Zedd„ ƒZdS )r&   c                 C   sÀ   dd l m  m} tjj ¡ }|j}|j}||d< |d  d  < t	 
ddddd	dddddddd	ddddg¡}|jd
|tjjtjj ¡ d�|d�}|jd
||d�}|jddd�| _| ¡ | _d S )Nr   r²   r³   r´   r	   rh   r   rµ   rq   r¶   r©   r–   )r—   r  r˜   r™   )rš   r›   rœ   rG   r�   r·   rž   r_   r`   r:   rk   r¡   rH   r¸   r¢   rÞ   ZwlsrM   r   r   )rc   r¦   r—   r_   rv   rE   Zwlsmodelr-   r-   r.   rd   L  s,    $ÿüýzTestGlmGaussianWLS.setup_classNre   r-   r-   r-   r.   r&   K  s   r&   c                  C   sÜ   dddddddddddddddddg} t j}t j}tj ¡ }ttt|||| d d… d� ttt|||| d d… d� ttt|||| dg d� ttt|||| dg d� ttt|||| | gd� ttt|||| | gd� d S )Nr	   rh   r   r¨   ri   rn   )	r^   r`   r_   rG   rH   ra   r   rÌ   r   )r  r`   r_   rF   r-   r-   r.   Útest_incompatible_inpute  s,    &

ÿ
ÿÿÿÿÿr"  c                  C   s  d\} }t j d¡ t j | |d ¡}t|ƒ}| d¡d }|dt j | ¡  }dt  | ¡d  }t j t  |¡| ¡}|dd…  d7  < t	j
 ¡ }t||||d�}| ¡ }	t|| |||d	�}
|
 ¡ }t|	j| |jƒ t|	j|jƒ t|	j|jƒ t|	j|jƒ t|	j|jƒ d S )
N)rÓ   rq   iõ r	   rh   rµ   r½   é   rù   rn   )r:   rÁ   rÂ   Zrandnr   rr   r�   rÆ   ÚexprG   rH   ra   r   rM   r   r1   r2   r3   r5   Zresid_anscombe_unscaled)ru   Zk_exogrë   Zy_trueræ   rú   ZyprÐ   Z	mod_poi_eZ	res_poi_eZ	mod_poi_wZ	res_poi_wr-   r-   r.   Útest_poisson_residuals|  s.    

ÿÿr%  )r   )>Ú__doc__rá   Únumpyr:   Znumpy.testingr   r   Zpandasrü   r€   Zstatsmodels.apirœ   rG   Zstatsmodels.datasets.cpunishr   Z+statsmodels.genmod.generalized_linear_modelr   Zstatsmodels.tools.sm_exceptionsr   Zstatsmodels.tools.toolsr   Úresultsr
   r¤   r   rb   r^   Zasarrayr`   r_   r¹   r   r\   rg   rm   rw   rJ   rK   rL   r‘   r(   r'   rÒ   rç   rð   r   r   r    r!   r"   r#   r  r  r�   Zparametrizer  r  r  r%   r&   r"  r%  r-   r-   r-   r.   Ú<module>   sd   &]	+
) 
 !!&ÿþ
