U
    Ãmœd7 ã                   @   sP  d Z ddlmZ ddlZddlZddlZddlmZm	Z	m
Z
mZmZmZmZ ddlm  mZ ddlmZ ddlm  mZ ddlmZ ddlmZ ddlm  mZ ddlZ ddl!m"Z" ddl#Z#zddl$m%Z& W n e'k
ræ   Y nX dZ(e(�rdd	l)m*Z* e*d
ƒZ+ndZ+dd„ Z,d>dd„Z-dd„ Z.G dd„ dƒZ/G dd„ dƒZ0G dd„ de0ƒZ1G dd„ de0ƒZ2G dd„ de0ƒZ3G dd„ de0ƒZ4dd„ Z5d d!„ Z6ej7j8ej7j9d"d#„ ƒƒZ:d$d%„ Z;d&d'„ Z<ej7 =d(ej>ej?g¡d)d*„ ƒZ@ej7 =d(ej>ejAej?g¡d+d,„ ƒZBd-d.„ ZCej7 =d/ddg¡d0d1„ ƒZDd2d3„ ZEd4d5„ ZFd6d7„ ZGd8d9„ ZHd:d;„ ZId<d=„ ZJdS )?ak  
Test functions for GEE

External comparisons are to R and Stata.  The statsmodels GEE
implementation should generally agree with the R GEE implementation
for the independence and exchangeable correlation structures.  For
other correlation structures, the details of the correlation
estimation differ among implementations and the results will not agree
exactly.
é    )ÚlrangeN)Úassert_almost_equalÚassert_equalÚassert_allcloseÚassert_array_lessÚassert_raisesÚassert_warnsÚassert_)Úfamilies©Ú
cov_struct)ÚnormF)ÚPdfPagesztest_glm.pdfc                 C   s   t r|  |¡ d S ©N)Ú
pdf_outputZsavefig)ÚpdfÚfig© r   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/genmod/tests/test_gee.pyÚclose_or_save,   s    r   Tc                 C   s’   t j t j t¡¡}tjt j |d| ¡dd�}|dd…df }|dd…df }|dd…dd…f }|rˆtjt 	|j
d df¡|fdd�}|||fS )	a#  
    Load a data set from the results directory.  The data set should
    be a CSV file with the following format:

    Column 0: Group indicator
    Column 1: endog variable
    Columns 2-end: exog variables

    If `icept` is True, an intercept is prepended to the exog
    variables.
    Úresultsú,)Ú	delimiterNr   é   é   ©Zaxis)ÚosÚpathÚdirnameÚabspathÚ__file__ÚnpZ
genfromtxtÚjoinÚconcatenateÚonesÚshape)ÚfnameÚiceptÚcur_dirÚZÚgroupÚendogÚexogr   r   r   Ú	load_data1   s    ÿÿr-   c                 C   sœ   t t| jtjƒƒ t t| jtjƒƒ t t| jtjƒƒ t t| jtjƒƒ t t| jjt	j
ƒƒ t t| jjt	j
ƒƒ t t| jjt	j
ƒƒ t t| jjt	j
ƒƒ d S r   )r	   Ú
isinstanceÚparamsÚpdÚSeriesÚfittedvaluesÚresidZcentered_residÚ_resultsr!   Zndarray)r   r   r   r   Úcheck_wrapperM   s    r5   c                   @   sæ  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zejj	ejj
d	d
„ ƒƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej dddg¡ej dddg¡dd„ ƒƒZdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zej d'ejejg¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Z d2d3„ Z!d4d5„ Z"d6d7„ Z#ejj	d8d9„ ƒZ$ejj	d:d;„ ƒZ%ejj	d<d=„ ƒZ&ejj	ejj
d>d?„ ƒƒZ'd@dA„ Z(dBdC„ Z)dDdE„ Z*dFdG„ Z+dHdI„ Z,dJdK„ Z-dLdM„ Z.dNdO„ Z/dPdQ„ Z0dRdS„ Z1dTdU„ Z2dVdW„ Z3dXdY„ Z4dZd[„ Z5d\d]„ Z6d^d_„ Z7d`S )aÚTestGEEc                 C   sÌ   d}t j d¡ t jj|dfd�}d|d d …df< t  t  |d ¡t jd ¡}|d d …df t jj|d� }t |||¡}|j	d	d
dgd�}| 
¡ }t|j|jdd … ƒ t|j|jdd … ƒ | ¡  d S )Né(   éº…  é   ©Úsizer   r   é   ©r   r   r   r   ç«Á¿²·ü?¿çcÍ¯ƒÖõò?çÌ’¦ýƒ¨?©Ústart_params)r!   ÚrandomÚseedÚnormalÚkronÚarangeÚr_ÚgeeÚGEEÚfitÚget_margeffr   Úmargeffr/   Ú
margeff_seÚbseÚsummary)ÚselfÚnr,   Úgroupsr+   ÚmodelÚresultÚmargr   r   r   Útest_margins_gaussian\   s    ÿzTestGEE.test_margins_gaussianc                 C   sX  d}t j d¡ t jj|dfd�}d|d d …df< t  t  |d ¡t jd ¡}|d d …df t jj|d� }d	d
„ |D ƒ}t|ƒ}t|ƒ}t 	|||¡}|j
dddgd�}	|	 ¡ }
t|
j|	jdd … ƒ t|
j|	jdd … ƒ tdd„ |D ƒƒ}t|ƒ}t|ƒ}t 	|||¡}|j
dddgd�}	|	 ¡ }
t|
j|	jdd … ƒ t|
j|	jdd … ƒ d S )Nr7   r8   r9   r:   r   r   r<   r=   c                 S   s   g | ]}t |ƒ‘qS r   )Úlist©Ú.0Úrowr   r   r   Ú
<listcomp>�   s     z>TestGEE.test_margins_gaussian_lists_tuples.<locals>.<listcomp>r>   r?   r@   rA   c                 s   s   | ]}t |ƒV  qd S r   )ÚtuplerY   r   r   r   Ú	<genexpr>�   s     z=TestGEE.test_margins_gaussian_lists_tuples.<locals>.<genexpr>)r!   rC   rD   rE   rF   rG   rH   rX   rI   rJ   rK   rL   r   rM   r/   rN   rO   r]   )rQ   rR   Zexog_arrZ
groups_arrZ	endog_arrZ	exog_listZgroups_listZ
endog_listrT   rU   rV   Z
exog_tupleZgroups_tupleZendog_tupler   r   r   Ú"test_margins_gaussian_lists_tuplest   s4    ÿÿz*TestGEE.test_margins_gaussian_lists_tuplesc                 C   sœ   t j d¡ t jd }t  d¡}t jd |d d …df< t  d¡}tj|||t 	¡ d�}|j
dd	d
gd�}| ¡ }t|jt jd ƒ t|jt jd dd� d S )Nr8   ©r   r   r   r   r   r   r   r   ©é   r   ©r   r   r   r   r   r   r   r   r   rb   ©ÚfamilyÚnaivegÛÎŒ¸ß]
Àgç‰{ê“@©Úcov_typerB   gX '¯ß]Ú?ç„süÜ©Á?ç�íµ ÷Æ°>©Úrtol)r!   rC   rD   rH   r$   rG   rI   rJ   r
   ÚBinomialrK   rL   r   rM   rN   ©rQ   r+   r,   rS   rT   rU   rV   r   r   r   Útest_margins_logisticœ   s    


 ÿzTestGEE.test_margins_logisticc                 C   s˜   t j d¡ t jd }t  d¡}t jd |d d …df< t  d¡}t |||¡}|jddd	gd
�}| 	¡ }t
|jt jd dd� t
|jt jd dd� d S )Nr8   r`   ra   rc   r   rb   rf   çó’ÿÉß]
@çù g³ê“Àrg   gÉgä¹ß]Ú¿çñhãˆµøä>rk   ri   rj   )r!   rC   rD   rH   r$   rG   rI   Ú
NominalGEErK   rL   r   rM   rN   rn   r   r   r   Útest_margins_multinomial°   s    


 ÿz TestGEE.test_margins_multinomialc                 C   s~   t j d¡ t jd }t  d¡}t jd |d d …df< t  d¡}t |||¡}|jddd	gd
�}| 	¡ }t
t|tjƒdƒ d S )Nr8   r`   ra   rc   r   rb   rf   rp   rq   rg   T)r!   rC   rD   rH   r$   rG   rI   rs   rK   Úplot_distributionr   r.   ÚpltÚFigure)rQ   Úclose_figuresr+   r,   rS   rT   rU   r   r   r   r   Útest_nominal_plotÅ   s    


ÿzTestGEE.test_nominal_plotc                 C   s    t j d¡ t jd }t  d¡}t jd |d d …df< t  d¡}tj|||t 	¡ d�}|j
dd	d
gd�}| ¡ }t|jt jd dd� t|jt jd dd� d S )Nr8   )é
   é   é   é   é   é   é   é   ra   r`   r   rb   rd   rf   gçöš7±4@gUí&:ÃÛã?rg   g:#J{ƒ/&@rj   rk   gIVñ&
@)r!   rC   rD   rH   r$   rG   rI   rJ   r
   ÚPoissonrK   rL   r   rM   rN   rn   r   r   r   Útest_margins_poissonÖ   s    


 ÿzTestGEE.test_margins_poissonc                 C   s¬   t j d¡ t jd }t  d¡}t jd |dd…df< t  d¡}t |||¡}|jdd	d
gd�}tj	|||t
 ¡ d�}|jdd�}t|j|j dd� t|j|jdd� dS )zf
        Check the 2-class multinomial (nominal) GEE fit against
        logistic regression.
        r8   r`   ra   rc   Nr   rb   rf   rp   rq   rg   rd   ©rh   rr   rk   )r!   rC   rD   rH   r$   rG   rI   rs   rK   rJ   r
   rm   r   r/   rO   )rQ   r+   r,   rS   rT   r   Zlogit_modelZlogit_resultsr   r   r   Útest_multinomialé   s     


 ÿ
ÿzTestGEE.test_multinomialc           
   
   C   sz  t  d¡}t  d¡}d|dd…< t  d¡}|dd…  d7  < t  t  d¡t jd ¡}tj||||d�}| ¡ }t	|j
t jd ƒ t  d¡}d|dd …< t jd	 }t jd
 }t jd }t  t  d¡|f¡}tj||||t ¡ d�}t  ddddddddg¡}dtd| ƒ }	|jd|	d�}t	|j
t jd dd� t	|jdƒ t	|jt jd dd� tj||||t ¡ d�}|jdd� d S )Nr~   r   r   rz   r   ©r   r   ©ÚweightsgUUUUUUå?)r   r   r9   r   r9   r<   r9   r<   é   r<   r‰   é   r‰   rŠ   é   rŠ   r‹   rb   r‹   rb   )r   r   r   r   r   r   r   r   r9   r9   r9   r9   r<   r<   r<   r<   r9   r9   r9   r9   )r   r   r   r   r   r   r<   r<   r‰   r‰   rŠ   rŠ   rŠ   rŠ   rb   rb   é	   rŒ   rz   rz   )rˆ   r   r<   )Ú
ddof_scaleZscaling_factor)g4ö%öó?g
Ÿ­ƒƒýö?rj   )Úatolg¶IEcíïü?)g'iþ˜Ö¦ì?gøÿUìÕ?rr   ©r�   )r!   r$   ÚzerosrF   rG   rH   rI   rJ   rK   r   r/   Zcolumn_stackr   ÚIndependenceÚmeanÚfloatÚscalerO   ÚExchangeable)
rQ   r,   rˆ   r+   rS   rT   rU   Úexog1ÚgZfacr   r   r   Útest_weighted  s8    






ÿÿzTestGEE.test_weightedc                 C   sÄ   t j t j t¡¡}t j |dd¡}t |¡}t 	¡ }t
 ¡ }tjjd|d |||d�}|jdd�}dd	lm} |jd|t 	¡ d
�}	|	 ¡ }
|j}|
j}
t|j|
jddd� t|j|
jddd� d S )Nr   zepil.csvzy ~ age + trt + baseÚsubject)r   re   rf   r„   r   )ÚGLMrd   rj   ©rl   rŽ   )r   r   r   r   r    r"   r0   Zread_csvr
   r‚   r   r‘   rI   rJ   Úfrom_formularK   Z+statsmodels.genmod.generalized_linear_modelrš   r4   r   r/   rO   )rQ   r(   r&   ÚdataÚfamÚindÚmod1Úrslt1rš   Úmod2Úrslt2r   r   r   Útest_poisson_epil.  s(    
  ÿÿzTestGEE.test_poisson_epilc           	      C   s$  t j d¡ t jjdd�}t jjdd�}d|d d …df< t  tdƒt  d¡¡}t j|d< t j|dd	…< t j|d
d…df< tj	|||dd�}| 
¡ }tt|jƒdƒ tt  |jj¡t jd ƒ t  |¡t  |¡ d¡@ }tj	|| ||d d …f || dd�}| 
¡ }t|j|jƒ t|j|jƒ d S )Nr8   éd   r:   )r¥   r9   r   r   r~   r‰   r‹   rz   r|   Údrop)Úmissingé_   )r¨   r9   Únone)r!   rC   rD   rE   rF   r   r$   ÚnanrI   rJ   rK   r   Úlenr+   Úasarrayr,   r%   rH   ÚisfiniteÚallr/   rO   )	rQ   r+   r,   rS   r    r¡   Úiir¢   r£   r   r   r   Útest_missingH  s"    
&zTestGEE.test_missingc                 C   sž  t j d¡ t jjdd�}t jjdd�}t jjdd�}t jjdd�}t  tdƒt  d¡¡}t j|d< t j|dd…< t j|dd	…< t 	|||||d
œ¡}dD � ]ü}| 
¡ }i }	|dkrÔd|d< d|d< d|	d< d|	d< tjjdd|ddœ|	—Ž}
|
 ¡ }tt|
jƒdƒ tt  |
jj¡t jd ƒ | ¡ }i }	|dk�rN|d |	d< |d |	d< tjjd|d |ddœ|	—Ž}| ¡ }t|jj|jjƒ t|jj|jjƒ qšd S )Nr8   r¥   r:   r~   r‰   r   r‹   rz   r|   )r+   r–   Úexog2Úexog3rS   )r   r   r   ÚoffsetÚtimeúendog ~ exog1 + exog2 + exog3rS   r¦   )rS   r�   r§   r¨   )r¨   r<   r©   )rµ   )rµ   )r!   rC   rD   rE   rF   r   r$   rª   r0   Ú	DataFrameÚcopyrI   rJ   rœ   rK   r   r«   r+   r¬   r,   r%   rH   Údropnar/   ÚvaluesrO   )rQ   r+   r–   r±   r²   rS   Zdata0Úkr�   Úkwargsr    r¡   r¢   r£   r   r   r   Útest_missing_formulad  s\    

 ÿ
 þþ
 þþzTestGEE.test_missing_formulaÚk1FTÚk2c              
   C   s¢   t dƒD ]”}dddg}d||< t |d ¡}t |d df¡}i }t |d ¡|d< |rft d¡|d< |rxt d¡|d	< ttƒ� tj||f|Ž W 5 Q R X qd S )
Nr9   r~   r   r   r   r   rS   Úexposurer´   )Úranger!   r�   r   Ú
ValueErrorrI   rJ   )rQ   r½   r¾   ÚjÚpr+   r,   r»   r   r   r   Útest_invalid_args•  s    

zTestGEE.test_invalid_argsc                 C   sÆ   t dƒ\}}}t t|ƒ¡}t|ƒ}|D ]"}t ||k¡}tt|ƒƒ||< q(t ¡ }t	j
dd�}	tj|||||	d�}
|
 ¡ }tj||||||	d�}| ¡ }t|j|jdd� t| ¡ | ¡ dd� d S )Núgee_logistic_1.csvF©Úgrid©re   r   ©r´   re   r   rŠ   ©Údecimal)r-   r!   r�   r«   ÚsetÚflatnonzeror   r
   rm   r   ÚAutoregressiverI   rJ   rK   r   r/   Ústandard_errors)rQ   r+   r,   r*   ÚTÚidxr¯   Újjre   ÚvaZmd1Úmdf1Zmd2Úmdf2r   r   r   Útest_default_timeª  s&    ÿ ÿzTestGEE.test_default_timec              	   C   sò  t dƒ\}}}t t|ƒ¡}t|ƒ}|D ]"}t ||k¡}tt|ƒƒ||< q(t ¡ }t	 
¡ }	t	 ¡ }
t	jdd�}ddddgdd	d
dgddddgg}ddddgddddgddddgg}t|
|	|fƒD ]^\}}t ||||||¡}| ¡ }t|ƒt|ƒkrÂt|j|| dd� t| ¡ || dd� qÂtj|d d …d f |d d …d f |d d …dd …f fdd�}t |¡}d d!gd"d#„ t|jd d ƒD ƒ |_t|
|	fƒD ]R\}}tjjd$d!|||d%�}| ¡ }t|j|| dd� t| ¡ || dd� �qšd S )&NrÅ   FrÆ   ggÂ)Þõ ‘?g”ãv3ò?gi¸+8Fçý¿g¤ýÆí€ñ?gi`dÆéS’?gÔr¿‘Xò?gËífÈý¿gxcÿR[nñ?gÄ~º¾Xs†?gÚ õÁò?güOÌÜåþ¿g gµË½—ñ?gGiÕWKÀ?g�nsEWÅ?g
÷ZŒ¡È?gÔY!Ž|)Æ?g÷<3øCÀ?gÔ~º§$.Å?g[r></•È?g-ñV—*Æ?g4VŒiIÀ?g ÓUZ·ÔÅ?g~ÿz	.tÈ?g5Î	”9»Å?rŠ   rÊ   r   r   ÚYÚIdc                 S   s   g | ]}d |d  ‘qS ©zX%dr   r   ©rZ   rº   r   r   r   r\     s   ÿz)TestGEE.test_logistic.<locals>.<listcomp>úY ~ X1 + X2 + X3rÈ   )r-   r!   r�   r«   rÌ   rÍ   r   r
   rm   r   r•   r‘   rÎ   Ú	enumeraterI   rJ   rK   Úidr   r/   rÏ   r#   r0   r¶   rÀ   r%   Úcolumnsrœ   )rQ   r+   r,   r*   rÐ   rÑ   r¯   rÒ   re   ÚveÚvirÓ   ÚcfÚserÂ   ÚvÚmdÚmdfÚDr   r   r   Útest_logisticÄ  sz    # ÿ ÿ ÿü ÿ ÿ ÿüÿ4ÿ
ÿ
 ÿÿzTestGEE.test_logisticc                 C   sŠ  dddg}dddgddd	gd
ddgg}t j d¡ d}d}d}t ¡ }dD �]8}t  |¡d d …d f t  |¡d d d …f  }t  |¡}|| }	t j |	¡}
g }g }g }t	|ƒD ]b}t jj
||fd�}| |¡ | d¡}t  |
t jj
|d�¡}| || ¡ | |t  |¡ ¡ q®t  |¡}t  |¡}t j|dd�}tjdd�}tj|||||d�}| ¡ }t|j||d  ƒ t|j||d  ƒ qJd S )Nr   g‰ñDÌÚâ?g$Ä¸œêá?gŒ(P8yIñ?gP‚iÞ’ò?g6èsÅ×ì?gžÈÝ1†Ãî?gïßc¬îð?gˆBöí?gà9k"ùÛð?g0˜¦¥E¿î?gK1“ê3î?iêHor¥   ç      à?r9   )r   r   r9   r:   r   r   FrÆ   rÈ   )r!   rC   rD   r
   ÚGaussianrG   ÚabsÚlinalgÚcholeskyrÀ   rE   ÚappendÚsumÚdotr$   r#   r   rÎ   rI   rJ   rK   r   Ú
dep_paramsr/   )rQ   Zdep_params_trueZparams_trueZ	num_groupZar_paramrº   ÚgaZgsizeÚixZcmatZcmat_rr+   r,   rS   ÚiÚxZexpvalÚerrorsÚarrä   rå   r   r   r   Útest_autoregressive  sB    
þ
,




zTestGEE.test_autoregressivec                 C   sn   t  ¡ }tdƒ\}}}t ¡ }t |||d ||¡}| ¡ }tt	 
||j¡|jƒ t|t	 
||j¡ |jƒ d S )Núgee_linear_1.csv)r
   ré   r-   r   r•   rI   rJ   rK   r   r!   rï   r/   r2   r3   )rQ   re   r+   r,   r*   rß   rä   rå   r   r   r   Útest_post_estimationI  s    ÿÿzTestGEE.test_post_estimationc              
   C   s¼  t j d¡ d}t jj|dfd�}|d d …df |d d …df  |d d …df  }|dt jj|d� 7 }t  t  |d ¡t  d¡¡}t  d	d
ddgg¡}t  dg¡}t 	¡ }t
 ¡ }tj|||||||fd�}	|	 ¡ }
t|
 ¡ d dƒ t|
 ¡ d dƒ t  d	d
ddgg¡}t  d	g¡}t 	¡ }t
 ¡ }tj|||||||fd�}| ¡ }t| ¡ d dƒ t| ¡ d dƒ t jj|dfd�}t  dd
gg¡}t  dg¡}t jd }tdƒD �]}|d d …df d|d  |d d …df   t jj|d� }t 	¡ }t
 ¡ }tj|||||d�}| ¡ }t 	¡ }t
 ¡ }tj|||||||fd�}	|	 ¡ }
t  t  |t  | ¡ |¡¡¡}t  ||j¡| }dt t  |¡ ¡ }|
 ¡ d }tt  || ¡dƒ �q°d S )Né   éÈ   r<   r:   r   r   r   r9   ç      ð?éÿÿÿÿç        ©re   r   Ú
constraintÚ	statisticg¢žºÉÚLñ?úp-valueg8o¯;Ó?gVë•Ëí@gÍBvw—¯?)r   rý   rz   rè   g      $@rÈ   g{®Gáz”?)r!   rC   rD   rE   rF   rG   r$   Úarrayr
   ré   r   r‘   rI   rJ   rK   r   Z
score_testrH   rÀ   Úsqrtrï   Ú
cov_paramsr/   r   Zcdfrê   r   )rQ   rR   r,   r+   r*   ÚLÚRre   rÓ   r    Zres1r¢   Úres2Úfró   Zmod0Zrslt0râ   Zwald_zZwald_pZscore_pr   r   r   Útest_scoretestX  s|    0 ÿÿÿ ÿÿÿ
*ÿÿ ÿzTestGEE.test_scoretestr   c                 C   sH  t j d¡ d}t jj|dfd�}t  t  |d ¡t  d¡¡}|d d …ddgf }| d¡dt jj|d�  }t  ddddgddddgg¡}t  	d¡}t
j|||||f|ƒ d	�}	|	 ¡  t
j||||ƒ d
�}
|
 ¡ }dD ]j}t
j||||ƒ d
�}|rü| ¡  | |¡}t|d |	jd ƒ t|d |	jd ƒ t|d |	jd ƒ qØd S )Nrú   rû   r<   r:   r   r9   r   r   )r   r   r   ©FTr  r  Údf)r!   rC   rD   rE   rF   rG   r$   rî   r¬   r�   rI   rJ   rK   Úcompare_score_testr   Zscore_test_results)rQ   r   rR   r,   r*   Úexog_subr+   r  r  Zmod_lrÚmod_subÚres_subZcall_fitÚmodZscore_resultsr   r   r   Útest_compare_score_test”  s>    
ÿ
þþþzTestGEE.test_compare_score_testc           
   	   C   s  t j d¡ d}t jj|dfd�}t  t  |d ¡t  d¡¡}|d d …ddgf }| d¡dt jj|d�  }tt	ƒ�D t
j|||t ¡ d�}| ¡ }t
j|||t ¡ d�}| |¡ W 5 Q R X tt	ƒ�D t
j|||t ¡ d	�}| ¡ }t
j|||t ¡ d	�}| |¡ W 5 Q R X ttƒ�T t
 |||¡}| ¡ }t
 |dd
… |d d
…d d …f |dd
… ¡}| |¡ W 5 Q R X tt	ƒ�F t jj|d�}	t
j||||	d�}| ¡ }t
 |||¡}| |¡ W 5 Q R X t t	¡�B t jj|d�}	t
 |||¡}| ¡ }t
 |||¡}| |¡ W 5 Q R X d S )Nrú   rû   r<   r:   r   r9   r   r   rd   r¥   r‡   )r!   rC   rD   rE   rF   rG   r$   rî   r   ÚUserWarningrI   rJ   r   r•   rK   r‘   r  r
   ré   r‚   r   Ú	ExceptionÚuniformÚpytestÚwarns)
rQ   rR   r,   r*   r  r+   r  r  r  Úwr   r   r   Ú test_compare_score_test_warnings¹  sN    

ÿ
ÿ

ÿ
.
z(TestGEE.test_compare_score_test_warningsc              	   C   s8  t j d¡ d}t jj|dfd�}|d d …df |d d …df  |d d …df  }|dt jj|d� 7 }t  t  |d ¡t  d¡¡}t  d	d
ddgg¡}t  dg¡}t 	¡ }t
 ¡ }dD ]z}	tj|||||||fd�}
|
j|	d�}|j|	d� t|jjt jd ƒ t|jjt jd ƒ |	dkr¸t|jjt jd ƒ q¸d S )Nrú   rû   r<   r:   r   r   r   r9   rü   rý   rþ   )Úrobustrf   Úbias_reducedrÿ   r„   )r<   r<   r  )r!   rC   rD   rE   rF   rG   r$   r  r
   ré   r   r‘   rI   rJ   rK   rÏ   r   Ú
cov_robustr%   rH   Ú	cov_naiveÚcov_robust_bc)rQ   rR   r,   r+   r*   r  r  re   rÓ   rh   rT   rU   r   r   r   Útest_constraint_covtypeê  s*    0 ÿzTestGEE.test_constraint_covtypec              	   C   s‚  t  ¡ }tdƒ\}}}t ¡ }t ¡ }ddddgdddd	gg}d
dddgddddgg}t||fƒD ]N\}	}
t |||d ||
¡}| 	¡ }t
|j||	 dd� t
| ¡ ||	 dd� qbtj|d d …d f |d d …d f |d d …dd …f fdd�}t |¡}ddgdd„ t|jd d ƒD ƒ |_t||fƒD ]R\}	}
tjjdd|||
d�}| 	¡ }t
|j||	 dd� t
| ¡ ||	 dd� �q*d S )Nrø   g´:˜ýAò’¿ghG{Cê?g-.1X üø¿gi«ªhjé?gw¨6'»’¿g�=¹Ö¥ê?gŸÌÍ7µýø¿guƒ¥Ydé?gBuLhÈ�¦?ggvd_“¨?gR¹JÆe©?gR!ÜIzŒ¨?gæ>G5Œ¦?grëzç^”¨?gû“¾`§Z©?ga%‹êP�¨?rz   rÊ   r   r   r×   rØ   c                 S   s   g | ]}d |d  ‘qS rÙ   r   rÚ   r   r   r   r\   8  s   ÿz'TestGEE.test_linear.<locals>.<listcomp>rÛ   rÈ   )r
   ré   r-   r   r‘   r•   rÜ   rI   rJ   rK   r   r/   rÏ   r!   r#   r0   r¶   rÀ   r%   rÞ   rœ   )rQ   re   r+   r,   r*   rà   rß   rá   râ   rÂ   rã   rä   rå   ræ   r   r   r   Útest_linear   s\     ÿ ÿþ ÿ ÿþÿ4ÿ
ÿ
 ÿÿzTestGEE.test_linearc              
   C   sê   t  ¡ }tj d¡ tjjdd�}d|d d …df< t |tjd ¡tjjdd� }t t 	d¡tjd	 ¡}t
 ¡ }t
 ¡ }tjddddgg }tjd
 }t||fƒD ]@\}	}
tj|||d ||
||fd�}| ¡ }t|jd ddd� q¤d S )Nr8   )é,  r<   r:   r   r   )r   r   r   çš™™™™™É?r!  r¥   ©r   r   r   ©r   )r   r9   rz   rÊ   )r
   ré   r!   rC   rD   rE   rï   rH   rF   rG   r   r‘   r•   rÜ   rI   rJ   rK   r   r/   )rQ   re   r,   r+   r*   rà   rß   r  r  rÂ   rã   rä   rå   r   r   r   Útest_linear_constrainedB  s$    ÿ
ÿzTestGEE.test_linear_constrainedc              	   C   sL  t  ¡ }tdƒ\}}}g }t|jd d ƒD ]$}| dgd ¡ | dgd ¡ q,t |¡d d …d f }t 	¡ }t
 |||d ||¡}| ¡ }	tjd }
tjd }t|	j|
dd	� t|	 ¡ |dd	� t ¡ }t
j|||d |||d
�}|j|	jd�}tjd }
tjd }t|j|
dd	� t| ¡ |dd	� |j ¡ }t|jtjd ddd� d S )Nzgee_nested_linear_1.csvr   rz   r‰   r   )gM 6¢ÅcÅ¿gùSQ%ð?g]xÒ€I# ÀgIñT4”"ï?)g_Ay£¶?g¯(öÁÇ¤?g#€¿Ò¤?gK2þ¿âW£?rŠ   rÊ   )Údep_datarA   )g»l�QÅ¿g–%× qYð?g`·!)– Àg¡;ó8-ð?)g]@ý¡x¶?gv'+ÈÇÕ�?g™Ø:@IäŸ?gì)ÿ{l¢�?)gã8ðj¹³ð?g ÞŒš¯’ã?g>–>tA½ö?rr   ©rŽ   rl   )r
   ré   r-   rÀ   r%   Úextendr!   r  r   r‘   rI   rJ   rK   rH   r   r/   rÏ   ÚNestedrP   r   ÚVariance)rQ   re   r+   r,   r*   Úgroup_nró   Zdprä   rÔ   rá   râ   ÚnerÕ   Úsmryr   r   r   Útest_nested_linearY  sD    


ÿÿ


ÿ
 ýzTestGEE.test_nested_linearc                 C   s>  t j d¡ d}t  t  |d ¡t  d¡¡ t¡}t  t  |d ¡t  d¡¡ t¡}t  t  |d ¡t  d¡¡ t¡}t jj|d d�}dt jj|d d� }dt jj|d d� }|| ||  ||  }|d	t jj|d� 7 }t	 
||||d
œ¡}	tjjdddt ¡ |	d�}
|
 ¡ }|j ¡ }t|jt jd ddd� d S )NiŠ  i'  r¥   é2   rz   r:   r   r9   rè   )ÚyÚ	TheGroupsÚgroups1Úgroups2zy ~ 1r1  z0 + groups1 + groups2)rS   r&  r   r�   )g-y<-ÿö?gPnÛ÷¨¯@góv„Ó‚Ï!@g—âª²ïŠÐ?rr   r'  )r!   rC   rD   rF   rG   r$   ÚastypeÚintrE   r0   r¶   rI   rJ   rœ   r   r)  rK   rP   r   r*  rH   )rQ   rR   rS   r2  r3  Zgroups_eZ	groups1_eZ	groups2_er0  r  rT   rU   r-  r   r   r   Útest_nested_pandas‚  s6    """ ÿ
ý
 ýzTestGEE.test_nested_pandasc           
      C   sš   t  ¡ }tddd�\}}}t d¡}t |||d ||¡}| ¡ }tj	d }t
|j|dd� tj	d }	t
|j|	dd� tt|ƒtjƒ tt|jƒtjƒ d S )	Núgee_ordinal_1.csvF©r'   Úordinal)ç3xMázñ?çfE#D–?ç†íò3�Ù¿çI(CvZŽ’¿çÔ]]>'÷ž?çvõ®jÞëò?ç‚æ1Ò¤w’?ç˜”P4î¡ñ¿r‰   rÊ   )gTwŸÂ•Ü»?gã*Ãvÿqº?g‡Á>2�¼?g%èq[¬?gÑ –´®?gy¶?þox·?gÊ[¦${®?gj›‡¸ÞÛµ?)r
   rm   r-   r   ÚGlobalOddsRatiorI   Ú
OrdinalGEErK   r!   rH   r   r/   rO   r   ÚtypeZOrdinalGEEResultsWrapperr4   ZOrdinalGEEResults)
rQ   re   r+   r,   rS   rÓ   r  Úrsltrá   râ   r   r   r   Útest_ordinal¦  s    ÿ


zTestGEE.test_ordinalc              	   C   s°   t j d¡ d}t j dd|¡}t  |¡}t jj|d�}t jj|d�}t ||||dœ¡}tj	j
d||d�}| ¡  t ¡ �* t d	¡ tjj
d||d�}| ¡  W 5 Q R X d S )
Né²  r7   r   r9   r:   )r0  rS   Úx1Úx2zy ~ 0 + x1 + x2©r�   Úignore)r!   rC   rD   ÚrandintrG   rE   r0   r¶   rI   rC  rœ   rK   ÚwarningsÚcatch_warningsÚsimplefilterrs   )rQ   rR   r0  rS   rH  rI  r  rT   r   r   r   Útest_ordinal_formulaÀ  s    



ÿzTestGEE.test_ordinal_formulac                 C   st   t j d¡ d}t j dd|¡}t  t  |d ¡t jd ¡}t jj|dfd�}t 	¡ }t
j||||d	�}| ¡  d S )
NrG  r7   r   r9   r   r†   r   r:   r   )r!   rC   rD   rL  rF   rG   rH   rE   r   ZOrdinalIndependencerI   rC  rK   )rQ   rR   r0  rS   rô   ZodiÚmodel1r   r   r   Útest_ordinal_independenceÕ  s    z!TestGEE.test_ordinal_independencec              	   C   s’   t j d¡ d}t j dd|¡}t  t  |d ¡t jd ¡}t jj|dfd�}t 	¡ �2 t 
d	¡ t ¡ }tj||||d
�}| ¡  W 5 Q R X d S )NrG  r7   r   r9   r   r†   r   r:   rK  r   )r!   rC   rD   rL  rF   rG   rH   rE   rM  rN  rO  r   ZNominalIndependencerI   rs   rK   )rQ   rR   r0  rS   rô   ZnmirQ  r   r   r   Útest_nominal_independenceâ  s    

z!TestGEE.test_nominal_independencec           
      C   s^   t  ¡ }tddd�\}}}t d¡}t |||d ||¡}| ¡ }| ¡ }	t	t
|	tjƒdƒ d S )Nr7  Fr8  r9  T)r
   rm   r-   r   rB  rI   rC  rK   ru   r   r.   rv   rw   )
rQ   rx   re   r+   r,   rS   rÓ   r  rE  r   r   r   r   Útest_ordinal_plotñ  s    ÿ
zTestGEE.test_ordinal_plotc                 C   sø   t ddd�\}}}t ¡ }tj||||d�}| ¡ }tjd }tjd }t|j	|ddd� t| 
¡ |ddd� t d	¡}tj||||d�}	|	j|j	d
�}
tjd }tjd }t|
j	|ddd� t|
 
¡ |ddd� tt|ƒtjƒ tt|jƒtjƒ d S )Núgee_nominal_1.csvFr8  r   )gföyŒòÌÜ?gØ€qåìÜ?gé·¯gí¿g
õôøÝ¿)gþU×%Ó¶?g½Å²Óî±?grGÅ ,:¿?gV!ÌŠ43µ?rr   r›   ZnominalrA   )gø�¯=³$Ý?gæ­ºÕ”Ú?goò[t²Tí¿gø‹Ù’Uà¿)g„*V‰‰¶?g—Î^è×÷°?g=zG¶ˆb¿?g_®`Fˆµ?)r-   r   r‘   rI   rs   rK   r!   rH   r   r/   rÏ   rB  r   rD  ZNominalGEEResultsWrapperr4   ZNominalGEEResults)rQ   r+   r,   rS   rÓ   r    r¡   Zcf1Zse1r¢   r£   Zcf2Zse2r   r   r   Útest_nominal  s&    ÿ




zTestGEE.test_nominalc              	   C   s’  t  ¡ }tdƒ\}}}t ¡ }t ¡ }ddddddgdd	d
dddgg}ddddddgddddddgg}t||fƒD ]N\}	}
t |||d ||
¡}| 	¡ }t
|j||	 dd� t
| ¡ ||	 dd� qrtj|d d …d f |d d …d f |d d …dd …f fdd�}t |¡}dd gd!d"„ t|jd d ƒD ƒ |_t||fƒD ]R\}	}
tjjd#d |||
d$�}| 	¡ }t
|j||	 dd� t
| ¡ ||	 dd� �q:d S )%Núgee_poisson_1.csvgÑ§ì¨¢¿g½�BôÏ«¿g¥B¢qK
�?g™ä'ïpâ?gÕÓiÌs¿g¡<m¸±ˆÞ¿gÔ¿7Ö( ¿g	œAùÍ¬¿gŽJQh(E’?gús§3ÕIâ?gur¿xÂm¿gºÑýQvÞ¿gaÆPl�L¯?gä(-Oº ¤?g4É½Éß¡?g¶Þùx„È¢?gGà´5Ÿ?g—Òhño2 ?gá<‹pgF¯?g¿ ÒïK£?g½i¦ ?gœ¸pÞî¢?gÈµp´(Sž?g!:S%¢XŸ?r‰   rÊ   rŠ   r   r   r×   rØ   c                 S   s   g | ]}d |d  ‘qS rÙ   r   rÚ   r   r   r   r\   ]  s   ÿz(TestGEE.test_poisson.<locals>.<listcomp>úY ~ X1 + X2 + X3 + X4 + X5rÈ   )r
   r‚   r-   r   r‘   r•   rÜ   rI   rJ   rK   r   r/   rÏ   r!   r#   r0   r¶   rÀ   r%   rÞ   rœ   )rQ   re   r+   r,   r+  rà   rß   rá   râ   rÂ   rã   rä   rå   ræ   r   r   r   Útest_poisson   sr      þ  þý  þ  þýÿ ÿÿ
ÿ

  ÿÿzTestGEE.test_poissonc                    s^  t j d¡ d}t jj|dfd�}t jj|d�}t  t  |d ¡t  d¡¡}d|dd…< d	|d
d…< tj|||d�}| 	¡ }t j 
|¡}|| }||d d …f }	|| }
tj||	|
d�}| 	¡ }t|j|jƒ t|j|jƒ i ‰ dd l}tt|ƒƒD ]\}}|j||d … ˆ |< qô‡ fdd„|D ƒ}tj|||d�}| 	¡ }t|j|jƒ t|j|jƒ d S )Néê   r7   r   r:   r<   r9   rb   r|   rŒ   é"   é$   )rS   r   c                    s   g | ]}ˆ | ‘qS r   r   )rZ   r—   ©Úmpr   r   r\   Š  s     z'TestGEE.test_groups.<locals>.<listcomp>)r!   rC   rD   rE   rF   rG   r$   rI   rJ   rK   Úpermutationr   r/   ÚtvaluesÚstringrÜ   rÌ   Úascii_letters)rQ   rR   rô   r0  rS   rQ  Úresult1rò   Úy1rH  r2  Úmodel2Úresult2ra  rÂ   r—   r3  Úmodel3Úresult3r   r]  r   Útest_groupsh  s4    zTestGEE.test_groupsc                 C   s  t  ¡ }t ¡ }tj d¡ tjjdd�}tjjdd�}tjjdd�}tjjdd�}t t	dƒt 
d¡¡}t ||||dœ¡}tjjd||||d�}	|	 ¡ }
tjjd|d	� ¡ }|j}t|j|
jd
d� |
jdd�}t|j|d
d� |
jt t |
j¡¡ }t||jd
d� d S )Nr8   r¥   r:   r~   r‰   ©r×   ÚX1ÚX2ÚX3rÛ   rÈ   rJ  rz   rÊ   rf   r„   )r   r‘   r
   ré   r!   rC   rD   rE   rF   r   r$   r0   r¶   rI   rJ   rœ   rK   ÚlmZOLSr4   r   r/   rÏ   rO   r  Údiagr  r`  )rQ   Úvsre   r×   rk  rl  rm  rS   ræ   rä   rå   Zolsrâ   Znaive_tvaluesr   r   r   Útest_compare_OLS’  s*     ÿzTestGEE.test_compare_OLSc                 C   s’  d}t j d¡ t jj|d�}t jj|d�}t jt  |df¡|d d …d f fdd�}t jj|d�}t  tdƒt  d¡¡}t	 
||||dœ¡}tjd	d
�}t ¡ }	tj|||||	|d�}
|
 ¡ }tjjd||||	|d�}| ¡ }tjjd||d|	|d�}| ¡ }tjjdd|||	|d�}| ¡ }tjjdd|d|	|d�}| ¡ }t|j|jdd� t|j|jdd� t|j|jdd� t|j|jdd� t|ƒ d S )Nr¥   r8   r:   r   r   r~   r‰   )r×   rk  ÚTimerS   FrÆ   rÉ   zY ~ X1rr  rS   rb   rÊ   )r!   rC   rD   rE   r#   r$   r  rF   r   r0   r¶   r   rÎ   r
   ré   rI   rJ   rK   rœ   r   r/   r5   )rQ   rR   r×   rk  Úmatrr  rS   r�   rÓ   re   r    r¡   r¢   r£   Zmod3Zrslt3Úmod4Zrslt4Zmod5Zrslt5r   r   r   Útest_formulas´  sN    (ÿ ÿ ÿ ÿ ÿzTestGEE.test_formulasc                 C   sÖ   t  ¡ }t ¡ }tj d¡ dtjjdd�dk  }tjjdd�}tjjdd�}tjjdd�}tjjdddd�}t	 
||||dœ¡}tjjd||||d	�}	|	 ¡ }
tjjd|d
�}|jdd�}t|
jj|jjdd� d S )Nr8   r   r¥   r:   r   r<   rj  rÛ   rÈ   rJ  F©Zdisprz   rÊ   )r   r‘   r
   rm   r!   rC   rD   rE   rL  r0   r¶   rI   rJ   rœ   rK   ÚdiscreteZLogitr   r/   r¹   ©rQ   rp  re   r×   rk  rl  rm  rS   ræ   r    r¡   r¢   r£   r   r   r   Útest_compare_logità  s&     ÿÿzTestGEE.test_compare_logitc                 C   sÜ   t  ¡ }t ¡ }tj d¡ t t tjj	dd�¡ ¡}tjj
dd�}tjj
dd�}tjj
dd�}tjjdddd�}t ||||dœ¡}tjjd||||d�}	|	 ¡ }
tjjd|d	�}|jd
d�}t|
jj|jjdd� d S )Nr8   r¥   r:   r   r<   rj  rÛ   rÈ   rJ  Frv  rz   rÊ   )r   r‘   r
   r‚   r!   rC   rD   ÚceilÚlogr  rE   rL  r0   r¶   rI   rJ   rœ   rK   rw  r   r/   r¹   rx  r   r   r   Útest_compare_poissonø  s&     ÿÿzTestGEE.test_compare_poissonc                 C   sÄ  d}t j d¡ t jj|d�}t jj|d�}t  t  |d ¡t jd ¡}t jjdd|d�}t jjd||  | |d�}t 	|||||dœ¡}d	}t
jj|||t ¡ d
d�}	|	jdddgd�}
t|
jdƒ |
 ¡ }|
j|jd�}|
j|ddg |jd�}|
j|ddg d|j d�}|
jd|j d�}t||ƒ t||ƒ t|||j ƒ t|||j ƒ t jjdd�}t jjdd�}t 	||dœ¡}|
j|d�}|
j}|d |d |  |d |  }t||ƒ d S )Nr/  iä  r:   r   r†   r   çš™™™™™¹?)r×   rk  rl  rS   r³   úY ~ X1 + X2r³   ©re   r³   r   rA   T©r³   rk  rl  )r,   r³   rz   )rk  rl  )r,   )r!   rC   rD   rE   rF   rG   rH   r  r0   r¶   rI   rJ   rœ   r
   ré   rK   r   Ú	convergedÚpredictr³   r   r/   )rQ   rR   rk  rl  rS   r³   r×   r�   ÚfmlrT   rU   Úpred1Úpred2Úpred3Úpred4Úpred5Zx1_newZx2_newZnew_exogÚpred6r/   Zpred6_correctr   r   r   Útest_predict  sB    ÿþ

 zTestGEE.test_predictc                 C   s²   t jd }t jd }t jd }t |¡}tjddd�}tj||||d�}| ¡ }|j	t  
d¡ }t| t jd	 d
¡d
  ¡ dƒ t|jt jd ddd� t|t jd ddd� d S )N©r<   r   r9   r   r<   r‰   rŠ   r‹   rb   r9   r   g      @©r   r9   r   r<   r9   r   r‰   r<   r‰   rŠ   r9   r   ©r   r   r   r   r   r   r   r   r   r9   r9   r9   r   T©Úmax_lagrÇ   r   çUUUUUUõ?r#  r   gÖÊmyÚ@©gç�imÛ@g=»×¤6Ì£¿rr   r›   ©gÙ3•�î±à?g	ŸRÊìÑ?)r!   rH   ÚtoolsÚadd_constantr   Ú
StationaryrI   rJ   rK   rO   r  r   Úcovariance_matrixrî   r/   )rQ   r+   r,   r*   ÚcsrT   rU   râ   r   r   r   Útest_stationary_grid6  s$    



ÿ
ÿ ÿzTestGEE.test_stationary_gridc              	   C   sÔ   t jd }t jd }t jd }t jd }t |¡}tj|||tjddd�d�}| ¡ }|j	t  
d	¡ }t|jt jd
 ddd� t|t jd ddd� t jd d d …d f }tj||||tjddd�d�}| ¡  d S )Nr‹  rŒ  )r   r   r   r   r   r   r   r   r   r   r   r   r�  r   FrŽ  r   r�  r‘  rr   r›   r’  )r   r   r9   r   r   r9   r   r   r9   r   r   r   r<   )r´   r   )r!   rH   r“  r”  rI   rJ   r   r•  rK   rO   r  r   r/   )rQ   r+   r,   r´   r*   rT   rU   râ   r   r   r   Útest_stationary_nogridK  s4    





ÿÿ
ÿ ÿÿÿzTestGEE.test_stationary_nogridc              	   C   sÄ  d}t j d¡ t jj|d�}t jj|d�}t  t  d¡t jd ¡}t jjdd|d�}t jjdd|d�}t jjd||  | t  	|¡ |d�}t
 ||||||d	œ¡}d
}	tjj|	||t ¡ ddd�}
|
 ¡ }t|jdƒ | ¡ }|j|d d�}|j|d d�}|j|d |d d�}|j|dd … |d dd … |d dd … d�}|j|jjdd … |d dd … |d dd … dd�}t||ƒ t||ƒ t||ƒ t|dd … |ƒ t|dd … |ƒ d S )Nr/  r8   r:   é   r†   r   r   r}  ©r×   rk  rl  rS   r³   r¿   r~  r³   r¿   )re   r³   r¿   Tr€  )r¿   )r³   r¿   iöÿÿÿ©r,   r³   r¿   F)r,   r³   r¿   Z	transform)r!   rC   rD   rE   rF   rG   rH   r  Úpoissonr{  r0   r¶   rI   rJ   rœ   r
   r‚   rK   r   r�  r‚  rT   r,   r   )rQ   rR   rk  rl  rS   r³   r¿   r×   r�   rƒ  rT   rU   r„  r…  r†  r‡  rˆ  r‰  r   r   r   Útest_predict_exposurei  sZ    ÿÿ ÿ þ ÿþý


zTestGEE.test_predict_exposurec                 C   sÈ   d}t j d¡ dd„ t|ƒD ƒ}tt  t  d¡t jd ¡ƒ}tt jjdd|d	�ƒ}tt jjdd|d	�ƒ}d
d„ t	|||ƒD ƒ}t
j|||t ¡ ||d�}| ¡ }| ¡ }	|j|||d�}
t|	|
ƒ d S )Nr/  r8   c                 S   s"   g | ]}d t j ¡ t j ¡ g‘qS )r   )r!   rC   rE   )rZ   Ú_r   r   r   r\   •  s     z7TestGEE.test_predict_exposure_lists.<locals>.<listcomp>rš  r†   r   r   r:   c                 S   s<   g | ]4\}}}t j d |d |d   | t  |¡ ¡‘qS )r}  r   r   )r!   rC   r�  r{  )rZ   Zexog_iZoffset_iZ
exposure_ir   r   r   r\   ™  s   ý ÿ)rS   re   r³   r¿   rœ  )r!   rC   rD   rÀ   rX   rF   rG   rH   r  ÚziprI   rJ   r
   r‚   rK   r‚  r   )rQ   rR   r,   rS   r³   r¿   r+   rT   rU   r„  r…  r   r   r   Útest_predict_exposure_lists‘  s*    
üúz#TestGEE.test_predict_exposure_listsc              	   C   s
  d}t j d¡ t jj|d�}t jj|d�}t  t  d¡t jd ¡}t jjdd|d�}t  |¡}t jj	d||  d|  |d�}t
 ||||||d	œ¡}d
}	tjj|	||t ¡ dd�}
|
 ¡ }t|jdƒ tjj|	||t ¡ |d�}|j|jd�}t|j|jƒ t|jdƒ tjj|	||t ¡ |d�}|j|jd�}t|j|jƒ t|jdƒ tjj|	||t ¡ dd�}|j|jd�}t|j|jƒ t|jdƒ tjj|	||t ¡ ddd�}| ¡ }t|jdƒ tjj|	||t ¡ d| d�}|j|jd�}t|j|jƒ t|jdƒ d S )Nr/  r8   r:   rš  r†   r   r   r}  r›  r~  r³   r  TrA   )re   r¿   r¿   )re   r¿   r³   )r!   rC   rD   rE   rF   rG   rH   r  Úexpr�  r0   r¶   rI   rJ   rœ   r
   r‚   rK   r   r�  r/   r   )rQ   rR   rk  rl  rS   r³   r¿   r×   r�   rƒ  rQ  rc  re  rf  rg  rh  Zmodel4Zresult4Zmodel5Zresult5Zmodel6Zresult6r   r   r   Útest_offset_formula¯  sl    
  ÿþþþþ þþzTestGEE.test_offset_formulac                 C   sâ   t  ¡ }t ¡ }tj d¡ d}tjj|d�}tjj|d�}tjj|d�}t t 	d¡tj
d ¡}t |||dœ¡}tjjd||||d�}	|	 ¡ }
|
 d	d
d¡}tt|ƒdƒ tdd„ |D ƒdd
gƒ tdd„ |D ƒddgƒ d S )Nr8   r¥   r:   r/  r†   )r×   rk  rl  r~  rÈ   r   rè   r   c                 S   s   g | ]}|j j‘qS r   )r   rð   ©rZ   rô   r   r   r   r\   ù  s     z,TestGEE.test_sensitivity.<locals>.<listcomp>rþ   c                 S   s   g | ]}|j d  ‘qS r$  )r/   r¤  r   r   r   r\   ý  s     g&ÈÆ(¶Å?gÂ&ØJˆÔÆ?)r   r•   r
   ré   r!   rC   rD   rE   rF   rG   rH   r0   r¶   rI   rJ   rœ   rK   Zparams_sensitivityr   r«   )rQ   rÓ   re   rR   r×   rk  rl  rS   ræ   r  rE  Zpsr   r   r   Útest_sensitivityæ  s,     ÿÿÿzTestGEE.test_sensitivityc                 C   s  t j d¡ t jjdd�}t jjdd�}d|dd…df< t  t  d¡t  d	¡¡}d
|dd…< i }dd	ddg}td	ƒD ]Ú}i ||< |d
k r¶|| t jd  || t jd  f|| d< n,|| t jd  || t jd  f|| d< |d
k �rt  	d	d¡\}}|| | || | f|| d< qtt  	dd¡\}}|| | || | f|| d< qtt
 ¡ }	tj||||	d�}
|
 ¡ }dD ]†}t
j||d�}tj||||d�}| ¡ }|dk�r¶d\}}nd\}}t|j|j||d� t|j|j||d� t|j|j||d� �qvdS )zÂ
        The Equivalence covariance structure can represent an
        exchangeable covariance structure.  Here we check that the
        results are identical using the two approaches.
        é`  r~   r:   )r~   r   r   Nr   r‰   r<   r9   r|   rb   )r   r   r   r9   )r   r   r   r9   r<   r‰   rŠ   r‹   rý   r   r  )Ú
return_covT)rj   rj   )çü©ñÒMbP?r¨  r'  )r!   rC   rD   rE   rF   rG   r$   rÀ   rH   Ztril_indicesr   r•   rI   rJ   rK   ÚEquivalencer   r/   rO   r”   )rQ   r+   r,   rS   ÚpairsÚstartrº   ÚaÚbÚexrQ  rc  r§  Úecre  rf  rŽ   rl   r   r   r   Útest_equivalence   sL    ÿÿ
""


 ÿzTestGEE.test_equivalencec              	   C   s¼  t j d¡ t jjdd�}t jjdd�}d|d d …df< t  t  d¡t  d¡¡}d	|d
d …< t  t  d¡t  d¡¡ t j¡}|t j 	t
|ƒ¡ }tj|dd�}tj||||d�}| ¡  |jD ]F}|j| }dd„ | ¡ D ƒ}	t||kƒ}
tt|	ƒ|
|
d  d ƒ q¾tƒ }|jD ]Z}|j|  ¡ D ]D}t|d |d ƒD ]*\}}||f}||k�sXt‚| |¡ �q:�q$�qtj|dd�}tj||||d�}t ¡ � t d¡ |jdd� W 5 Q R X d S )Nr¦  r/  r:   )r/  r   r   r   r‰   rz   r9   é   T)Úlabelsr§  r   c                 S   s   g | ]}t |d  ƒ‘qS r$  )r«   r¤  r   r   r   r\   R  s     z7TestGEE.test_equivalence_from_pairs.<locals>.<listcomp>r   rK  ©Úmaxiter)r!   rC   rD   rE   rF   rG   r$   r4  Zint32r_  r«   r   r©  rI   rJ   Z_pairs_from_labelsZgroup_labelsrª  r¹   rî   r   rÌ   r   ÚAssertionErrorÚaddrM  rN  rO  rK   )rQ   r+   r,   rS   r²  ÚeqrQ  r—   rÃ   ZvlÚmZixsrã   r¬  r­  Úkyr   r   r   Útest_equivalence_from_pairs;  s8     




z#TestGEE.test_equivalence_from_pairsN)8Ú__name__Ú
__module__Ú__qualname__rW   r_   ro   rt   r  ÚmarkÚsmokeÚ
matplotlibry   rƒ   r…   r˜   r¤   r°   r¼   ÚparametrizerÄ   rÖ   rç   r÷   rù   r
  r   r‘   r•   r  r  r  r   r%  r.  r6  rF  rP  rR  rS  rT  rV  rY  ri  rq  ru  ry  r|  rŠ  r˜  r™  rž  r¡  r£  r¥  r°  rº  r   r   r   r   r6   Z   sr   (-1Y,<ÿ
#1B)$


H*",&(7;r6   c                   @   s   e Zd ZdZdd„ ZdS )ÚCheckConsistencyNc           
      C   sH  | j }|j| jd�}|j| jdd�}|j| jdd�}| ¡  | ¡  t|jdƒ t|jdƒ t|jdƒ d}|d|jf|d|jf|d|jffD ]t\}}}t	 
t	 |¡¡}	t|j|	|d� |dkrÜ|j|d�}	t|j|	|d� t| ¡ ||d	d
� t|j||d	d
� qŽt|j|jkƒ t|j|jkƒ t|j|jkƒ tt|jdd� d S )NrA   rf   )rB   rh   r  r  g:Œ0âŽyE>rk   r„   g»½×Ùß|Û=r›   Z	robust_bc)r  rK   rB   rP   r   rh   r  r  r  r!   r  ro  r   rO   rÏ   r  Zcov_params_defaultr	   r   rÁ   )
rQ   r  Z
res_robustZ	res_naiveZres_robust_bcrl   Úresrh   ÚcovrO   r   r   r   Útest_cov_typek  s>    ÿÿ


ýÿzCheckConsistency.test_cov_type)r»  r¼  r½  rB   rÅ  r   r   r   r   rÂ  g  s   rÂ  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestGEEPoissonCovTypec                 C   sP   t dƒ\}}}t ¡ }t ¡ }t |||d ||¡| _t 	ddddddg¡| _
d S )NrW  çÚ…Í�ì¨¢¿çâq“IôÏ«¿ç¶}v]K
�?ç&&ïpâ?çtm^‹Ìs¿çáQµ±ˆÞ¿)r-   r
   r‚   r   r‘   rI   rJ   r  r!   r  rB   )Úclsr+   r,   r+  re   rà   r   r   r   Úsetup_classœ  s    
  ÿz!TestGEEPoissonCovType.setup_classc                 C   sh   t ddd�\}}}t |¡}t |¡}t |¡}t ¡ }t ¡ }t 	|||d ||¡}| 
¡ }t|ƒ d S )NrW  Fr8  )r-   r0   r1   r¶   r
   r‚   r   r‘   rI   rJ   rK   r5   )rQ   r+   r,   r+  re   rà   r  r£   r   r   r   Útest_wrapper©  s    ÿ


z"TestGEEPoissonCovType.test_wrapperN©r»  r¼  r½  ÚclassmethodrÎ  rÏ  r   r   r   r   rÆ  š  s   
rÆ  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGEEPoissonFormulaCovTypec                 C   s¾   t dƒ\}}}t ¡ }t ¡ }tj|d d …d f |d d …d f |d d …dd …f fdd�}t |¡}ddgdd„ t	|j
d d ƒD ƒ |_tjjdd|||d	�| _t d
dddddg¡| _d S )NrW  r   r   r×   rØ   c                 S   s   g | ]}d |d  ‘qS rÙ   r   rÚ   r   r   r   r\   Ç  s   ÿz<TestGEEPoissonFormulaCovType.setup_class.<locals>.<listcomp>rX  rÈ   rÇ  rÈ  rÉ  rÊ  rË  rÌ  )r-   r
   r‚   r   r‘   r!   r#   r0   r¶   rÀ   r%   rÞ   rI   rJ   rœ   r  r  rB   )rÍ  r+   r,   r+  re   rà   ræ   r   r   r   rÎ  ¼  s,     ÿÿ
ÿ

  ÿ
  ÿz(TestGEEPoissonFormulaCovType.setup_classN)r»  r¼  r½  rÑ  rÎ  r   r   r   r   rÒ  º  s   rÒ  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestGEEOrdinalCovTypec              
   C   sZ   t  ¡ }tddd�\}}}t d¡}t |||d ||¡| _t 	ddddd	d
ddg¡| _
d S )Nr7  Fr8  r9  r:  r;  r<  r=  r>  r?  r@  rA  )r
   rm   r-   r   rB  rI   rC  r  r!   r  rB   )rÍ  re   r+   r,   rS   rÓ   r   r   r   rÎ  Ó  s    ÿ

   þz!TestGEEOrdinalCovType.setup_classc                 C   sr   t ddd�\}}}tj|dd�}t |¡}tj|dd�}t ¡ }t d¡}t 	|||d ||¡}| 
¡ }t|ƒ d S )Nr7  Fr8  Úyendog©ÚnameÚ	the_groupr9  )r-   r0   r1   r¶   r
   rm   r   rB  rI   rC  rK   r5   )rQ   r+   r,   rS   re   rÓ   r  r£   r   r   r   rÏ  â  s    ÿ

z"TestGEEOrdinalCovType.test_wrapperNrÐ  r   r   r   r   rÓ  Ñ  s   
rÓ  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestGEEMultinomialCovTypec                 C   sF   t ddd�\}}}t ¡ }tj||||d�| _t ddddg¡| _d S )	NrU  Fr8  r   g†Åê‡¿ÃÜ?gÜ±"´/*Ý?gÌé™û7qí¿gö—@¾BîÝ¿)	r-   r   r‘   rI   rs   r  r!   r  rB   )rÍ  r+   r,   rS   rÓ   r   r   r   rÎ  õ  s    ÿ
ÿz%TestGEEMultinomialCovType.setup_classc                 C   sf   t ddd�\}}}tj|dd�}t |¡}tj|dd�}t ¡ }tj||||d�}| ¡ }t	|ƒ d S )NrU  Fr8  rÔ  rÕ  r×  r   )
r-   r0   r1   r¶   r   r‘   rI   rs   rK   r5   )rQ   r+   r,   rS   rÓ   r  r£   r   r   r   rÏ    s    ÿ
z&TestGEEMultinomialCovType.test_wrapperNrÐ  r   r   r   r   rØ  ó  s   
rØ  c                  C   s  t j d¡ d\} }}t jj| | |fd�}d}||d d …df  t  d|d  ¡|d d …df   |d d …df< d|d d …df |d d …df   }t  |¡}t j |¡}t  t  | ¡t  	|¡¡}t
j|||t ¡ d	�}	|	 d
¡}
t|
jdt jd  ddd� d S )Né"  )éè  r‰   r‰   r:   rè   r   r   çffffffæ?r9   )rS   re   gH¯¼šò×z>)r   r   r   rý   r   ç{®Gáz„?g¸…ëQ¸¾?r›   )r!   rC   rD   rE   r  r¢  r�  rF   rG   r$   rI   rJ   r
   r‚   Úfit_regularizedr   r/   rH   )ÚngÚgsrÃ   rô   ÚrÚlprr’   r0  rS   rT   rU   r   r   r   Útest_regularized_poisson  s    
B$

 ÿrâ  c                  C   sÌ  t j d¡ d\} }}t  t  | ¡t  |¡¡}t  | | |f¡}dt jj| | d�dk  |d d …df< t jj| | d�|d d …df< d}t	d|ƒD ]P}t jj| | d�}||d d …|d f  t  
d|d  ¡|  |d d …|f< q’t  |d d …dd…f t jd	 ¡}d
}	t  
|	¡t  t jj| d�t  |¡¡ }
|
t  
d|	 ¡t jj| | d� 7 }
||
 }tj||t ¡ |d�}|jddd�}t  d¡}t jd	 |dd…< t|j|ddd� t|jjt j|	 ddd� d S )NrÙ  )rû   r<   rû   r   r:   rè   r   r   r<   )r   r9   g      ø?r   çš™™™™™Ù?)r   rS   rÜ  r¥   r³  rû   r"  r›   çš™™™™™©?)r!   rC   rD   rF   rG   r$   r�   r  rE   rÀ   r  rï   rH   rI   rJ   r   r•   rÝ  r   r/   rð   )rÞ  rß  rÃ   rS   rô   rà  rÂ   Zepsrá  ÚsÚer0  rT   rU   r®  r   r   r   Útest_regularized_gaussian&  s0    
&<"&$
 ÿrç  c                 C   sÈ   t j d¡ t jjdd�}t jjdd�}t  t  d¡t jd ¡}t |||¡}| 	¡ }| 
d¡}tt|tjƒdƒ | d¡}tt|tjƒdƒ | d¡}tt|tjƒdƒ | ¡ }tt|tjƒdƒ d S )	Niz  r¥   r:   )r¥   r   r/  r†   r   T)r!   rC   rD   rE   rF   rG   rH   rI   rJ   rK   Zplot_added_variabler   r.   rv   rw   Zplot_partial_residualsZplot_ceres_residualsZplot_isotropic_dependence)rx   r,   r+   rS   rT   rU   r   r   r   r   Ú
test_plotsI  s    


rè  c               %   C   sj  dddddgddddd	gd
ddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgd ddd!d"gd#ddd!d$gd%dddd&gd'dddd(gd)d*d	d!d	gd+d*d	ddgd,d*d	ddgd-d*d	ddgd.d*d	ddgd/d*d	ddgd0d*d	ddgd1d*d	ddgd2d*d	d3dgd4d*d	ddgd5d*d	ddgd6d*d	ddgd7d*d	dd"gd8d*d	dd$gd9d*d	dd&gd:d*d	dd(gg!} t j| dd … | d	 d;�}tj|j|jdkdf< tjjd<|dt	 
¡ t ¡ d=�}| ¡  ¡ }d|d>< tj|j|d>dg |jt	 
¡ t ¡ d?�}t|j|jƒ t|j|jƒ t|j|jƒ | ¡ }| ¡ }t|jj|jjƒ d S )@NrÝ   ÚalÚstatusÚfakeÚgrpsZ4AÚAr   r   Z5Aç       @Z6Ar9   r   Z7AZ8Ar<   Z9Ar‰   Z11ArŠ   Z12Ar‹   Z13Arb   Z14ArŒ   Z15Arz   Z16Aé   Z17Ag      @r|   Z18Ar}   Z19Aé   Z20Ar{   Z2CÚCZ3CZ4CZ5CZ6CZ9CZ10CZ12CZ14Cg      @Z15CZ17CZ22CZ23CZ24CZ32CZ35C)rÞ   zstatus ~ fake)r�   rS   r   re   Zconstant)rS   r   re   )r0   r¶   r!   rª   Úlocrë  rI   rJ   rœ   r   r‘   r
   rm   r¸   r·   rê  rì  r   r+   r,   rS   rK   r   r/   r¹   )r�   r  r  r¢   rÃ  r  r   r   r   r°   ^  sh    à"þþr°   c                 C   sT   t jd }t jd }t jd }t jd }|d d …d f }|d d …d f }||||fS )N)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   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   r   r   r   r   r9   r9   r9   r<   r<   r<   )r!   rH   )rž   r0  rH  rI  r—   r   r   r   Úsimple_qic_data™  s    



ró  re   c              	   C   s´  | ƒ }t | ƒ\}}}}tj||||d�}|jdd�}|j}tj||||d�}	|	jdd�}
|
j}| tjkr†t|ƒ d }t|ƒ d }n€| tjkrþt	 
|¡}|dk}|| t	 || ¡ ||  ||< t	 |t	 |¡ | | ¡}t	 |t	 |¡ | | ¡}ntdƒ‚| |j|j| ¡ ¡}|	 |
j|
j|
 ¡ ¡}t||d dd� t||d dd� t ¡ �  t d¡ | ¡ }|
 ¡ }W 5 Q R X t||d	d … d
d� t||d	d … d
d� d S )N©re   rS   r   r�   rî  zUnknown familyg-Cëâ6?rk   rK  r   rr   )ró  rI   rJ   rK   r2   r
   ré   r«   r‚   r!   Ú
zeros_liker{  rî   rÁ   Úqicr/   r”   r  r   rM  rN  rO  )re   rž   r0  rH  rI  r—   rQ  rc  Úmean1re  rf  Úmean2Zql1Zql2Úcr¯   Úqle1Úqle2Zqler1Zqler2r   r   r   Útest_ql_known§  s8    


"

rü  c              	   C   sh  | ƒ }t | ƒ\}}}}tj||||d�}|jdd�}|j}tj||||d�}	|	jdd�}
|
j}| tjkrnd}nª| tjkrÒt 	|t 
|d|  ¡ t 
d| ¡ ¡}|t 	|t 
|d|  ¡ t 
d| ¡ ¡8 }nF| tjk�rt 	|t 
|¡ | ¡t 	|t 
|¡ | ¡ }ntdƒ‚| |j|j| ¡ ¡\}}}|	 |
j|
j|
 ¡ ¡\}}}t|| |ddd� d S )Nrô  r   r�   r   zunknown familyrr   r›   )ró  rI   rJ   rK   r2   r
   ré   rm   r!   rî   r{  r‚   rÁ   rö  r/   r”   r  r   )re   rž   r0  rH  rI  r—   rQ  rc  r÷  re  rf  rø  Zqldiffrú  rŸ  rû  r   r   r   Útest_ql_diffÓ  s2    

*0ÿÿ
ÿ
rý  c               	   C   sT   t  t¡�@ t ¡ } t| ƒ\}}}}tj||| |d�}| ¡ }| 	¡  W 5 Q R X d S )Nrô  )
r  r  r  r
   ré   ró  rI   rJ   rK   rö  )rž   r0  rH  rŸ  r—   rT   rU   r   r   r   Útest_qic_warnings÷  s    rþ  Úregc           
      C   sø   t j d¡ d}t jj|dfd�}t jjdd|d�}t j |¡}t  t  d¡t  |d ¡¡}t	j
||t ¡ |d�}t	j
||t ¡ |d�}| r¨|jdd	�}|jdd
d�}	n|jdd�}|jd
dd�}	t|j|	jƒ | sôt|	j|j |	jt  |	j¡ ƒ d S )NiW  rÚ  r9   r:   r   r¥   rô  r}  )Úpen_wtrl  )r   r”   rf   r„   )r”   rh   )r!   rC   rD   rE   Úgammar�  rF   rG   r$   rI   rJ   r
   r‚   rÝ  rK   r   r/   r  r”   Z	ones_like)
rÿ  rR   rô   r—   r0  ÚgrprQ  re  rc  rf  r   r   r   Útest_quasipoisson   s$    ÿr  c                     sT  t j d¡ d} d‰d}t  ˆ¡}| t  t j ||¡¡ }t j |¡‰ ‡ ‡fdd„t	|ƒD ƒ}dt  
|¡ }‡fdd„t	|ƒD ƒ}t  
|¡}t jj|ˆ d	fd
�}t  |t jd ¡| }tj|||tjdd�d�}| ¡ }	tj|||tjdd�d�}
|
 ¡ }tj|||tjddd�d�}| ¡ }t|	jj|jjdd� t|	jj|jjd dd� d S )Néó   rè   rz   r¥   c                    s"   g | ]}t  ˆ t jjˆd �¡‘qS )r:   )r!   rï   rC   rE   rÚ   ©Úcovrr¸  r   r   r\   -  s     z test_grid_ar.<locals>.<listcomp>r   c                    s   g | ]}|gˆ  ‘qS r   r   rÚ   )r¸  r   r   r\   0  s     r9   r:   )r   rý   r   FrÆ   )rS   r   Tr   rŽ  rä  rk   )r!   rC   rD   rG   rê   ÚsubtractÚouterrë   rì   rÀ   r#   rE   rï   rH   rI   rJ   r   rÎ   rK   r•  r   rð   )rà  rÞ  r¯   rÄ  ræ  rì  rô   r0  rQ  rc  re  rf  rg  rh  r   r  r   Útest_grid_ar"  sB    



ÿ

ÿ
ÿþ
 ÿr	  c                  C   s  t j d¡ d} t  dddgdddgdddgg¡}t j |¡}t jj| dfd�}t  ||j¡}t jjd|  dfd�}t j	d	 }t  ||¡}|| 
¡  }t  t  | ¡t  d¡¡}t  t  | ¡t j	d
 ¡ t¡}	tj|||	t ¡ |d�}
|
 ¡ }t|j|ddƒ t|
jj|ddƒ d S )Né+   é�  r   rÛ  r"  rè   r9   r:   ©r   éþÿÿÿr}  )r   r   r   ©r´   r   rS   rä  )r!   rC   rD   r¬   rë   rì   rE   rï   rÐ   rH   ZravelrF   rG   r$   r4  r5  rI   rJ   r   ÚUnstructuredrK   r   r/   rð   )ÚngrprÄ  r  ræ  ÚxmatÚparÚeyr0  r—   Útr¸  rà  r   r   r   Útest_unstructured_completeI  s$    "
ÿr  c                  C   s¼  t j d¡ d} t  dddgdddgdddgg¡}t j |¡}t jj| dfd�}t  ||j¡}t jjd|  dfd�}t j	d	 }t  ||¡}g g g g f\}}}	}
t
| ƒD ]ˆ}d
ddg}| |d ¡ t  |¡}|	 |¡ | |d| |  |||f  ¡ |d| | d d …f }| |¡ |
 |t  d¡ ¡ q¦t  |¡}t j|d
d�}t  |	¡}t j|td�}t  |
¡}tj|||d d …d f t ¡ |d�}| ¡ }t|j|ddƒ t|jj|ddƒ d S )Nr
  r  r   rÛ  r"  rè   r9   r:   r  r   r   r   ©Zdtyper  rä  )r!   rC   rD   r¬   rë   rì   rE   rï   rÐ   rH   rÀ   Úpoprí   r$   r#   r5  rI   rJ   r   r  rK   r   r/   rð   )r  rÄ  r  ræ  r  r  r  ZylZxlÚtlÚglró   rò   rô   r0  r  r—   r¸  rà  r   r   r   Útest_unstructured_incomplete`  s<    "



"



ÿr  c            
      C   sî   t j d¡ tjdd�} d| _dD ]Æ}dD ]¼}t  |¡}dt  t j 	||¡¡ }t jj
|d�}|dkrvt jj|d�}nt jj||fd�}t  |¡}t j |t j |t j ||¡¡¡}|  t  |¡t  |¡||g¡}	t||	d	 d
d
d� q*q"d S )Né{   TrÆ   rã  ©r   r   r<   ©r   r<   r:   r   r   rr   r›   )r!   rC   rD   r   rÎ   rð   rG   rê   r  r  r  rE   ro  rë   ÚsolveÚcovariance_matrix_solverõ  r   )
rù  ÚdÚqr¯   rs  ÚsdÚzÚsmÚz1Úz2r   r   r   Útest_ar_covsolveˆ  s*    

ÿ þr'  c            	      C   sì   t j d¡ t ¡ } d| _dD ]È}dD ]¾}dt  ||f¡ dt  |¡  }t jj|d�}|dkrpt jj	|d�}nt jj	||fd�}t  
|¡}t j |t j |t j ||¡¡¡}|  t  |¡t j|td�||g¡}t||d	 d
d
d� q&qd S )Nr  rã  r  r  g333333ã?r:   r   r  r   rr   r›   )r!   rC   rD   r   r•   rð   r$   Úeyer  rE   ro  rë   r  r  rõ  rG   r5  r   )	rù  r   r!  rs  r"  r#  r$  r%  r&  r   r   r   Útest_ex_covsolve¥  s(     
ÿ þr)  c            
      C   s  t j d¡ tjdd�} t jdtd�| _dD ]ä}dD ]Ú}dt  |¡  | _|d	 | _	|  
t  |¡t j|td�¡\}}t jj|d
�}|d	kršt jj|d
�}nt jj||fd
�}t  |¡}t j |t j |t j ||¡¡¡}|  t  |¡t j|td�||g¡}	t||	d ddd� q4q,d S )Nr  TrÆ   rz   r  r  r  rî  r   r:   r   rr   r›   )r!   rC   rD   r   r•  rG   r5  r´   rð   r�  r–  r�   r  rE   ro  rë   r  r  rõ  r   )
rù  r   r!  rs  rŸ  r"  r#  r$  r%  r&  r   r   r   Útest_stationary_covsolveÁ  s0    
ÿ
ÿ þr*  )T)KÚ__doc__Zstatsmodels.compatr   r   Únumpyr!   r  Znumpy.testingr   r   r   r   r   r   r	   Z3statsmodels.genmod.generalized_estimating_equationsZgenmodZ generalized_estimating_equationsrI   Zstatsmodels.toolsr“  Z#statsmodels.regression.linear_modelZ
regressionZlinear_modelrn  Zstatsmodels.genmodr
   r   Z#statsmodels.discrete.discrete_modelrw  Zdiscrete_modelZpandasr0   Zscipy.stats.distributionsr   rM  Zmatplotlib.pyplotZpyplotrv   ÚImportErrorr   Zmatplotlib.backends.backend_pdfr   r   r   r-   r5   r6   rÂ  rÆ  rÒ  rÓ  rØ  râ  rç  r¾  r¿  rÀ  rè  r°   ró  rÁ  ré   r‚   rü  rm   rý  rþ  r  r	  r  r  r'  r)  r*  r   r   r   r   Ú<module>   s†   $

            3 "#;
+þ
!	
!'(