
    !g$7                       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c mZ ddlmZ ddlmc mZ ddlmZ ddlmZ ddlmc mZ ddlZ ddl!m"Z" ddl#Z#	 ddl$m%Z& dZ(e(rdd	l)m*Z*  e*d
      Z+ndZ+d Z,d,dZ-d Z. G d d      Z/ G d d      Z0 G d de0      Z1 G d de0      Z2 G d de0      Z3 G d de0      Z4d Z5d Z6ejn                  jp                  ejn                  jr                  d               Z:d Z;d Z<ejn                  j{                  d ej|                  ej~                  g      d!        Z@ejn                  j{                  d ej|                  ej                  ej~                  g      d"        ZBd# ZCejn                  j{                  d$ddg      d%        ZDd& ZEd' ZFd( ZGd) ZHd* ZId+ ZJy# e'$ r Y ]w xY w)-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                 4    t         r| j                  |       y y N)
pdf_outputsavefig)pdffigs     ^/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/genmod/tests/test_gee.pyclose_or_saver   ,   s    C     Tc                    t         j                  j                  t         j                  j                  t                    }t        j                  t         j                  j                  |d|       d      }|dddf   }|dddf   }|ddddf   }|r;t        j                  t        j                  |j                  d   df      |f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         axis)ospathdirnameabspath__file__np
genfromtxtjoinconcatenateonesshape)fnameiceptcur_dirZgroupendogexogs          r   	load_datar3   1   s     ggoobggooh78G
bggll7Iu= #	%A adGEadGEQU8D~~rww

1q'9:DA#$& $r   c                 $   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                               y r   )r
   
isinstanceparamspdSeriesfittedvaluesresidcentered_resid_resultsr&   ndarray)r   s    r   check_wrapperr>   M   s    Jw~~ryy12Jw++RYY78Jw}}bii01Jw--ryy9:Jw''..

;<Jw''44bjjABJw''--rzz:;Jw''66

CDr   c                   f   e Zd Zd Zd Zd Zd Zej                  j                  ej                  j                  d               Zd Zd Zd Zd	 Zd
 Zd Zej                  j%                  dddg      ej                  j%                  dddg      d               Zd Zd Zd Zd Zd Zej                  j%                  dej4                  ej6                  g      d        Zd Zd Zd Zd Z d Z!d Z"d Z#ej                  j                  d        Z$ej                  j                  d         Z%ej                  j                  d!        Z&ej                  j                  ej                  j                  d"               Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.d* Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7y3)4TestGEEc                    d}t         j                  j                  d       t         j                  j                  |df      }d|d d df<   t        j                  t        j
                  |dz        t         j                  d         }|d d df   t         j                  j                  |      z   }t        j                  |||      }|j                  g d	
      }|j                         }t        |j                  |j                  dd         t        |j                  |j                  dd         |j!                          y )N(   麅     sizer   r      r   r   r   r   g?gcͯ?g̒?start_params)r&   randomseednormalkronaranger_geeGEEfitget_margeffr   margeffr6   
margeff_sebsesummary)selfnr2   groupsr1   modelresultmargs           r   test_margins_gaussianzTestGEE.test_margins_gaussian\   s     
		uyyaV,QT
1q5)255+<=QT
RYY--1-55tV,F  H !!#fmmAB&78AB8 	r   c                 $   d}t         j                  j                  d       t         j                  j                  |df      }d|d d df<   t        j                  t        j
                  |dz        t         j                  d         }|d d df   t         j                  j                  |      z   }|D cg c]  }t        |       }}t        |      }t        |      }t        j                  |||      }	|	j                  g d	
      }
|
j                         }t        |j                  |
j                  dd         t        |j                  |
j                   dd         t#        d |D              }t#        |      }t#        |      }t        j                  |||      }	|	j                  g d	
      }
|
j                         }t        |j                  |
j                  dd         t        |j                  |
j                   dd         y c c}w )NrB   rC   rD   rE   r   r   rG   rH   rI   rJ   c              3   2   K   | ]  }t        |        y wr   )tuple).0rows     r   	<genexpr>z=TestGEE.test_margins_gaussian_lists_tuples.<locals>.<genexpr>   s     :#5::s   )r&   rL   rM   rN   rO   rP   rQ   listrR   rS   rT   rU   r   rV   r6   rW   rX   rc   )rZ   r[   exog_arr
groups_arr	endog_arrre   	exog_listgroups_list
endog_listr]   r^   r_   
exog_tuplegroups_tupleendog_tuples                  r   "test_margins_gaussian_lists_tuplesz*TestGEE.test_margins_gaussian_lists_tuplest   s    
		u99##!Q#0AWWRYYq1u-ruuZ/@A
QTNRYY%5%51%5%==	 +333T#Y3	3:&)_

I{;F  H !!#fmmAB&78AB8 :::
Z(I&Z>F  H !!#fmmAB&78AB83 4s   8Hc                 0   t         j                  j                  d       t         j                  d   }t        j                  d      }t         j                  d   |d d df<   t        j
                  d      }t        j                  |||t        j                               }|j                  dd	d
g      }|j                         }t        |j                  t         j                  d          t        |j                  t         j                  d   d       y )NrC   r   r   r   r   r   r   r   r      r   r   r   r   r   r   r   r   r   r   ru   familynaivegΌ]
g{@cov_typerK   gX']?sܩ?ư>rtol)r&   rL   rM   rQ   r*   rP   rR   rS   r   BinomialrT   rU   r   rV   rW   rZ   r1   r2   r\   r]   r^   r_   s          r   test_margins_logisticzTestGEE.test_margins_logistic   s     			u,-wwvUU12QT
1tVH4E4E4GHK*+E  G !!#beeI&67y)9Er   c                    t         j                  j                  d       t         j                  d   }t        j                  d      }t         j                  d   |d d df<   t        j
                  d      }t        j                  |||      }|j                  ddd	g
      }|j                         }t        |j                  t         j                  d   d       t        |j                  t         j                  d   d       y )NrC   rs   rt   rv   r   ru   ry   ]
@grz   gg]ڿh㈵>r~   r|   r}   )r&   rL   rM   rQ   r*   rP   rR   
NominalGEErT   rU   r   rV   rW   r   s          r   test_margins_multinomialz TestGEE.test_margins_multinomial   s    
 			u,-wwvUU12QT
1udF3G#Y;0 1 !!#beeK&8tDy)9Er   c                    t         j                  j                  d       t         j                  d   }t        j                  d      }t         j                  d   |d d df<   t        j
                  d      }t        j                  |||      }|j                  ddd	g
      }|j                         }t        t        |t        j                        d       y )NrC   rs   rt   rv   r   ru   ry   r   r   rz   T)r&   rL   rM   rQ   r*   rP   rR   r   rT   plot_distributionr   r5   pltFigure)rZ   close_figuresr1   r2   r\   r]   r^   r   s           r   test_nominal_plotzTestGEE.test_nominal_plot   s     			u,-wwvUU12QT
1udF3G)19(=  ? &&(ZSZZ0$7r   c                 4   t         j                  j                  d       t         j                  d   }t        j                  d      }t         j                  d   |d d df<   t        j
                  d      }t        j                  |||t        j                               }|j                  dd	d
g      }|j                         }t        |j                  t         j                  d   d       t        |j                  t         j                  d   d       y )NrC   )
                        rt   rs   r   ru   rw   ry   g74@gU&:?rz   g:#J{/&@r}   r~   gIV&
@)r&   rL   rM   rQ   r*   rP   rR   rS   r   PoissonrT   rU   r   rV   rW   r   s          r   test_margins_poissonzTestGEE.test_margins_poisson   s     			u45wwvUU12QT
1tVH4D4D4FGG%z;3 4 !!#beeGn4@xtDr   c                 L   t         j                  j                  d       t         j                  d   }t        j                  d      }t         j                  d   |dddf<   t        j
                  d      }t        j                  |||      }|j                  dd	d
g      }t        j                  |||t        j                               }|j                  d      }t        |j                  |j                   d       t        |j                  |j                  d       y)zf
        Check the 2-class multinomial (nominal) GEE fit against
        logistic regression.
        rC   rs   rt   rv   Nr   ru   ry   r   r   rz   rw   r{   r   r~   )r&   rL   rM   rQ   r*   rP   rR   r   rT   rS   r   r   r   r6   rX   )rZ   r1   r2   r\   r]   r   logit_modellogit_resultss           r   test_multinomialzTestGEE.test_multinomial   s     			u,-wwvUU12QT
1udF3))W$i<1) 2 ggeT6%-%6%6%8:#9)=)=(=DI]%6%6TBr   c                    t        j                  d      }t        j                  d      }d|dd t        j                  d      }|ddxxx dz  ccc t        j                  t        j                  d      t         j
                  d         }t        j                  ||||      }|j                         }t        |j                  t         j
                  d          t        j                  d      }d|dd  t         j
                  d	   }t         j
                  d
   }t         j
                  d   }t        j                  t        j                  d      |f      }t        j                  ||||t        j                               }t        j                  g d      }dt        d|z
        z  }	|j                  d|	      }t        |j                  t         j
                  d   d       t        |j                   d       t        |j"                  t         j
                  d   d       t        j                  ||||t        j$                               }|j                  d       y )Nr   r   r   r   r   r   r   weightsgUUUUUU?)r   r   rD   r   rD   rG   rD   rG      rG   r      r   r      r   r   ru   r   ru   )r   r   r   r   r   r   r   r   rD   rD   rD   rD   rG   rG   rG   rG   rD   rD   rD   rD   )r   r   r   r   r   r   rG   rG   r   r   r   r   r   r   ru   ru   	   r   r   r   )r   r   )r   rG   r   r   rG   r   r   r   )
ddof_scalescaling_factor)g4%?g
?r}   )atolgIEc?)g'i֦?gU?r   r   )r&   r*   zerosrO   rP   rQ   rR   rS   rT   r   r6   column_stackr   IndependencemeanfloatscalerX   Exchangeable)
rZ   r2   r   r1   r\   r]   r^   exog1gfacs
             r   test_weightedzTestGEE.test_weighted  s    wwr{''"+"aq2d4tVW=ruuV}5 ''"+ ! " ! " * +U34 tVW#-#:#:#<>GG,-5a= a<ruu-?'@tLh/ 	

BEE*=$>TJ tVW#-#:#:#<>		Q	r   c                    t         j                  j                  t         j                  j                  t                    }t         j                  j                  |dd      }t        j                  |      }t        j                         }t        j                         }t        j                  j                  d|d   |||      }|j                  d      }dd	lm} |j                  d|t        j                         
      }	|	j                         }
|j$                  }|
j$                  }
t'        |j(                  |
j(                  dd       t'        |j*                  |
j*                  dd       y )Nr   zepil.csvzy ~ age + trt + basesubject)r   rx   ry   r   r   )GLMrw   r}   r   r   )r!   r"   r#   r$   r%   r(   r7   read_csvr   r   r   r   rR   rS   from_formularT   +statsmodels.genmod.generalized_linear_modelr   r<   r   r6   rX   )rZ   r.   r,   datafamindmod1rslt1r   mod2rslt2s              r   test_poisson_epilzTestGEE.test_poisson_epil.  s   ''//"''//(";<Wi<{{5! %%'ww##$:DO$(S $ F'* 	D 6'/'7'7'9   ;
 ellDI		5994dCr   c                 *   t         j                  j                  d       t         j                  j                  d      }t         j                  j                  d      }d|d d df<   t        j                  t        d      t        j                  d            }t         j                  |d<   t         j                  |dd	 t         j                  |d
ddf<   t        j                  |||d      }|j                         }t        t        |j                        d       t        t        j                  |j                  j                         t         j"                  d          t        j$                  |      t        j$                  |      j'                  d      z  }t        j                  ||   ||d d f   ||   d      }|j                         }t        |j(                  |j(                         t        |j*                  |j*                         y )NrC   d   rE   )r   rD   r   r   r   r   r   r   r   drop)missing_   )r   rD   none)r&   rL   rM   rN   rO   r   r*   nanrR   rS   rT   r   lenr1   asarrayr2   r+   rQ   isfiniteallr6   rX   )	rZ   r1   r2   r\   r   r   iir   r   s	            r   test_missingzTestGEE.test_missingH  sj    			u		  c *yyX.QT
RWWQZ066aVVa
RUAXwwudFF;
C

OR0BJJtyy7uF[["++d"3"7"7"::wwuRy$r1u+vbz6J
ELL%,,7EIIuyy1r   c                 l   t         j                  j                  d       t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        j                  t        d      t        j                  d            }t         j                  |d<   t         j                  |dd t         j                  |dd	 t        j                  |||||d
      }dD ]  }|j                         }i }	|dk(  rd|d<   d|d<   d|	d<   d|	d<   t        j                  j                  dd|dd|	}
|
j                         }t        t!        |
j"                        d       t        t        j$                  |
j&                  j(                        t         j*                  d          |j-                         }i }	|dk(  r|d   |	d<   |d   |	d<   t        j                  j                  d|d   |dd|	}|j                         }t        |j.                  j0                  |j.                  j0                         t        |j2                  j0                  |j2                  j0                          y )NrC   r   rE   r   r   r   r   r   r   )r1   r   exog2exog3r\   )r   r   r   offsettimer\   r   )r\   r   r   r   )r   rG   r   )zendog ~ exog1 + exog2 + exog3)r&   rL   rM   rN   rO   r   r*   r   r7   	DataFramecopyrR   rS   r   rT   r   r   r1   r   r2   r+   rQ   dropnar6   valuesrX   )rZ   r1   r   r   r   r\   data0kr   kwargsr   r   r   r   s                 r   test_missing_formulazTestGEE.test_missing_formulad  s?    			u		  c *		  c *		  c *		  c *RWWQZ066aVVa
vvbuuu',@ A  	DA::<DFAv!"X V#+x !'v77'' B/7d06B:@BD HHJEDJJ4

499?? ;RUU5\J;;=DFAv#'>x !%fv77'' B/3H~D06B:@BD HHJE 3 3U\\5H5HI		 0 0%))2B2BC=	Dr   k1FTk2c                    t        d      D ]  }g d}d||<   t        j                  |d         }t        j                  |d   df      }i }t        j                  |d         |d<   |rt        j                  d      |d<   |rt        j                  d      |d	<   t        t              5  t        j                  ||fi | d d d         y # 1 sw Y   xY w)
NrD   )r   r   r   r   r   r   r   r\   exposurer   )ranger&   r   r   
ValueErrorrR   rS   )rZ   r   r   jpr1   r2   r   s           r   test_invalid_argszTestGEE.test_invalid_args  s     q 	/AAAaDHHQqTNE88QqT1I&DF!xx!~F8%'XXb\z"!#"vz* /t.v./ /	// /s   *CC	c                 v   t        d      \  }}}t        j                  t        |            }t	        |      }|D ]1  }t        j
                  ||k(        }t        t        |            ||<   3 t        j                         }t        j                  d      }	t        j                  |||||	      }
|
j                         }t        j                  ||||||	      }|j                         }t        |j                  |j                  d       t        |j!                         |j!                         d       y )Ngee_logistic_1.csvFgridrx   r   r   rx   r   r   decimal)r3   r&   r   r   setflatnonzeror   r   r   r   AutoregressiverR   rS   rT   r   r6   standard_errors)rZ   r1   r2   r0   Tidxr   jjrx   vamd1mdf1md2mdf2s                 r   test_default_timezTestGEE.test_default_time  s    '';<tU HHSZ %j 	$B,B3r7OAbE	$ ""$&&E2ggeT5BGwwyggeT5q!#%wwyDKKa@D002 002A	?r   c           	         t        d      \  }}}t        j                  t        |            }t	        |      }|D ]1  }t        j
                  ||k(        }t        t        |            ||<   3 t        j                         }t        j                         }	t        j                         }
t        j                  d      }g dg dg dg}g dg dg d	g}t        |
|	|f      D ]  \  }}t        j                  ||||||      }|j!                         }t#        |      t#        |      k7  sHt%        |j&                  ||   d
       t%        |j)                         ||   d
        t        j*                  |d d d f   |d d d f   |d d dd f   fd      }t-        j.                  |      }ddgt1        |j2                  d   dz
        D cg c]
  }d|dz   z   c}z   |_        t        |
|	f      D ]s  \  }}t        j                  j7                  dd|||      }|j!                         }t%        |j&                  ||   d
       t%        |j)                         ||   d
       u y c c}w )Nr   Fr   )gg) ?gv3?gi+8Fg?)gi`dS?grX?gfgxcR[n?)g~Xs?g ?gOg g˽?)gGiWK?gnsEW?g
Z?gY!|)?)g<3C?g~$.?g[r></?g-V*?)g4ViI?g UZ?g~z	.t?g5	9?r   r   r   r   YIdX%dY ~ X1 + X2 + X3r   )r3   r&   r   r   r   r   r   r   r   r   r   r   r   	enumeraterR   rS   rT   idr   r6   r   r)   r7   r   r   r+   columnsr   )rZ   r1   r2   r0   r   r   r   r   rx   vevir   cfser   vmdmdfDr   s                       r   test_logisticzTestGEE.test_logistic  sY   F '';<tU HHSZ %j 	$B,B3r7OAbE	$ ""$$$&$$&&&E2444	5555	6 r2rl+ 	/DAqeQ:B&&(C!u2#CJJ1qA#C$7$7$92a5,-/	/ NNE!T'NE!T'NDABKH !#LLO$M.3DJJqMA4E.F%H)* &+a!e_ %H H	r2h' 	+DAq%%&8$-3 & CB&&(C

BqE1= 3 3 5r!u()+	+%Hs   I,c                    g d}g dg dg dg}t         j                  j                  d       d}d}d}t        j                         }d	D ]  }t        j
                  |      d d d f   t        j
                  |      d d d f   z
  }t        j                  |      }||z  }	t         j                  j                  |	      }
g }g }g }t        |      D ]  }t         j                  j                  ||f
      }|j                  |       |j                  d      }t        j                  |
t         j                  j                  |
            }|j                  ||z          |j                  |t        j                  |      z          t        j                  |      }t        j                  |      }t        j                  |d      }t!        j"                  d      }t%        j&                  |||||      }|j)                         }t+        |j,                  ||dz
            t+        |j.                  ||dz
             y )N)r   gD?g$ĸ?)g(P8yI?gPiޒ?g6s?)g1?gc?gB?)g9k"?g0E?gK13?iHor         ?rD   )r   r   rD   rE   r   r   r   Fr   r   )r&   rL   rM   r   GaussianrP   abslinalgcholeskyr   rN   appendsumdotr*   r)   r   r   rR   rS   rT   r   
dep_paramsr6   )rZ   dep_params_trueparams_true	num_groupar_paramr   gagsizeixcmatcmat_rr1   r2   r\   ixexpvalerrorsarr
  r  s                        r   test_autoregressivezTestGEE.test_autoregressive  s   =;:;= 			y!	  	DE5!!T'*RYYu-=dAg-FFBBr>DYY''-FEDF9% 2II$$5!*$5Aq		(8(8e(8(DEVf_-a"''%.012 NN5)E^^F+F>>$Q/D**6BfRBGB&&(Cuqy/IJ

K	,BC5	Dr   c                    t        j                         }t        d      \  }}}t        j                         }t        j                  |||d ||      }|j                         }t        t        j                  ||j                        |j                         t        |t        j                  ||j                        z
  |j                         y )Ngee_linear_1.csv)r   r  r3   r   r   rR   rS   rT   r   r&   r  r6   r9   r:   )rZ   rx   r1   r2   r0   r  r
  r  s           r   test_post_estimationzTestGEE.test_post_estimationI  s    ""$&'9:tU$$&WWUD%vr:ffhBFF44,,	.EBFF4$<<II	'r   c           
         t         j                  j                  d       d}t         j                  j                  |df      }|d d df   |d d df   z   |d d df   z   }|dt         j                  j                  |      z  z  }t        j                  t        j
                  |dz        t        j                  d            }t        j                  g d	g      }t        j                  d
g      }t        j                         }t        j                         }t        j                  |||||||f      }	|	j                         }
t        |
j!                         d   d       t        |
j!                         d   d       t        j                  g d	g      }t        j                  dg      }t        j                         }t        j                         }t        j                  |||||||f      }|j                         }t        |j!                         d   d       t        |j!                         d   d       t         j                  j                  |df      }t        j                  ddgg      }t        j                  d
g      }t         j"                  d   }t%        d      D ]  }|d d df   d|dz  z   |d d df   z  z   t         j                  j                  |      z   }t        j                         }t        j                         }t        j                  |||||      }|j                         }t        j                         }t        j                         }t        j                  |||||||f      }	|	j                         }
t        j&                  t        j(                  |t        j(                  |j+                         |                  }t        j(                  ||j,                        |z  }dt/        j0                  t        j2                  |             z  }|
j!                         d   }t5        t        j2                  ||z
        d        y )N      rG   rE   r   r   r   rD         ?r   r           rx   r   
constraint	statisticgL?p-valueg8o;?r.  gV@gBvw?r/  )r   r/  r   r  g      $@r   g{Gz?)r&   rL   rM   rN   rO   rP   r*   arrayr   r  r   r   rR   rS   rT   r   
score_testrQ   r   sqrtr  
cov_paramsr6   r   cdfr  r   )rZ   r[   r2   r1   r0   LRrx   r   r   res1r   res2fr!  mod0rslt0r  wald_zwald_pscore_ps                        r   test_scoretestzTestGEE.test_scoretestX  s    			tyyaV,QT
T!Q$Z'$q!t*4RYY%%1%---		!a%("''!*5 HHn%&HHbV""$$$&wwudE&"$!Q9xxzDOO-k:&	(DOO-i8(	* HHn%&HHcW""$$$&wwudE&"$!Q9xxzDOO-k:'	)DOO-i8(	* yyaV,HHq"gYHHbTNEE%Lr 	>AAJ#C-41:!==		  a ()E&&(F((*B775$f&(*DHHJE&&(F((*B775$f&(aV=D88:D266%*:*:*<a#@ABBVVAu||,r1F266&>/22Foo'	2GbffVg%56=#	>r   r   c                    t         j                  j                  d       d}t         j                  j                  |df      }t        j                  t        j
                  |dz        t        j                  d            }|d d ddgf   }|j                  d      dt         j                  j                  |      z  z   }t        j                  g dg d	g      }t        j                  d
      }t        j                  |||||f |             }	|	j                          t        j                  ||| |             }
|
j                         }dD ]  }t        j                  ||| |             }|r|j                          |j                  |      }t        |d   |	j                  d          t        |d   |	j                  d          t        |d   |	j                  d           y )Nr+  r,  rG   rE   r   rD   r   )r   r   r   r   )r   r   r   r   r   )r2  r   r   FTr3  r4  df)r&   rL   rM   rN   rO   rP   r*   r  r   r   rR   rS   rT   compare_score_testr   score_test_results)rZ   r   r[   r2   r0   exog_subr1   r:  r;  mod_lrmod_subres_subcall_fitmodscore_resultss                  r   test_compare_score_testzTestGEE.test_compare_score_test  s    			tyyaV,		!a%("''!*5Aq6	?Q!bii&6&6A&6&>">>JJl34HHQKeA$.L2

''%5Z\J++-% 	1H''%uFC	227;Mk*))+68  i()))46  d#))$/1	1r   c                 b   t         j                  j                  d       d}t         j                  j                  |df      }t        j                  t        j
                  |dz        t        j                  d            }|d d ddgf   }|j                  d      dt         j                  j                  |      z  z   }t        t              5  t        j                  |||t        j                               }|j                         }t        j                  |||t        j                               }|j!                  |       d d d        t        t              5  t        j                  |||t#        j$                         	      }|j                         }t        j                  |||t#        j&                         	      }|j!                  |       d d d        t)        t*              5  t        j                  |||      }|j                         }t        j                  |dd
 |d d
d d f   |dd
       }|j!                  |       d d d        t        t              5  t         j                  j-                  |      }	t        j                  ||||	      }|j                         }t        j                  |||      }|j!                  |       d d d        t/        j0                  t              5  t         j                  j-                  |      }	t        j                  |||      }|j                         }t        j                  |||      }|j!                  |       d d d        y # 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr+  r,  rG   rE   r   rD   r   r   rw   r   r   )r&   rL   rM   rN   rO   rP   r*   r  r	   UserWarningrR   rS   r   r   rT   r   rH  r   r  r   r   	Exceptionuniformpytestwarns)
rZ   r[   r2   r0   rJ  r1   rL  rM  rO  ws
             r    test_compare_score_test_warningsz(TestGEE.test_compare_score_test_warnings  s   
		tyyaV,		!a%("''!*5Aq6	?Q!bii&6&6A&6&>">> +& 	,ggeXu)3)@)@)BDGkkmG''%u%/%<%<%>@C""7+	, +& 	,ggeXu%-%6%6%8:GkkmG''%uX5E5E5GHC""7+	, 9% 	,ggeXu5GkkmG''%#,TcT1WuQs|DC""7+		, +& 	,		!!q!)AggeXua@GkkmG''%u-C""7+	, \\+& 	,		!!q!)AggeT51GkkmG''%u-C""7+	, 	,A	, 	,	, 	,	, 	,	, 	,	, 	,sA   A8M2!A8M?0AN&A2N9A0N%2M<?N	NN"%N.c           
         t         j                  j                  d       d}t         j                  j                  |df      }|d d df   |d d df   z   |d d df   z   }|dt         j                  j                  |      z  z  }t        j                  t        j
                  |dz        t        j                  d            }t        j                  g d	g      }t        j                  d
g      }t        j                         }t        j                         }dD ]  }	t        j                  |||||||f      }
|
j                  |	      }|j                  |	       t!        |j"                  j$                  t         j&                  d          t!        |j(                  j$                  t         j&                  d          |	dk(  st!        |j*                  j$                  t         j&                  d           y )Nr+  r,  rG   rE   r   r   r   rD   r-  r0  )robustry   bias_reducedr1  r   )rG   rG   r\  )r&   rL   rM   rN   rO   rP   r*   r5  r   r  r   r   rR   rS   rT   r   r   
cov_robustr+   rQ   	cov_naivecov_robust_bc)rZ   r[   r2   r1   r0   r:  r;  rx   r   r{   r]   r^   s               r   test_constraint_covtypezTestGEE.test_constraint_covtype  s   
		tyyaV,QT
T!Q$Z'$q!t*4RYY%%1%---		!a%("''!*5HHn%&HHbV""$$$&9 	IHGGE4v')q!f>EYYY1F""H"5F--33RUU4[AF,,22BEE$K@>) 4 4 : :BEE$KH	Ir   c           	         t        j                         }t        d      \  }}}t        j                         }t        j
                         }g dg dg}g dg dg}t        ||f      D ]i  \  }	}
t        j                  |||d ||
      }|j                         }t        |j                  ||	   d       t        |j                         ||	   d       k t        j                  |d d d f   |d d d f   |d d dd f   fd	      }t        j                   |      }d
dgt#        |j$                  d   dz
        D cg c]
  }d|dz   z   c}z   |_        t        ||f      D ]s  \  }	}
t        j                  j)                  dd|||
      }|j                         }t        |j                  ||	   d       t        |j                         ||	   d       u y c c}w )Nr(  )g:AghG{C?g-.1Xgihj?)gw6'g=֥?g7guYd?)gBuLhȐ?ggvd_?gRJe?gR!Iz?)g>G5?grz^?g`Z?ga%P?r   r   r   r   r   r   r   r  r   )r   r  r3   r   r   r   r  rR   rS   rT   r   r6   r   r&   r)   r7   r   r   r+   r  r   )rZ   rx   r1   r2   r0   r  r  r  r  r   r	  r
  r  r  r   s                  r   test_linearzTestGEE.test_linear   s   8 ""$&'9:tU$$&$$&556767
 r2h' 	,DAqeT61=B&&(C

BqE2> 3 3 5r!u(*,		, NNE!T'NE!T'NDABKH !#LLO$M.3DJJqMA4E.F%H)* &+a!e_ %H H	r2h' 	,DAq%%&8$-3 & CB&&(C

BqE2> 3 3 5r!u(*,	,%H   ;Gc                    t        j                         }t        j                  j	                  d       t        j                  j                  d      }d|d d df<   t        j                  |t        j                  d         t        j                  j                  d      z   }t        j                  t        j                  d      t        j                  d	         }t        j                         }t        j                         }t        j                  g d
g   }t        j                  d   }t        ||f      D ]N  \  }	}
t        j                  |||d ||
||f      }|j!                         }t#        |j$                  d   dd       P y )NrC   ),  rG   rE   r   r   )r   r   r   皙?re  r   r   r   r   )r   r   r   r   )r   )r2  rD   r   r   )r   r  r&   rL   rM   rN   r  rQ   rO   rP   r   r   r   r  rR   rS   rT   r   r6   )rZ   rx   r2   r1   r0   r  r  r:  r;  r   r	  r
  r  s                r   test_linear_constrainedzTestGEE.test_linear_constrainedB  s,   ""$
		uyyX.QT
tRUU<01II#&'		#g7$$&$$&EE<.!EE"Jr2h' 	>DAqeT61%&F,B&&(C

1q"=		>r   c           	         t        j                         }t        d      \  }}}g }t        |j                  d   dz        D ],  }|j                  dgdz         |j                  dgdz         . t        j                  |      d d d f   }t        j                         }t        j                  |||d ||      }|j                         }	t        j                  d   }
t        j                  d   }t        |	j                  |
d	       t        |	j!                         |d	       t        j"                         }t        j                  |||d |||
      }|j                  |	j                        }t        j                  d   }
t        j                  d   }t        |j                  |
d	       t        |j!                         |d	       |j                  j%                         }t'        |j(                  t        j                  d   dd       y )Nzgee_nested_linear_1.csvr   r   r   r   )gM 6cſgSQ%?g]xҀI# gIT4"?)g_Ay?g(Ǥ?g#Ҥ?gK2W?r   r   )dep_datarJ   )glQſg%נqY?g`!) g;8-?)g]@x?gv'+՝?g:@I?g){l?)g8j?gތ?g>>tA?r   r   r   )r   r  r3   r   r+   extendr&   r5  r   r   rR   rS   rT   rQ   r   r6   r   NestedrY   r   Variance)rZ   rx   r1   r2   r0   group_nr!  dpr
  r   r  r  ner   smrys                  r   test_nested_linearzTestGEE.test_nested_linearY  s   ""$&'@AtUu{{1~+, 	&ANNA519%NNA519%	& ((7#AtG,$$&WWUD%vr:vvx UUDEUUDEDKKQ7D002B$%	'  WWUD%vr%'vv4;;v/ UUEFUUDEDKKQ7D002B$%	' &&(MMEE./D	"r   c                    t         j                  j                  d       d}t        j                  t        j                  |dz        t        j
                  d            j                  t              }t        j                  t        j                  |dz        t        j
                  d            j                  t              }t        j                  t        j                  |dz        t        j
                  d            j                  t              }t         j                  j                  |dz        }dt         j                  j                  |dz        z  }dt         j                  j                  |dz        z  }||   ||   z   ||   z   }|d	t         j                  j                  |      z  z  }t        j                  ||||d
      }	t        j                  j                  dddt        j                         |	      }
|
j!                         }|j                  j#                         }t%        |j&                  t         j(                  d   dd       y )Ni  i'  r   2   r   rE   r   rD   r  )y	TheGroupsgroups1groups2zy ~ 1rw  z0 + groups1 + groups2)r\   rj  r   r   )g-y<-?gPn@gvӂ!@g⪲?r   rk  )r&   rL   rM   rO   rP   r*   astypeintrN   r7   r   rR   rS   r   r   rm  rT   rY   r   rn  rQ   )rZ   r[   r\   rx  ry  groups_e	groups1_e	groups2_erv  rG  r]   r^   rr  s                r   test_nested_pandaszTestGEE.test_nested_pandas  s   
		t 18,bggcl;BB3G ''"))AG,bggbk:AA#F''"))AG,bggbk:AA#F 99##c#2		((a2g(66			((a2g(66	Vy11Ig4FF	S299###+++\\&-'C D $$W[.E0:0A0A0C*, % .    ((*MMEE89D	"r   c                    t        j                         }t        dd      \  }}}t        j                  d      }t        j                  |||d ||      }|j                         }t        j                  d   }t        |j                  |d       t        j                  d   }	t        |j                  |	d       t        t        |      t
        j                         t        t        |j                         t
        j"                         y )	Ngee_ordinal_1.csvFr-   ordinalg3xMz?gfE#D?g3ٿgI(CvZg]]>'?gvj?g1Ҥw?gP4r   r   )gTwܻ?g*vq?g>2?g%q[?g?gy?ox?g[${?gj۵?)r   r   r3   r   GlobalOddsRatiorR   
OrdinalGEErT   r&   rQ   r   r6   rX   r   typeOrdinalGEEResultsWrapperr<   OrdinalGEEResults)
rZ   rx   r1   r2   r\   r   rO  rsltr  r  s
             r   test_ordinalzTestGEE.test_ordinal  s    ""$'(;.35tV ''	2nnUD&$Cwwy UU C DDKKQ7 UU A BDHHb!4 	T$Z!=!=>T$--(#*?*?@r   c                    t         j                  j                  d       d}t         j                  j                  dd|      }t        j                  |      }t         j                  j                  |      }t         j                  j                  |      }t        j                  ||||d      }t        j                  j                  d||      }|j                          t        j                         5  t        j                  d	       t        j                  j                  d||      }|j                          d d d        y # 1 sw Y   y xY w)
N  rB   r   rD   rE   )rv  r\   x1x2zy ~ 0 + x1 + x2r   ignore)r&   rL   rM   randintrP   rN   r7   r   rR   r  r   rT   warningscatch_warningssimplefilterr   )rZ   r[   rv  r\   r  r  rG  r]   s           r   test_ordinal_formulazTestGEE.test_ordinal_formula  s    			sIIaA&1YY1%YY1%\\V2RHI++,=vB+O		$$& 	!!(+NN//0A657 0 9EIIK		 	 	s   8AE		Ec                    t         j                  j                  d       d}t         j                  j                  dd|      }t        j                  t        j
                  |dz        t         j                  d         }t         j                  j                  |df      }t        j                         }t        j                  ||||	      }|j                          y )
Nr  rB   r   rD   r   r   r   rE   r   )r&   rL   rM   r  rO   rP   rQ   rN   r   OrdinalIndependencerR   r  rT   )rZ   r[   rv  r\   r"  odimodel1s          r   test_ordinal_independencez!TestGEE.test_ordinal_independence  s     			sIIaA&1q5)255;7II1a&),,.1f=

r   c                 <   t         j                  j                  d       d}t         j                  j                  dd|      }t        j                  t        j
                  |dz        t         j                  d         }t         j                  j                  |df      }t        j                         5  t        j                  d	       t        j                         }t        j                  ||||
      }|j                          d d d        y # 1 sw Y   y xY w)Nr  rB   r   rD   r   r   r   rE   r  r   )r&   rL   rM   r  rO   rP   rQ   rN   r  r  r  r   NominalIndependencerR   r   rT   )rZ   r[   rv  r\   r"  nmir  s          r   test_nominal_independencez!TestGEE.test_nominal_independence  s     			sIIaA&1q5)255;7II1a&)$$& 	!!(+002C^^Aq&SAFJJL		 	 	s   6ADDc                 4   t        j                         }t        dd      \  }}}t        j                  d      }t        j                  |||d ||      }|j                         }|j                         }	t        t        |	t        j                        d       y )Nr  Fr  r  T)r   r   r3   r   r  rR   r  rT   r   r   r5   r   r   )
rZ   r   rx   r1   r2   r\   r   rO  r  r   s
             r   test_ordinal_plotzTestGEE.test_ordinal_plot  s     ""$'(;.35tV ''	2nnUD&$Cwwy$$&ZSZZ0$7r   c                 D   t        dd      \  }}}t        j                         }t        j                  ||||      }|j                         }t        j                  d   }t        j                  d   }t        |j                  |dd       t        |j                         |dd       t        j                  d	      }t        j                  ||||      }	|	j                  |j                  
      }
t        j                  d   }t        j                  d   }t        |
j                  |dd       t        |
j                         |dd       t        t        |      t        j                         t        t        |j                        t        j                          y )Ngee_nominal_1.csvFr  r   )gfy?g؀q?g鷯gg
ݿ)gU%Ӷ?gŲ?grG ,:?gV!̊43?r   r   nominalrJ   )g=$?g歺Ք?go[tTgْU)g*V?g^?g=zGb?g_`F?)r3   r   r   rR   r   rT   r&   rQ   r   r6   r   r  r   r  NominalGEEResultsWrapperr<   NominalGEEResults)rZ   r1   r2   r\   r   r   r   cf1se1r   r   cf2se2s                r   test_nominalzTestGEE.test_nominal  sC   '(;.35tV $$&~~eT6bA
 ee<=eeBCc4@--/4dK ''	2~~eT6bAell3 ee<=eeBCc4@--/4dK 	T%[#">">?T%..)3+@+@Ar   c           	         t        j                         }t        d      \  }}}t        j                         }t        j
                         }g dg dg}g dg dg}t        ||f      D ]i  \  }	}
t        j                  |||d ||
      }|j                         }t        |j                  ||	   d       t        |j                         ||	   d       k t        j                  |d d d f   |d d d f   |d d d	d f   fd	
      }t        j                   |      }ddgt#        |j$                  d	   d	z
        D cg c]
  }d|d	z   z   c}z   |_        t        ||f      D ]s  \  }	}
t        j                  j)                  dd|||
      }|j                         }t        |j                  ||	   d       t        |j                         ||	   d       u y c c}w )Ngee_poisson_1.csv)g쨢gBϫgBqK
?g'p?gisg<m޿)gԿ7(g	AͬgJQh(E?gs3I?gurxmgQv޿)gaPlL?g(-O ?g4ɽ?gxȢ?gG5?gho2?)g<pgF?gK?gi?gp?gȵp(S?g!:S%X?r   r   r   r   r   r   r   r   Y ~ X1 + X2 + X3 + X4 + X5r   )r   r   r3   r   r   r   r  rR   rS   rT   r   r6   r   r&   r)   r7   r   r   r+   r  r   )rZ   rx   r1   r2   ro  r  r  r  r  r   r	  r
  r  r  r   s                  r   test_poissonzTestGEE.test_poisson   s   : !!#()<=tW$$&$$&99:778 r2h' 	+DAqgtVQ?B&&(C

BqE1= 3 3 5r!u()+		+ NNE!T'NGAtG,< ABK)/02LLO$M.3DJJqMA4E.F%H)* &+a!e_ %H H	r2h' 	+DAq%%&BD&'1 & FB&&(C

BqE1= 3 3 5r!u()+	+%Hrc  c                 L   t         j                  j                  d       d}t         j                  j                  |df      }t         j                  j                  |      }t        j                  t        j
                  |dz        t        j                  d            }d|dd d	|d
d t        j                  |||      }|j                         }t         j                  j                  |      }||   }||d d f   }	||   }
t        j                  ||	|
      }|j                         }t        |j                  |j                         t        |j                  |j                         i }dd l}t        t!        |            D ]  \  }}|j"                  ||dz    ||<    |D cg c]  }||   	 }}t        j                  |||      }|j                         }t        |j                  |j                         t        |j                  |j                         y c c}w )N   rB   r   rE   rG   rD   ru   r   r   "   $   )r\   r   )r&   rL   rM   rN   rO   rP   r*   rR   rS   rT   permutationr   r6   tvaluesstringr  r   ascii_letters)rZ   r[   r"  rv  r\   r  result1r  y1r  rx  model2result2mpr  r   r   ry  model3result3s                       r   test_groupszTestGEE.test_groupsh  s    			sII1a&)II!$ 1q5)2771:6qr"Af-**, YY""1%rUr1uX*R0**,79 c&k* 	2DAq((1q51BqE	2"()Q2a5))Ag.**,79 *s   *H!c                 N   t        j                         }t        j                         }t        j
                  j                  d       t        j
                  j                  d      }t        j
                  j                  d      }t        j
                  j                  d      }t        j
                  j                  d      }t	        j                  t        d      t	        j                  d            }t        j                  ||||d      }t        j                  j                  d||||      }	|	j!                         }
t"        j$                  j                  d|	      j!                         }|j&                  }t)        |j*                  |
j*                  d
       |
j-                  d      }t)        |j.                  |d
       |
j*                  t	        j0                  t	        j2                  |
j4                              z  }t)        ||j6                  d
       y )NrC   r   rE   r   r   r   X1X2X3r  r   r  r   r   ry   r   )r   r   r   r  r&   rL   rM   rN   rO   r   r*   r7   r   rR   rS   r   rT   lmOLSr<   r   r6   r   rX   r7  diagr^  r  )rZ   vsrx   r   r  r  r  r\   r  r
  r  olsr  naive_tvaluess                 r   test_compare_OLSzTestGEE.test_compare_OLS  s   
 $$&""$
		uII#&YY3'YY3'YY3'RWWQZ0LLq"B?@WW!!"4fa)/B " @ffhff!!"41!=AAC llCJJ

B?  ' 2CGGR4

RWWRWWS]]-C%DDM3;;Cr   c                    d}t         j                  j                  d       t         j                  j                  |      }t         j                  j                  |      }t        j                  t        j
                  |df      |d d d f   fd      }t         j                  j                  |      }t        j                  t        d      t        j
                  d            }t        j                  ||||d      }t        j                  d	
      }t        j                         }	t        j                   |||||	|      }
|
j#                         }t        j                   j%                  d||||	|      }|j#                         }t        j                   j%                  d||d|	|      }|j#                         }t        j                   j%                  dd|||	|      }|j#                         }t        j                   j%                  dd|d|	|      }|j#                         }t'        |j(                  |j(                  d       t'        |j(                  |j(                  d       t'        |j(                  |j(                  d       t'        |j(                  |j(                  d       t+        |       y )Nr   rC   rE   r   r   r   r   )r   r  Timer\   Fr   r   zY ~ X1r  r\   ru   r   )r&   rL   rM   rN   r)   r*   rU  rO   r   r7   r   r   r   r   r  rR   rS   rT   r   r   r6   r>   )rZ   r[   r   r  matr  r\   r   r   rx   r   r   r   r   mod3rslt3mod4rslt4mod5rslt5s                       r   test_formulaszTestGEE.test_formulas  s    
		uII!$YY1%nnbggq!for!T'{;!Dyy  a (RWWQZ0||!2tvNO&&E2""$wwq#vD"$&
ww##Hfd+1b $ B
ww##Hfd+1b $ B
ww##Hh4+1b $ B
ww##Hh6+1b $ B
ELL%,,BELL%,,BELL%,,BELL%,,Ber   c                 P   t        j                         }t        j                         }t        j
                  j                  d       dt        j
                  j                  d      dk  z  }t        j
                  j                  d      }t        j
                  j                  d      }t        j
                  j                  d      }t        j
                  j                  ddd      }t        j                  ||||d      }t        j                  j                  d||||	      }	|	j                         }
t        j                   j                  d|
      }|j                  d      }t#        |
j$                  j&                  |j$                  j&                  d       y )NrC   r   r   rE   r   rG   r  r  r   r  Fdispr   r   )r   r   r   r   r&   rL   rM   rN   r  r7   r   rR   rS   r   rT   discreteLogitr   r6   r   rZ   r  rx   r   r  r  r  r\   r  r   r   r   r   s                r   test_compare_logitzTestGEE.test_compare_logit  sD   $$&""$
		u!!s!+a/0YY3'YY3'YY3'""1ac"2LLq"B?@ww##$6+1b $ B
~~**+=A*Fe$ELL//1D1D$&	(r   c                    t        j                         }t        j                         }t        j
                  j                  d       t	        j                  t	        j                  t        j
                  j                  d                   }t        j
                  j                  d      }t        j
                  j                  d      }t        j
                  j                  d      }t        j
                  j                  ddd      }t        j                  ||||d      }t        j                  j!                  d||||      }	|	j#                         }
t$        j                  j!                  d|	      }|j#                  d
      }t'        |
j(                  j*                  |j(                  j*                  d       y )NrC   r   rE   r   rG   r  r  r   r  Fr  r   r   )r   r   r   r   r&   rL   rM   ceillogrU  rN   r  r7   r   rR   rS   r   rT   r  r   r6   r   r  s                r   test_compare_poissonzTestGEE.test_compare_poisson  sQ   $$&!!#
		uGGRVVBII--3-7889YY3'YY3'YY3'""1ac"2LLq"B?@ww##$6+1b $ B
,,-?a,He$ELL//1D1D$&	(r   c                    d}t         j                  j                  d       t         j                  j                  |      }t         j                  j                  |      }t        j                  t        j
                  |dz        t         j                  d         }t         j                  j                  dd|      }t         j                  j                  d||z   z  |z   |      }t        j                  |||||d      }d	}t        j                  j                  |||t        j                         d
      }	|	j                  g d      }
t!        |
j"                  d       |
j%                         }|
j%                  |j&                        }|
j%                  |ddg   |j&                        }|
j%                  |ddg   d|j&                  z        }|
j%                  d|j&                  z        }t)        ||       t)        ||       t)        |||j&                  z          t)        |||j&                  z          t         j                  j                  d      }t         j                  j                  d      }t        j                  ||d      }|
j%                  |      }t        j*                  |
j,                        }|d   |d   |z  z   |d   |z  z   }t)        ||       y )Nru  i  rE   r   r   r   皙?)r   r  r  r\   r   Y ~ X1 + X2r   rx   r   )r   r  r  rJ   Tr   r  r  )r2   r   r   r   )r  r  )r2   )r&   rL   rM   rN   rO   rP   rQ   rU  r7   r   rR   rS   r   r   r  rT   r   	convergedpredictr   r   r   r6   )rZ   r[   r  r  r\   r   r   r   fmlr]   r^   pred1pred2pred3pred4pred5x1_newx2_newnew_exogpred6r6   pred6_corrects                         r   test_predictzTestGEE.test_predict  sf   
		tYY1%YY1%1q5)255;7""1aa"0IISBG_v5A>||!2R6'-/ 0 $$S&$,4,=,=,?,4 % 6 6V%%t, dkk2D$$6t{{KD$$6q4;;Oa$++o6u%u%ut{{23ut{{23!!r!*!!r!*<<vV <=H-FMM*q	F1I$66V9KK}-r   c                 t   t         j                  d   }t         j                  d   }t         j                  d   }t        j                  |      }t	        j
                  dd      }t        j                  ||||      }|j                         }|j                  t        j                  d      z  }t        |j                  t         j                  d	   d
      d
   j                         d       t        |j                  t         j                  d   dd       t        |t         j                  d   dd       y )NrG   r   rD   r   rG   r   r   r   ru   rD   r   g      @r   rD   r   rG   rD   r   r   rG   r   r   rD   r   r   r   r   r   r   r   r   r   r   rD   rD   rD   r   Tmax_lagr   r   UUUUUU?rg  r   gmy@gim@g=פ6̣r   r   g3?g	R?)r&   rQ   toolsadd_constantr   
StationaryrR   rS   rT   rX   r7  r   covariance_matrixr  r6   )rZ   r1   r2   r0   csr]   r^   r  s           r   test_stationary_gridzTestGEE.test_stationary_grid6  s    9:uu7889!!$'""148tUr:ZZ"'''**,,RUU7^Q?BFFH*	,
 	ruu,(.48t	EBEE"67dNr   c           
         t         j                  d   }t         j                  d   }t         j                  d   }t         j                  d   }t        j                  |      }t	        j
                  |||t        j                  dd            }|j                         }|j                  t        j                  d	      z  }t        |j                  t         j                  d
   dd       t        |t         j                  d   dd       t         j                  d   d d d f   }t	        j
                  ||||t        j                  dd            }|j                          y )Nr  r  )r   r   r   r   r   r   r   r   r   r   r   r   r  r   Fr  r   r  r  r   r   r  )r   r   rD   r   r   rD   r   r   rD   r   r   r   rG   )r   r   )r&   rQ   r  r  rR   rS   r   r  rT   rX   r7  r   r6   )rZ   r1   r2   r   r0   r]   r^   r  s           r   test_stationary_nogridzTestGEE.test_stationary_nogridK  s)    9:uu78uu7889!!$'tU#-#8#8>C$EF ZZ"'''** 	ruu,(.48t	EBEE"67dN uu78DAtU#-#8#8>C$EF 			r   c           	         d}t         j                  j                  d       t         j                  j                  |      }t         j                  j                  |      }t        j                  t        j
                  d      t         j                  d         }t         j                  j                  dd|      }t         j                  j                  dd|      }t         j                  j                  d||z   z  |z   t        j                  |      z   |      }t        j                  ||||||d	      }d
}	t        j                  j                  |	||t        j                          dd      }
|
j#                         }t%        |j&                  d       |j)                         }|j)                  |d         }|j)                  |d         }|j)                  |d   |d         }|j)                  |dd  |d   dd  |d   dd        }|j)                  |j*                  j,                  dd  |d   dd  |d   dd  d      }t/        ||       t/        ||       t/        ||       t/        |dd  |       t/        |dd  |       y )Nru  rC   rE      r   r   r   r  r   r  r  r\   r   r   r  r   r   )rx   r   r   Tr  )r   )r   r   ir2   r   r   F)r2   r   r   	transform)r&   rL   rM   rN   rO   rP   rQ   rU  poissonr  r7   r   rR   rS   r   r   r   rT   r   r  r  r]   r2   r   )rZ   r[   r  r  r\   r   r   r   r   r  r]   r^   r  r  r  r  r  r  s                     r   test_predict_exposurezTestGEE.test_predict_exposurei  se   
		uYY1%YY1%2d4""1aa"099$$Q$2IIcR"Wo6 ffX./56  8||!2R6'-8E F $$S&$,4,<,<,>,4z % K V%%t, d8n5Z(89>D,<  >DJ&*8nST&:(,Z(8(>  @ FLL$5$5cd$;&*8nST&:(,Z(8(>).  0 	u%u%u%cdU+cdU+r   c                    d}t         j                  j                  d       t        |      D cg c]?  }dt         j                  j	                         t         j                  j	                         gA }}t        t        j                  t        j                  d      t         j                  d               }t        t         j                  j                  dd|            }t        t         j                  j                  dd|            }t        |||      D 	cg c]J  \  }}}	t         j                  j                  d|d   |d   z   z  |z   t        j                  |	      z         L }
}}}	t        j                  |
||t        j                          ||	      }|j#                         }|j%                         }|j%                  |||
      }t'        ||       y c c}w c c}	}}w )Nru  rC   r   r  r   r   rE   r  )r\   rx   r   r   r  )r&   rL   rM   r   rN   rg   rO   rP   rQ   rU  zipr
  r  rR   rS   r   r   rT   r  r   )rZ   r[   _r2   r\   r   r   exog_ioffset_i
exposure_ir1   r]   r^   r  r  s                  r   test_predict_exposure_listsz#TestGEE.test_predict_exposure_lists  s   
		uEJ1XNBII$$&		(8(8(:;NNbggbiimRUU4[9:bii''11'56		))!QQ)78
 14D&(0K	
 
 -* IIvay6!9,-8266*;MM
 
 ##%
  D(Ku%1 O
s   AG AG%c           	         d}t         j                  j                  d       t         j                  j                  |      }t         j                  j                  |      }t        j                  t        j
                  d      t         j                  d         }t         j                  j                  dd|      }t        j                  |      }t         j                  j                  d||z   z  d|z  z   |      }t        j                  ||||||d	      }d
}	t        j                  j                  |	||t        j                          d      }
|
j#                         }t%        |j&                  d       t        j                  j                  |	||t        j                          |      }|j#                  |j(                        }t+        |j(                  |j(                         t%        |j&                  d       t        j                  j                  |	||t        j                          |      }|j#                  |j(                        }t+        |j(                  |j(                         t%        |j&                  d       t        j                  j                  |	||t        j                          d      }|j#                  |j(                        }t+        |j(                  |j(                         t%        |j&                  d       t        j                  j                  |	||t        j                          dd      }|j#                         }t%        |j&                  d       t        j                  j                  |	||t        j                          d|z        }|j#                  |j(                        }t+        |j(                  |j(                         t%        |j&                  d       y )Nru  rC   rE   r  r   r   r   r  r  r  r   r  TrJ   )rx   r   r   )rx   r   r   )r&   rL   rM   rN   rO   rP   rQ   rU  expr
  r7   r   rR   rS   r   r   r   rT   r   r  r6   r   )rZ   r[   r  r  r\   r   r   r   r   r  r  r  r  r  r  r  model4result4model5result5model6result6s                         r   test_offset_formulazTestGEE.test_offset_formula  s    
		uYY1%YY1%2d4""1aa"066&>IIcR"WoF
:C||!2R6'-8E F %%c64-5-=-=-?-5 & 7 **,W&&-%%c64-5-=-=-?-3 & 5 **'..*97W&&-%%c64-5-=-=-?/7 & 9 **'..*97W&&-%%c64-5-=-=-?/9 & ; **'..*97W&&-%%c64-5-=-=-?/9( & L **,W&&-%%c64-5-=-=-?-.Z & 9 **'..*97W&&-r   c                    t        j                         }t        j                         }t        j
                  j                  d       d}t        j
                  j                  |      }t        j
                  j                  |      }t        j
                  j                  |      }t	        j                  t	        j                  d      t        j                  d         }t        j                  |||d      }t        j                  j                  d||||      }	|	j!                         }
|
j#                  d	d
d      }t%        t'        |      d       t%        |D cg c]  }|j                   j(                   c}dd
g       t%        |D cg c]$  }t	        j*                  |j,                        d	   & c}ddg       y c c}w c c}w )NrC   r   rE   ru  r   )r   r  r  r  r   r   r  r   r0  g&(?g&J?)r   r   r   r  r&   rL   rM   rN   rO   rP   rQ   r7   r   rR   rS   r   rT   params_sensitivityr   r   r  r   r6   )rZ   r   rx   r[   r   r  r  r\   r  rO  r  psr"  s                r   test_sensitivityzTestGEE.test_sensitivity  sd   $$&""$
		uII!$YY1%YY1%2d4LLq"56gg""=&!*0R # Awwy$$QQ/CGQ'bAQ\\44A #J	( 	bARZZ1!4A/1DE	G	 B Bs   "G)Gc                 8   t         j                  j                  d       t         j                  j                  d      }t         j                  j                  d      }d|dddf<   t        j                  t        j
                  d      t        j                  d	            }d
|dd i }g d}t        d	      D ]  }i ||<   |d
k  r9||   t         j                  d   z   ||   t         j                  d   z   f||   d<   n8||   t         j                  d   z   ||   t         j                  d   z   f||   d<   |d
k  r0t        j                  d	d      \  }}||   |z   ||   |z   f||   d<   t        j                  dd      \  }}||   |z   ||   |z   f||   d<    t        j                         }	t        j                  ||||	      }
|
j                         }dD ]  }t        j                  ||      }t        j                  ||||      }|j                         }|du rd\  }}nd\  }}t!        |j"                  |j"                  ||       t!        |j$                  |j$                  ||       t!        |j&                  |j&                  ||        y)z
        The Equivalence covariance structure can represent an
        exchangeable covariance structure.  Here we check that the
        results are identical using the two approaches.
        `  r   rE   )r   r   r   Nr   r   rG   rD   r   )r   rG   ru   r   )r   r   r   rD   )r   r   r   rD   rG   r   r   r   r/  ru   r   rF  )
return_covT)r}   r}   )MbP?r#  rk  )r&   rL   rM   rN   rO   rP   r*   r   rQ   tril_indicesr   r   rR   rS   rT   Equivalencer   r6   rX   r   )rZ   r1   r2   r\   pairsstartr   abexr  r  r"  ecr  r  r   r   s                     r   test_equivalencezTestGEE.test_equivalence   si    			t		  b )yyW-QT
1rwwqz2rs q 	;AE!H 1u$Qx"%%
*;;$Qx"%%
*;;=a  %Qx"%%0F*GG$Qx"%%0F*GGIa 1uq"-1$Qx!|U1X\:aq"-1$Qx!|U1X\:a#	;& $$&f<**,% 	PJ''*EBWWUD&R@FjjlG
 T!'
d'
dGNNGNN!%D2GKK4dKGMM7==t$O!	Pr   c                    t         j                  j                  d       t         j                  j                  d      }t         j                  j                  d      }d|d d df<   t        j                  t        j
                  d      t        j                  d            }d	|d
d  t        j                  t        j
                  d      t        j                  d            j                  t         j                        }|t         j                  j                  t        |               }t        j                  |d      }t        j                  ||||      }|j                          |j                   D ]f  }|j"                  |   }|j%                         D 	cg c]  }	t        |	d          }
}	t'        ||k(        }t)        t'        |
      ||dz   z  dz         h t+               }|j                   D ]Y  }|j"                  |   j%                         D ]7  }t-        |d   |d         D ]   \  }}||f}||vsJ |j/                  |       " 9 [ t        j                  |d      }t        j                  ||||      }t1        j2                         5  t1        j4                  d       |j7                  d       d d d        y c c}	w # 1 sw Y   y xY w)Nr!  ru  rE   )ru  r   r   r   r   r   rD      T)labelsr"  r   r   r  maxiter)r&   rL   rM   rN   rO   rP   r*   rz  int32r  r   r   r%  rR   rS   _pairs_from_labelsgroup_labelsr&  r   r  r   r   r  addr  r  r  rT   )rZ   r1   r2   r\   r/  eqr  r   r   r"  vlmixsr	  r(  r)  kys                    r   test_equivalence_from_pairsz#TestGEE.test_equivalence_from_pairs;  sU   
		t		  b )yyW-QT
1rwwr{3rs 1rwwr{3::288D		--c&k:;##6dCf< 	 $$ 	6AA%&XXZ0#ad)0B0FaK ACGQ!a%[1_5		6 e$$ 	 AXXa['')  !adO  DAqQBS=(=GGBK  	  ##6dCf<$$& 	"!!(+JJqJ!	" 	"! 1 	" 	"s   K
(KKN)8__name__
__module____qualname__r`   rq   r   r   rV  marksmoke
matplotlibr   r   r   r   r   r   r   parametrizer   r   r  r&  r)  rD  r   r   r   rQ  rY  r`  rb  rh  rs  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@   Z   s"   0&9PF(F* [[[[8  8E&C0* ZD428/Db [[TE4=1[[TE4=1/ 2 2/&?4S+r*DX':>x [[\J,C,C,6,C,C,E F!1F!1F/,bI,@,D>.'"R""HA4 [[ ( [[
 
 [[  [[[[8  8B>E+P(:T DD*X(0(0$.LO*<&,P&<5.nG49Pv)"r   r@   c                       e Zd ZdZd Zy)CheckConsistencyNc                 B   | j                   }|j                  | j                        }|j                  | j                  d      }|j                  | j                  d      }|j                          |j                          t	        |j
                  d       t	        |j
                  d       t	        |j
                  d       d}|d|j                  f|d|j                  f|d|j                  ffD ]  \  }}}t        j                  t        j                  |            }	t        |j                  |	|       |dk7  r*|j                  |      }	t        |j                  |	|       t        |j                         ||d	
       t        |j                   ||d	
        t#        |j                   |j                  u        t#        |j                   |j                  u        t#        |j                   |j                  u        t%        t&        |j                  d       y )NrJ   ry   )rK   r{   r\  r[  g:0yE>r~   r   g|=r   	robust_bc)rO  rT   rK   rY   r   r{   r]  r^  r_  r&   r7  r  r   rX   r   r8  cov_params_defaultr
   r   r   )
rZ   rO  
res_robust	res_naiveres_robust_bcr   resr{   covrX   s
             r   test_cov_typezCheckConsistency.test_cov_typek  s   hhWW$*;*;W<
GG):):%,  .	T->->)7   9 	 	Z(((3Y''1]++^< Xz'<'<=GZ%9%9:0K0KL%
 	P S(C
 ''"''#,'CCGGSt4>)  ///B48CNN,c5IC22CdO	P  	
--1F1FFG	,,	0C0CCD00++, 	- 	j#''K@r   )r<  r=  r>  rK   rN  rC  r   r   rE  rE  g  s    L,Ar   rE  c                   "    e Zd Zed        Zd Zy)TestGEEPoissonCovTypec                     t        d      \  }}}t        j                         }t        j                         }t        j                  |||d ||      | _        t        j                  g d      | _
        y )Nr  gڅ͝쨢gqIϫg}v]K
?g&&p?gtm^sgQ޿)r3   r   r   r   r   rR   rS   rO  r&   r5  rK   )clsr1   r2   ro  rx   r  s         r   setup_classz!TestGEEPoissonCovType.setup_class  sd      ))<=tW!!#$$&''%wfbA88 %K Lr   c                 ^   t        dd      \  }}}t        j                  |      }t        j                  |      }t        j                  |      }t	        j
                         }t        j                         }t        j                  |||d ||      }|j                         }t        |       y )Nr  Fr  )r3   r7   r8   r   r   r   r   r   rR   rS   rT   r>   )rZ   r1   r2   ro  rx   r  rO  r   s           r   test_wrapperz"TestGEEPoissonCovType.test_wrapper  s    ()</4 6tW		% ||D!))G$!!#$$&ggeT7D&"=	er   Nr<  r=  r>  classmethodrT  rV  rC  r   r   rP  rP    s    
L 
Lr   rP  c                       e Zd Zed        Zy)TestGEEPoissonFormulaCovTypec                    t        d      \  }}}t        j                         }t        j                         }t        j                  |d d d f   |d d d f   |d d dd f   fd      }t        j                  |      }ddgt        |j                  d   dz
        D cg c]
  }d|dz   z   c}z   |_        t        j                  j                  dd|||      | _        t        j                   g d	      | _        y c c}w )
Nr  r   r   r   r   r   r  r   rR  )r3   r   r   r   r   r&   r)   r7   r   r   r+   r  rR   rS   r   rO  r5  rK   )rS  r1   r2   ro  rx   r  r  r   s           r   rT  z(TestGEEPoissonFormulaCovType.setup_class  s     ))<=tW!!#$$&NNE!T'NGAtG,< ABK)/02LLO$M.3DJJqMA4E.F%H)* &+a!e_ %H H	 ''&&'CT'(B ' H 88 %K L%Hs   C=N)r<  r=  r>  rX  rT  rC  r   r   rZ  rZ    s    L Lr   rZ  c                   "    e Zd Zed        Zd Zy)TestGEEOrdinalCovTypec                     t        j                         }t        dd      \  }}}t        j                  d      }t        j                  |||d ||      | _        t        j                  g d      | _
        y )Nr  Fr  r  r  )r   r   r3   r   r  rR   r  rO  r&   r5  rK   )rS  rx   r1   r2   r\   r   s         r   rT  z!TestGEEOrdinalCovType.setup_class  sk     ""$'(;.35tV ''	2..fdFBG88 %> ?r   c                 h   t        dd      \  }}}t        j                  |d      }t        j                  |      }t        j                  |d      }t	        j
                         }t        j                  d      }t        j                  |||d ||      }|j                         }t        |       y )Nr  Fr  yendogname	the_groupr  )r3   r7   r8   r   r   r   r   r  rR   r  rT   r>   )rZ   r1   r2   r\   rx   r   rO  r   s           r   rV  z"TestGEEOrdinalCovType.test_wrapper  s    '(;.35tV 		%h/||D!64""$''	2nnUD&$C	er   NrW  rC  r   r   r]  r]    s    ? ?r   r]  c                   "    e Zd Zed        Zd Zy)TestGEEMultinomialCovTypec                     t        dd      \  }}}t        j                         }t        j                  ||||      | _        t        j                  g d      | _        y )Nr  Fr  r   )gꇿ?gܱ"/*?g7qg@Bݿ)	r3   r   r   rR   r   rO  r&   r5  rK   )rS  r1   r2   r\   r   s        r   rT  z%TestGEEMultinomialCovType.setup_class  sW     ((;.35tV $$&..fD88 %2 3r   c                 <   t        dd      \  }}}t        j                  |d      }t        j                  |      }t        j                  |d      }t	        j
                         }t        j                  ||||      }|j                         }t        |       y )Nr  Fr  r`  ra  rc  r   )
r3   r7   r8   r   r   r   rR   r   rT   r>   )rZ   r1   r2   r\   r   rO  r   s          r   rV  z&TestGEEMultinomialCovType.test_wrapper  s|    '(;.35tV		%h/||D!64$$&nnUD&R@	er   NrW  rC  r   r   re  re    s    	3 	3r   re  c                     t         j                  j                  d       d\  } }}t         j                  j                  | |z  |f      }d}||d d df   z  t        j                  d|dz  z
        |d d df   z  z   |d d df<   d|d d df   |d d df   z
  z  }t        j
                  |      }t         j                  j                  |      }t        j                  t        j                  |       t        j                  |            }t        j                  |||t        j                         	      }	|	j                  d
      }
t        |
j                   dt         j"                  d   z  dd       y )N"  )  r   r   rE   r  r   r   ffffff?rD   )r\   rx   gHz>)r   r   r   r/  r   {Gz?gQ?r   )r&   rL   rM   rN   r7  r  r
  rO   rP   r*   rR   rS   r   r   fit_regularizedr   r6   rQ   )nggsr   r"  rlprr   rv  r\   r]   r^   s              r   test_regularized_poissonrr    s,   IINN4IBA
		r"uaj)AA!Q$i"''!AqD&/!AqD'11AadG
qAw1a4 
!C66#;D
		$AWWRYYr]BGGBK0FGGAq0@0@0BCE""9-FFMM3~)>#>D*r   c                     t         j                  j                  d       d\  } }}t        j                  t        j                  |       t        j
                  |            }t        j                  | |z  |f      }dt         j                  j                  | |z        dk  z  |d d df<   t         j                  j                  | |z        |d d df<   d}t        d|      D ]Z  }t         j                  j                  | |z        }||d d |dz
  f   z  t        j                  d|dz  z
        |z  z   |d d |f<   \ t        j                  |d d ddf   t         j                  d	         }d
}	t        j                  |	      t        j                  t         j                  j                  |       t        j
                  |            z  }
|
t        j                  d|	z
        t         j                  j                  | |z        z  z  }
||
z   }t        j                  ||t        j                          |      }|j#                  dd      }t        j                  d      }t         j                  d	   |dd t%        |j&                  |dd       t%        |j                  j(                  t         j                  |	   dd       y )Nri  )r,  rG   r,  r   rE   r  r   r   rG   )r   rD   g      ?r   皙?)r   r\   rl  r   r0  r,  rf  r   皙?)r&   rL   rM   rO   rP   r*   r   rU  rN   r   r7  r  rQ   rR   rS   r   r   rm  r   r6   r  )rn  ro  r   r\   r"  rp  r   epsrq  serv  r]   r^   r*  s                  r   test_regularized_gaussianry  &  s9    IINN4IBAWWRYYr]BGGBK0F
"R%A299$$"R%$0367AadGiiBrE*AadGA1a[ :iiBrE*a1Q3i-"''!ad("3c"99!Q$: &&1ac6BEE,/
0CA

RWWRYY--2-6DDAQ"))**2*6	66AaAGGAqZ%<%<%>vNE""4"5F	#BeeL!BqGFMM2Ds;E$$//qD*r   c                 *   t         j                  j                  d       t         j                  j                  d      }t         j                  j                  d      }t        j                  t        j
                  d      t         j                  d         }t        j                  |||      }|j                         }|j                  d      }t        t        |t        j                        d       |j                  d      }t        t        |t        j                        d       |j!                  d      }t        t        |t        j                        d       |j#                         }t        t        |t        j                        d       y )	Niz  r   rE   )r   r   ru  r   r   T)r&   rL   rM   rN   rO   rP   rQ   rR   rS   rT   plot_added_variabler   r5   r   r   plot_partial_residualsplot_ceres_residualsplot_isotropic_dependence)r   r2   r1   r\   r]   r^   r   s          r   
test_plotsr  I  s    IINN399%DII(+EWWRYYr]BEE$K0FGGD%(EYY[F

$
$Q
'CC,d3

'
'
*CC,d3

%
%a
(CC,d3

*
*
,CC,d3r   c                     g g dg dg dg dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!} t        j                  | d"d  | d#   $      }t        j                  |j                  |j
                  d"k(  d%f<   t        j                  j                  d&|d't        j                         t        j                         (      }|j                         j                         }d"|d)<   t        j                  |j                  |d)d%g   |j                   t        j                         t        j                         *      }t#        |j$                  |j$                         t#        |j&                  |j&                         t#        |j(                  |j(                         |j+                         }|j+                         }t-        |j.                  j0                  |j.                  j0                         y )+N)r  alstatusfakegrps)4AAr   r   r   )5Ar  r          @r   )6Ar  r   rD   r   )7Ar  r   r  rD   )8Ar  r   r   rG   )9Ar  r   r  r   )11Ar  r   r   r   )12Ar  r   r  r   )13Ar  r   r   ru   )14Ar  r   r   r   )15Ar  r   r   r   )16Ar  r   r     )17Ar  r         @r   )18Ar  r   r  r   )19Ar  r   r     )20Ar  r   r  r   )2CCr   r  r   )3Cr  r   r   r   )4Cr  r   r   r   )5Cr  r   r  rD   )6Cr  r   r   rG   )9Cr  r   r   r   )10Cr  r   rD   r   )12Cr  r   rD   r   )14Cr  r   g      @ru   )15Cr  r   r   r   )17Cr  r   r   r   )22Cr  r   r   r  )23Cr  r   r   r   )24Cr  r   r   r   )32Cr  r   r  r  )35Cr  r   r   r   r   r   )r  r  zstatus ~ faker  )r   r\   r   rx   constant)r\   r   rx   )r7   r   r&   r   locr  rR   rS   r   r   r   r   r   r   r   r  r  r   r1   r2   r\   rT   r   r6   r   )r   rG  rO  r   rL  r=  s         r   r   r   ^  s    $2  $  $" $ ! $ #	 $
 ! $ # $ " $ $ $ " $ " $ # $ % $ % $ % $ % $  %! $" ## $$ !% $& !' $( #) $* !+ $, !- $. "/ $0 "1 $2 $3 $4 "5 $6 #7 $8 #9 $: #; $< #= $> %? $@ #A $DD 
d12hQ	0B#%66BFF277a< 
''

R*4*A*A*C&.&7&7&9  ;C 
			BBzN77299b*f!56rww(557"++-/D DJJ'499%T[[)
'')C88:D

))4;;+=+=>r   c                     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   rD   rD   rD   rG   rG   rG   )r&   rQ   )r   rv  r  r  r   s        r   simple_qic_datar    sf    
9:A	:	;B	:	;B
9:A	AtGB	AtGBb"a<r   rx   c                 
    |        }t        |       \  }}}}t        j                  ||||      }|j                  d      }|j                  }t        j                  ||||      }	|	j                  d      }
|
j                  }| t
        j                  u rt        |       dz  }t        |       dz  }n| t
        j                  u rt        j                  |      }|dkD  }||   t        j                  ||         z  ||   z
  ||<   t        j                  |t        j                  |      z  |z
  |z
        }t        j                  |t        j                  |      z  |z
  |z
        }nt        d      |j                  |j                  |j                   |j#                               }|	j                  |
j                  |
j                   |
j#                               }t%        ||d   d       t%        ||d   d       t'        j(                         5  t'        j*                  d       |j                         }|
j                         }d d d        t%        |d	d  d
       t%        |d	d  d
       y # 1 sw Y   ,xY w)Nrx   r\   r   r   r  zUnknown familyg-C6?r~   r  r   r   )r  rR   rS   rT   r9   r   r  r   r   r&   
zeros_liker  r  r   qicr6   r   r8  r   r  r  r  )rx   r   rv  r  r  r   r  r  mean1r  r  mean2ql1ql2cr   qle1qle2qler1qler2s                       r   test_ql_knownr    s    (C"6*LAr2qWWQ3q1FjjAj&G  EWWQ3q1FjjAj&G  E"""1vgl1vgl	8##	#MM!U"qu%"-"ffQ&.23ffQ&.23)**::gnngmmW5G5G5IJD::gnngmmW5G5G5IJDCat,Cat,		 	 	" h' E48$/E48$/ s   6I99Jc           	          |        }t        |       \  }}}}t        j                  ||||      }|j                  d      }|j                  }t        j                  ||||      }	|	j                  d      }
|
j                  }| t
        j                  u rd}n%| t
        j                  u rt        j                  |t        j                  |d|z
  z        z  t        j                  d|z
        z         }|t        j                  |t        j                  |d|z
  z        z  t        j                  d|z
        z         z  }n{| t
        j                  u r^t        j                  |t        j                  |      z  |z
        t        j                  |t        j                  |      z  |z
        z
  }nt        d      |j                  |j                  |j                  |j!                               \  }}}|	j                  |
j                  |
j                  |
j!                               \  }}}t#        ||z
  |dd       y )Nr  r   r   r   zunknown familyr   r   )r  rR   rS   rT   r9   r   r  r   r&   r  r  r   r   r  r6   r   r8  r   )rx   r   rv  r  r  r   r  r  r  r  r  r  qldiffr  r  r  s                   r   test_ql_diffr    s   
 (C"6*LAr2qWWQ3q1FjjAj&G  EWWQ3q1FjjAj&G  E"""	8$$	$BFF5AI#677"&&U:KKL"&&RVVEQY$788266!e);LLMM	8##	#&&RVVE]*U23FF1rvve},u456 )**GNNGMM#..02JD!QGNNGMM#..02JD!Q D4Kd>r   c                     t        j                  t              5  t        j                         } t        |       \  }}}}t        j                  ||| |      }|j                         }|j                          d d d        y # 1 sw Y   y xY w)Nr  )
rV  rW  rS  r   r  r  rR   rS   rT   r  )r   rv  r  r  r   r]   r^   s          r   test_qic_warningsr    sk    	k	" !%c*2q!2c!4

  s   ABB
regc                    t         j                  j                  d       d}t         j                  j                  |df      }t         j                  j	                  dd|      }t         j                  j                  |      }t        j                  t        j                  d      t        j                  |dz              }t        j                  ||t        j                         |      }t        j                  ||t        j                         |      }| r&|j                  d	      }|j                  dd
      }	n%|j                  d      }|j                  d
d      }	t        |j                   |	j                          | sNt        |	j"                  |j"                  z  |	j$                  t        j&                  |	j"                        z         y y )NiW  rj  rD   rE   r   r   r  r  )pen_wtr  )r  r   ry   r   )r   r{   )r&   rL   rM   rN   gammar
  rO   rP   r*   rR   rS   r   r   rm  rT   r   r6   r^  r   	ones_like)
r  r[   r"  r   rv  grpr  r  r  r  s
             r   test_quasipoissonr     sg    IINN3A
		q!f%A
		11%A
		!A
''"))C."''!s("3
4CWWQ("2"2"4S FWWQ("2"2"4S F (((4((4(@**g*.**4'*: GNNGNN3 	))G,=,==W5F5F(GG	I r   c            	      H   t         j                  j                  d       d} d}d}t        j                  |      }| t        j                  t         j
                  j                  ||            z  }t         j                  j                  |      }t        |      D cg c]6  }t        j                  |t         j                  j                  |            8 }}dt        j                  |      z  }t        |      D cg c]  }|g|z  
 }}t        j                  |      }t         j                  j                  ||z  df      }	t        j                  |	t         j                  d         |z   }
t        j                  |
|	|t!        j"                  d	
            }|j%                         }t        j                  |
|	|t!        j"                  d
            }|j%                         }t        j                  |
|	|t!        j&                  dd	            }|j%                         }t)        |j                   j*                  |j                   j*                  d       t)        |j                   j*                  |j                   j*                  d   d       y c c}w c c}w )N   r  r   r   rE   r   rD   )r   r/  r   Fr   )r\   r   Tr   r  ru  r~   )r&   rL   rM   rP   r  subtractouterr  r  r   r  rN   r)   rQ   rR   rS   r   r   rT   r  r   r  )rp  r8  rn  r   rM  covrr   rx  r  r"  rv  r  r  r  r  r  r  s                    r   test_grid_arr  "  s   IINN3A
A	B	1B
RVVBKK%%b"-.
.C99c"D9>rCAbii&&A&.	/CAC	BNN1A 9%aQCE%D%>>$D
		r!tQi(A
q"%%/"Q&AWWQ$ * 9 9u EGFjjlGWWQ$ * 9 9t DFFjjlGWWQ$ * 5 5ae LNFjjlGG&&11&&11 G&&11&&11!44A1 	D &s   ;J?Jc                     t         j                  j                  d       d} t        j                  g dg dg dg      }t         j                  j                  |      }t         j                  j                  | df      }t        j                  ||j                        }t         j                  j                  d| z  df      }t         j                  d   }t        j                  ||      }||j                         z   }t        j                  t        j                  |       t        j                  d            }t        j                  t        j                  |       t         j                  d	         j                  t              }	t!        j"                  |||	t%        j&                         |
      }
|
j)                         }t+        |j,                  |dd       t+        |
j$                  j.                  |dd       y )N+     r   rk  rf  rk  r   r  rf  r  r   rD   rE   r   r  r   r   r   r   r   r\   ru  r  )r&   rL   rM   r   r  r  rN   r  r   rQ   ravelrO   rP   r*   rz  r{  rR   rS   r   UnstructuredrT   r   r6   r  )ngrprM  r  rx  xmatpareyrv  r   tr8  rp  s               r   test_unstructured_completer  I  s]   IINN2D
**m]MB
CC99c"D
		tQi(A
q$&&A99!D&!-D
%%

C	c	B
QWWYA
		$,A
ruuW~.55c:A4aJ,C,C,E	A	AAHHc4-ALL++S$<r   c                  @   t         j                  j                  d       d} t        j                  g dg dg dg      }t         j                  j                  |      }t         j                  j                  | df      }t        j                  ||j                        }t         j                  j                  d| z  df      }t         j                  d   }t        j                  ||      }g g g g f\  }}}	}
t        |       D ]  }g d	}|j                  |dz         t        j                  |      }|	j                  |       |j                  |d|z  |z      |||f   z          |d|z  |z   d d f   }|j                  |       |
j                  |t        j                  d
      z          t        j                  |      }t        j                  |d      }t        j                  |	      }t        j                  |t              }t        j                  |
      }t!        j"                  |||d d d f   t%        j&                         |      }|j)                         }t+        |j,                  |dd       t+        |j$                  j.                  |dd       y )Nr  r  r  r  r  rD   rE   r  r  r   r   r   dtyper  ru  r  )r&   rL   rM   r   r  r  rN   r  r   rQ   r   popr  r*   r)   r{  rR   rS   r   r  rT   r   r6   r  )r  rM  r  rx  r  r  r  ylxltlglr!  r  r"  rv  r  r   r8  rp  s                      r   test_unstructured_incompleter  `  s   IINN2D
**m]MB
CC99c"D
		tQi(A
q$&&A99!D&!-D
%%

C	c	BR^NBB4[ " 
q1uZZ^
		"
		"QqS2X,1b5)*1r1
		!
		!bggaj.!" 	rA
r"A
rA


1C A
rA11QW:*2I2I2K	A	AAHHc4-ALL++S$<r   c                     t         j                  j                  d       t        j                  d      } d| _        dD ]}  }dD ]t  }t        j                  |      }dt        j                  t         j                  j                  ||            z  }t         j                  j                  |      }|dk(  r!t         j                  j                  |      }n"t         j                  j                  ||f      }t        j                  |      }t         j                  j                  |t         j                  j                  |t         j                  j                  ||                  }| j                  t        j                   |      t        j                   |      ||g      }	t#        ||	d	   d
d
       w  y )N{   Tr   rt  r   r   rG   r   rG   rE   r   r   r   r   )r&   rL   rM   r   r   r  rP   r  r  r  rU  rN   r  r  solvecovariance_matrix_solver  r   )
r  dqr   r  sdzsmz1z2s
             r   test_ar_covsolver    sM   IINN3!!t,AAL = 	=A1B 1 1"b 9::C"""*BAvII$$!$,II$$1a&$1B!#biioob!6L!MOB**2==+<+-==+<+-s4B B1Dt<%	==r   c                  Z   t         j                  j                  d       t        j                         } d| _        dD ]k  }dD ]b  }dt        j                  ||f      z  dt        j                  |      z  z   }t         j                  j                  |      }|dk(  r!t         j                  j                  |      }n"t         j                  j                  ||f      }t        j                  |      }t         j                  j                  |t         j                  j                  |t         j                  j                  ||                  }| j                  t        j                  |      t        j                  |t               ||g      }t#        ||d	   d
d
       e n y )Nr  rt  r  r  g333333?rE   r   r  r   r   r   )r&   rL   rM   r   r   r  r*   eyerU  rN   r  r  r  r  r  rP   r{  r   )	r  r  r  r  r  r  r  r  r  s	            r   test_ex_covsolver    sC   IINN3!AAL = 	=AA'#q	/9C"""*BAvII$$!$,II$$1a&$1B!#biioob!6L!MOB**2==+<+-99Qc+B+-s4B B1Dt<#	==r   c                     t         j                  j                  d       t        j                  d      } t        j
                  dt              | _        dD ]  }dD ]  }dt        j
                  |       z  | _        |d	z
  | _	        | j                  t        j                  |      t        j
                  |t                    \  }}t         j                  j                  |
      }|d	k(  r!t         j                  j                  |
      }n"t         j                  j                  ||f
      }t        j                  |      }t         j                  j!                  |t         j                  j!                  |t         j                  j!                  ||                  }| j#                  t        j$                  |      t        j
                  |t              ||g      }	t'        ||	d   dd         y )Nr  Tr   r   r  r  r  r  r   rE   r   r   r   )r&   rL   rM   r   r  rP   r{  r   r  r  r   r   rU  rN   r  r  r  r  r  r   )
r  r  r  r  r  r  r  r  r  r  s
             r   test_stationary_covsolver    sw   IINN34(AYYr%AF = 	=ARYYq\M2ALAAI((!)+1C)@BFC"""*BAvII$$!$,II$$1a&$1B!#biioob!6L!MOB**2==+<+-99Qc+B+-s4B B1Dt<)	==r   )T)K__doc__statsmodels.compatr   r!   numpyr&   rV  numpy.testingr   r   r   r   r   r	   r
   3statsmodels.genmod.generalized_estimating_equationsgenmod generalized_estimating_equationsrR   statsmodels.toolsr  #statsmodels.regression.linear_model
regressionlinear_modelr  statsmodels.genmodr   r   #statsmodels.discrete.discrete_modelr  discrete_modelpandasr7   scipy.stats.distributionsr   r  matplotlib.pyplotpyplotr   ImportErrorr   matplotlib.backends.backend_pdfr   r   r   r3   r>   r@   rE  rP  rZ  r]  re  rr  ry  r?  r@  rA  r  r   r  rB  r  r   r  r   r  r  r  r  r  r  r  r  r  rC  r   r   <module>r     s  	 & 	  $ $ $ B A ! 0 0 ' ) 6 6  * 	# 
8
>
"C
C
8
EJ" J"Z00A 0Af, @L#3 L., D 0 :*, *F 4  4&8?v	 H$5$5x7G7G#HI%0 J%0V H$5$5$,$5$5$,$4$4$6 7?7?B .I /IB$AN=.%=P=:=8=CE  		s   #F> >GG