U
    mdf                     @   sb  d Z ddlZddlZddlZddlm  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 ddlm  mZ ddlmZ dd	lmZmZmZ ddlm  m Z! d
dl"m#Z$ ej%&ej%'e(Z)ej%*e)ddZ+ej,e+ddZ-e-. Z/e/d Z0e/d1  Z2ee2ddZ3e4e/d e5Z6e4e/d Z7G dd dZ8G dd de8Z9G dd de8Z:G dd de8Z;G dd de8Z<G dd  d e8Z=G d!d" d"e8Z>G d#d$ d$e8Z?G d%d& d&e8Z@G d'd( d(e8ZAG d)d* d*e8ZBG d+d, d,e8ZCG d-d. d.e8ZDG d/d0 d0e8ZEG d1d2 d2e8ZFG d3d4 d4e8ZGG d5d6 d6e8ZHG d7d8 d8e8ZIG d9d: d:e8ZJG d;d< d<ZKG d=d> d>eKZLG d?d@ d@eKZMG dAdB dBeKZNG dCdD dDeKZOG dEdF dFeKZPG dGdH dHeKZQG dIdJ dJeKZRG dKdL dLeKZSG dMdN dNeKZTG dOdP dPeKZUG dQdR dReKZVG dSdT dTeVZWG dUdV dVeKZXG dWdX dXeKZYG dYdZ dZeKZZdS )[z>

Created on Mon Dec 09 21:29:20 2013

Author: Josef Perktold
    N)GLM)families)links)OLSget_robustcov_results)add_constant)assert_allcloseassert_equalassert_   )results_count_robust_clusterresultsz	ships.csvF)Z	index_colZaccidentzyr_con op_75_79)prependshipZservicec                   @   sF   e Zd Zdd Zedd ZedddZdd	 Zd
d Zdd Z	dS )CheckCountRobustMixinc                 C   s   | j }| j}t|jt|jd krVtt|jtj}d|d< |j| }|j| }n|j}|j}t|j	j|d t| j
| j |d d S )Nr   F-C6?giUMu?)res1res2lenparamsnponesZbool_bser	   _resultsbse_rob	corr_fact)selfr   r   maskZres2_paramsZres2_bse r    e/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/discrete/tests/test_sandwich_cov.py
test_basic0   s    
z CheckCountRobustMixin.test_basicc                 C   s.   | j }t|t}t|| _| || _d S N)r   swZcov_clustergroupZse_covr   get_correction_factorr   )clsr   Zcov_clur    r    r!   get_robust_cluB   s    z$CheckCountRobustMixin.get_robust_cluTc                 C   sD   |j }|jj\}}|r"t|j}nd}|d t||  }t|S )Nr         ?)modelexogshaper   r   floatr   sqrt)r'   r   sub_kparamsmodnobsZk_varsk_paramsr   r    r    r!   r&   J   s    z+CheckCountRobustMixin.get_correction_factorc                 C   s4   | j }| j}t|jj|jd t|jj|jd d S )Nr   )r   r   r	   r   ZllfllZllnullZll_0)r   r   r   r    r    r!   test_oth[   s    zCheckCountRobustMixin.test_othc                 C   s   t | j d S r#   )smtZcheck_ttest_tvaluesr   r   r    r    r!   
test_ttestb   s    z CheckCountRobustMixin.test_ttestc                 C   s   t | j d S r#   )r5   Zcheck_ftest_pvaluesr   r6   r    r    r!   test_waldtestf   s    z#CheckCountRobustMixin.test_waldtestN)T)
__name__
__module____qualname__r"   classmethodr(   r&   r4   r7   r8   r    r    r    r!   r   -   s   
r   c                   @   s   e Zd Zedd ZdS )TestPoissonCluc                 C   s.   t j| _ttt}|jdd| _| 	  d S )NFdisp)

results_stresults_poisson_clur   smdPoissonendogr+   fitr   r(   r'   r0   r    r    r!   setup_classl   s    zTestPoissonClu.setup_classNr9   r:   r;   r<   rG   r    r    r    r!   r=   j   s   r=   c                   @   s   e Zd Zedd ZdS )TestPoissonCluGenericc              	   C   s   t j| _ttt}|jdd | _}d}|r|| jj	
 | _|jdd | _}|   | j| _| j
 | _|jdd | _}ddlm} || jjdtddddd | jj	| _| | j| _d S )NFr>   r   r   clusterTgroupsuse_correctiondf_correctionuse_tuse_self)r@   rA   r   rB   rC   rD   r+   rE   r   r   copyZbse_nonrobustr(   res3r   Zbse_rob3statsmodels.base.covtyper   r   r%   r&   r   )r'   r0   r   debugr   r    r    r!   rG   v   s*    

z!TestPoissonCluGeneric.setup_classNrH   r    r    r    r!   rI   t   s   rI   c                   @   s   e Zd Zedd ZdS )TestPoissonHC1Genericc                 C   s`   t j| _ttt}|jdd| _ddl	m
} || jjddd | jj| _| j| jdd| _d S )	NFr>   r   r   HC1TrP   r/   )r@   results_poisson_hc1r   rB   rC   rD   r+   rE   r   rS   r   r   r   r   r&   r   )r'   r0   r   r    r    r!   rG      s    
z!TestPoissonHC1Generic.setup_classNrH   r    r    r    r!   rU      s   rU   c                   @   s    e Zd Zedd Zdd ZdS )TestPoissonCluFitc              	   C   sv   t j| _ttt}|jj\}}|d t||  }|j	ddt
tdd| dddd| _d | jj_| jj| _d| _d S )Nr)   FrJ   T)rL   rM   Zscaling_factorrN   r?   cov_typecov_kwdsrO   r   )r@   rA   r   rB   rC   rD   r+   r,   r-   rE   dictr%   r   r   normalized_cov_paramsr   r   r   )r'   r0   r1   r2   Zsc_factr    r    r!   rG      s    

zTestPoissonCluFit.setup_classc                 C   s   | j }| j}d}t|j|jdd t|j|j|d t|j|j|dd t|j|j|dd |jd d ddf }t| |ddd d S )	NHz>g:0yE>rtol)rb   Zatolg#B;      Ơ>)	r   r   r	   r   r   ZtvaluesZpvaluesZparams_tableZconf_int)r   r   r   rb   cir    r    r!   test_basic_inference   s    z&TestPoissonCluFit.test_basic_inferenceN)r9   r:   r;   r<   rG   rg   r    r    r    r!   rZ      s   
 rZ   c                   @   s   e Zd Zedd ZdS )TestPoissonHC1Fitc                 C   sD   t j| _ttt}|jddd| _| jj	| _
| j| jdd| _d S )NFrV   r?   r\   rX   )r@   rY   r   rB   rC   rD   r+   rE   r   r   r   r&   r   rF   r    r    r!   rG      s
    
zTestPoissonHC1Fit.setup_classNrH   r    r    r    r!   rh      s   rh   c                   @   s   e Zd Zedd ZdS )TestPoissonHC1FitExposurec                 C   sH   t j| _tjtttd}|jddd| _	| j	j
| _| j| j	dd| _d S )NexposureFrV   ri   rX   )r@   Zresults_poisson_exposure_hc1r   rB   rC   rD   r+   rl   rE   r   r   r   r&   r   rF   r    r    r!   rG      s
    
z%TestPoissonHC1FitExposure.setup_classNrH   r    r    r    r!   rj      s   rj   c                   @   s   e Zd Zedd ZdS )TestPoissonCluExposurec                 C   s2   t j| _tjtttd}|jdd| _	| 
  d S Nrk   Fr>   )r@   results_poisson_exposure_clur   rB   rC   rD   r+   rl   rE   r   r(   rF   r    r    r!   rG      s    z"TestPoissonCluExposure.setup_classNrH   r    r    r    r!   rm      s   rm   c                   @   s   e Zd Zedd ZdS )TestPoissonCluExposureGenericc              	   C   sl   t j| _tjtttd}|jdd | _	}ddl
m} || j	jdtddddd | j	j| _| | j	| _d S )	Nrk   Fr>   r   r   rJ   TrK   )r@   ro   r   rB   rC   rD   r+   rl   rE   r   rS   r   r   r%   r   r   r&   r   )r'   r0   r   r   r    r    r!   rG      s    

z)TestPoissonCluExposureGeneric.setup_classNrH   r    r    r    r!   rp      s   rp   c                   @   s   e Zd Zedd ZdS )TestGLMPoissonCluc                 C   s<   t j| _ttt}tttt d}|	 | _
|   d S )Nfamily)r@   rA   r   rB   rC   rD   r+   r   r   rE   r   r(   rF   r    r    r!   rG     s
    
zTestGLMPoissonClu.setup_classNrH   r    r    r    r!   rq     s   rq   c                   @   s   e Zd Zedd ZdS )TestGLMPoissonCluGenericc              	   C   s^   t j| _tttt d}|  | _	}t
| j	jdtddddd | j	j| _| | j	| _d S )Nrr   rJ   TFrK   )r@   rA   r   r   rD   r+   r   rC   rE   r   r   r   r%   r   r   r&   r   r'   r0   r   r    r    r!   rG     s    

z$TestGLMPoissonCluGeneric.setup_classNrH   r    r    r    r!   rt     s   rt   c                   @   s   e Zd Zedd ZdS )TestGLMPoissonHC1Genericc                 C   sV   t j| _tttt d}| | _	t
| j	jddd | j	j| _| j| j	dd| _d S )Nrr   rV   TrW   FrX   )r@   rY   r   r   rD   r+   r   rC   rE   r   r   r   r   r   r&   r   rF   r    r    r!   rG   /  s    

z$TestGLMPoissonHC1Generic.setup_classNrH   r    r    r    r!   rv   -  s   rv   c                   @   s   e Zd Zedd ZdS )TestGLMPoissonCluFitc                 C   s`   t j| _tttt d}|jdt	t
ddddd | _}d | jj_| jj| _| | j| _d S )Nrr   rJ   TrL   rM   rN   F)r\   r]   rO   )r@   rA   r   r   rD   r+   r   rC   rE   r^   r%   r   r   r_   r   r   r&   r   ru   r    r    r!   rG   ?  s    


z TestGLMPoissonCluFit.setup_classNrH   r    r    r    r!   rw   =  s   rw   c                   @   s   e Zd Zedd ZdS )TestGLMPoissonHC1Fitc                 C   sH   t j| _tttt d}|jdd| _	| j	j
| _| j| j	dd| _d S )Nrr   rV   r\   FrX   )r@   rY   r   r   rD   r+   r   rC   rE   r   r   r   r&   r   rF   r    r    r!   rG   V  s
    
z TestGLMPoissonHC1Fit.setup_classNrH   r    r    r    r!   ry   T  s   ry   c                   @   s   e Zd Zedd ZdS )TestNegbinCluc                 C   s0   t j| _ttt}|jddd| _| 	  d S )NFr`   r?   gtol)
r@   results_negbin_clur   rB   NegativeBinomialrD   r+   rE   r   r(   rF   r    r    r!   rG   c  s    zTestNegbinClu.setup_classNrH   r    r    r    r!   r{   a  s   r{   c                   @   s   e Zd Zedd ZdS )TestNegbinCluExposurec                 C   s2   t j| _tjtttd}|jdd| _	| 
  d S rn   )r@   results_negbin_exposure_clur   rB   r   rD   r+   rl   rE   r   r(   rF   r    r    r!   rG   m  s    z!TestNegbinCluExposure.setup_classNrH   r    r    r    r!   r   k  s   r   c                   @   s   e Zd Zedd ZdS )TestNegbinCluGenericc              	   C   s^   t j| _ttt}|jddd | _}t	| jj
dtddddd | jj| _| | j| _d S )NFr`   r|   rJ   TrK   )r@   r~   r   rB   r   rD   r+   rE   r   r   r   r%   r   r   r&   r   ru   r    r    r!   rG     s    

z TestNegbinCluGeneric.setup_classNrH   r    r    r    r!   r     s   r   c                   @   s   e Zd Zedd ZdS )TestNegbinCluFitc                 C   sT   t j| _ttt}|jddtt	dddddd | _
}| j
j| _| | j
| _d S )NFrJ   Trx   r`   )r?   r\   r]   rO   r}   )r@   r~   r   rB   r   rD   r+   rE   r^   r%   r   r   r   r&   r   ru   r    r    r!   rG     s    
zTestNegbinCluFit.setup_classNrH   r    r    r    r!   r     s   r   c                   @   s   e Zd Zedd ZdS )TestNegbinCluExposureFitc                 C   sV   t j| _tjtttd}|jddt	t
ddddd | _}| jj| _| | j| _d S )Nrk   FrJ   Trx   r[   )r@   r   r   rB   r   rD   r+   rl   rE   r^   r%   r   r   r   r&   r   ru   r    r    r!   rG     s    
z$TestNegbinCluExposureFit.setup_classNrH   r    r    r    r!   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )CheckDiscreteGLMc                 C   s\   | j }| j}t|j| j t|j| j t|dd}t|j|j|d t|j|jdd d S )Nrb   vIh%<=ra   绽|=)r   r   r
   r\   getattrr	   r   r   )r   r   r   rb   r    r    r!   r"     s    zCheckDiscreteGLM.test_basicc                 C   s.  | j }| j}t|jtr$d|ji}ni }t|jtr:d}nd}|jj|jd |jd}|jj|jd f|}t||dd |jj	|j|jd}|jj	|jf|}t||dd t|jtrd S |jj
|j|jd}	|jj
|jf|}
t|	|
dd |jj|j|jd}|jj|jf|}t|| |dd d S )	Nscaler   \(\?)r   r   ra   r   )r   r   
isinstancer*   r   r   scorer   r	   hessianZscore_factorZhessian_factor)r   r   r   kwdsZsgnscore1score2hess1hess2Zscoref1Zscoref2Zhessf1Zhessf2r    r    r!   test_score_hessian  s,    z#CheckDiscreteGLM.test_score_hessianc                 C   st   | j }| j}t|jtrd S | j j}t|d |d f}|j|dd}|j|dd}t	t
|t
|dd d S )N      	nonrobustrz   re   ra   )r   r   r   r*   r   Zfittedvaluesr   Zcolumn_stackZ
score_testr	   Zhstack)r   r   r   ZfittedZ
exog_extraZres_lm1Zres_lm2r    r    r!   test_score_test  s    z CheckDiscreteGLM.test_score_testN)r9   r:   r;   r"   r   r   r    r    r    r!   r     s   "r   c                   @   s   e Zd Zedd ZdS )TestGLMPoissonc                 C   sd   t jd t jt}d| _t|tt	 d}|j
dd| _t	|t}|j
dd| _d| j_d S )NiW:HC0rr   rz   gdy=)r   randomseedZpoissonrD   r\   r   r+   r   rC   rE   r   rB   r   rb   )r'   Zendog_countmod1r    r    r!   rG     s    zTestGLMPoisson.setup_classNrH   r    r    r    r!   r     s   r   c                   @   s   e Zd Zedd ZdS )TestGLMLogitc                 C   sf   t t  kt}d| _t|tt d}|j	dt
tdd| _t|t}|j	dt
tdd| _d S NrJ   rr   rL   r\   r]   )rD   meanastypeintr\   r   r+   r   BinomialrE   r^   r%   r   rB   Logitr   r'   	endog_binr   r    r    r!   rG   
  s    zTestGLMLogit.setup_classNrH   r    r    r    r!   r     s   r   c                   @   s   e Zd Zedd ZdS )TestGLMLogitOffsetc                 C   s|   t t  kt}d| _t|jd }t|t	t
 |d}|jdttdd| _tj|t	|d}|jdttdd| _d S )NrJ   r   rs   offsetr   r   r   )rD   r   r   r   r\   r   r   r,   r   r+   r   r   rE   r^   r%   r   rB   r   r   r'   r   r   r   r    r    r!   rG     s    zTestGLMLogitOffset.setup_classNrH   r    r    r    r!   r     s   r   c                   @   s    e Zd Zedd Zdd ZdS )TestGLMProbitc                 C   sv   t t  kt}d| _t|ttjt	
 dd}|jddttdd| _t
|t}|jdttdd| _d| _d S )	NrJ   linkrr   newtonr   methodr\   r]   r   ư>)rD   r   r   r   r\   r   r+   r   r   r   ProbitrE   r^   r%   r   rB   r   rb   r   r    r    r!   rG   &  s     zTestGLMProbit.setup_classc                 C   sl   | j }| j}|j|jd }|j|jd }t||dd |j|j}|j|j}t||dd d S )Nr   r   ra   )r   r   r*   r   r   r	   r   )r   r   r   r   r   r   r   r    r    r!   r   3  s    z TestGLMProbit.test_score_hessianN)r9   r:   r;   r<   rG   r   r    r    r    r!   r   $  s   
r   c                   @   s   e Zd Zedd ZdS )TestGLMProbitOffsetc                 C   s   t t  kt}d| _t|jd }t|t	t
jt d|d}|jddttdd| _tj|t	|d}|jdttdd	| _d
| _d S )NrJ   r   r   r   r   r   r   r   r   r   )rD   r   r   r   r\   r   r   r,   r   r+   r   r   r   r   rE   r^   r%   r   rB   r   rb   r   r    r    r!   rG   B  s     zTestGLMProbitOffset.setup_classNrH   r    r    r    r!   r   @  s   r   c                   @   s   e Zd Zedd ZdS )TestGLMGaussNonRobustc                 C   s:   d| _ tttt d}| | _ttt}| | _	d S )Nr   rr   
r\   r   rD   r+   r   GaussianrE   r   r   r   r'   r   mod2r    r    r!   rG   U  s
    

z!TestGLMGaussNonRobust.setup_classNrH   r    r    r    r!   r   S  s   r   c                   @   s   e Zd Zedd ZdS )TestGLMGaussCluc                 C   sR   d| _ tttt d}|jdttdd| _	t
tt}|jdttdd| _d S r   )r\   r   rD   r+   r   r   rE   r^   r%   r   r   r   r   r    r    r!   rG   b  s
    
zTestGLMGaussClu.setup_classNrH   r    r    r    r!   r   `  s   r   c                   @   s   e Zd Zedd ZdS )TestGLMGaussHCc                 C   sB   d| _ tttt d}|jdd| _ttt}|jdd| _	d S )Nr   rr   rz   r   r   r    r    r!   rG   o  s
    
zTestGLMGaussHC.setup_classNrH   r    r    r    r!   r   m  s   r   c                   @   s   e Zd Zedd ZdS )TestGLMGaussHACc                 C   sN   d| _ ddi}tttt d}|jd|d| _ttt}|jd|d| _	d S )NHACmaxlagsr   rr   r   r   r'   r   r   r   r    r    r!   rG   |  s    
zTestGLMGaussHAC.setup_classNrH   r    r    r    r!   r   z  s   r   c                   @   s   e Zd Zedd ZdS )TestGLMGaussHAC2c                 C   sX   d| _ ddd}tttt d}|jd|d| _ttt}ddi}|jd|d| _	d S )Nr   Zbartlettr   kernelr   rr   r   r   r   r'   r   r   r   Zkwds2r    r    r!   rG     s    

zTestGLMGaussHAC2.setup_classNrH   r    r    r    r!   r     s   r   c                   @   s    e Zd Zedd Zdd ZdS )TestGLMGaussHACUniformc                 C   sf   d| _ tjdd}tttt d}|jd|d| _	t
tt}|jd|d| _|jdddid| _d S )Nr   r   r   rr   r   r   )r\   r$   weights_uniformr   rD   r+   r   r   rE   r   r   r   rR   r   r    r    r!   rG     s    
z"TestGLMGaussHACUniform.setup_classc                 C   s   t jdd}| jjjd|d}| jjjd|d}t|j| jjdd t|j| jjdd t	ddd	g}t|j|d
d t
|jd t jk t jdd}| jjjd|d}| jjjd|d}t|j|jdd t	dddg}t|j|d
d d S )Nr   )weights_funcr   r   r   -q=ra   g+O@gqh@g,{@&@r   r   r   gG@g[@go^b"@)r$   r   r   r*   rE   r   r	   r   r   arrayr   r]   Zweights_bartlett)r   ZkwdsaZres1aZres2ar   Zkwdsbr    r    r!   test_cov_options  s    z'TestGLMGaussHACUniform.test_cov_optionsN)r9   r:   r;   r<   rG   r   r    r    r    r!   r     s   
r   c                   @   s   e Zd Zedd ZdS )TestGLMGaussHACUniform2c                 C   s\   d| _ tjdd}tttt d}|jd|d| _	t
tt}ddd}|jd|d| _d S )Nr   r   r   rr   r   uniform)r\   r$   r   r   rD   r+   r   r   rE   r   r   r   r   r    r    r!   rG     s    

z#TestGLMGaussHACUniform2.setup_classNrH   r    r    r    r!   r     s   r   c                   @   s    e Zd Zedd Zdd ZdS )TestGLMGaussHACPanelc                 C   s   d| _ ttddd d }tt t t	 d}t
|dtjddd	}|jd|d
| _|jd|d
| _ttt}|jd|d
| _d S )N	hac-panel      r   rr   r   hacF)timer   r   rM   rN   r   znw-panel)r\   r   tilearanger   rD   rQ   r+   r   r   r^   r$   r   rE   r   res1br   r   r'   r   r   r   r   r    r    r!   rG     s    
z TestGLMGaussHACPanel.setup_classc                 C   s   t | jj| jjdd d S Nr   ra   r	   r   r   r   r6   r    r    r!   test_kwd  s    zTestGLMGaussHACPanel.test_kwdNr9   r:   r;   r<   rG   r   r    r    r    r!   r     s   
r   c                   @   s   e Zd Zedd ZdS )TestGLMGaussHACPanelGroupsc                 C   s   d| _ ttddd d }tt t t	 d}t
t|dtjddd	}|jd|d
| _ttt}|jd|d
| _d S )Nr   r   r   r   rr   r   r   F)rL   r   r   rM   rN   r   )r\   r   repeatr   r   rD   rQ   r+   r   r   r^   pdSeriesr$   r   rE   r   r   r   )r'   rL   r   r   r   r    r    r!   rG     s    

z&TestGLMGaussHACPanelGroups.setup_classNrH   r    r    r    r!   r     s   r   c                   @   s    e Zd Zedd Zdd ZdS )TestGLMGaussHACGroupsumc                 C   s   d| _ ttddd d }tttt d}t	t
|dddd	}|jd|d
| _|jd|d
| _ttt}|jd|d
| _d S )Nzhac-groupsumr   r   r   rr   r   r   F)r   r   rM   rN   r   znw-groupsum)r\   r   r   r   r   rD   r+   r   r   r^   r   r   rE   r   r   r   r   r   r    r    r!   rG     s    

z#TestGLMGaussHACGroupsum.setup_classc                 C   s   t | jj| jjdd d S r   r   r6   r    r    r!   r     s    z TestGLMGaussHACGroupsum.test_kwdNr   r    r    r    r!   r     s   
r   )[__doc__osnumpyr   Zpandasr   Z#statsmodels.discrete.discrete_modelZdiscreteZdiscrete_modelrB   Z+statsmodels.genmod.generalized_linear_modelr   Zstatsmodels.genmodr   Zstatsmodels.genmod.familiesr   Z#statsmodels.regression.linear_modelr   rS   r   Z%statsmodels.stats.sandwich_covariancestatsZsandwich_covariancer$   Zstatsmodels.tools.toolsr   Znumpy.testingr	   r
   r   Zstatsmodels.tools._testingZtoolsZ_testingr5   r   r   r@   pathdirnameabspath__file__Zcur_dirjoinfilepathZread_csvZdata_rawZdropnadatarD   splitZ	exog_datar+   Zasarrayr   r%   rl   r   r=   rI   rU   rZ   rh   rj   rm   rp   rq   rt   rv   rw   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r    r    r!   <module>   st   =
 /

?,