U
    Kvfٚ                     @   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rd S t| trd S t| ttfst|j|jddd t|j|jddd d S )	Nư>>atolrtol	corr_factr	   normalized_cov_paramsg:0yE>Hz>)res1res2r   paramsgetattrhasattrr   
isinstanceTestRepeatedvsAggregatedTestRepeatedvsAverageTestTweedieRepeatedvsAggregatedTestTweedieRepeatedvsAverageTestBinomial0RepeatedvsAverage!TestBinomial0RepeatedvsDuplicatedbseTestBinomialVsVarWeightsTestGlmGaussianWLSTestGlmGaussianAwNrTestGlmGammaAwNrllflldeviance)selfr   r   r    r-   M/tmp/pip-unpacked-wheel-2v6byqio/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rd 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_hessianMbP?gMb`?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   gL#?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	   )	CancerLogTr   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rt j|}n||jkrt 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rd}
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rd|dd  }nB||	f| j|jfkrd|d }n||	f| j|j
fkrq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rd|d }qnd||	f| j|jfkrd
d|d  }t |dt j}qn&||	f| j|jfkrd|dd  }qn||	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rdt jj|jd d }qn\||	f| j|jfkrd|dd  }qn0||	f| j|jfkrd}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qt!" * 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# qqqqd 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   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)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stt|jt
jstt|jt
jst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   Z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   &]	+
) 
 !!&
