
    ij1                       d 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 ddlZddlZddlmZ ddlmZ ddlmc mZ ddlmZmZ ddlmc mZ ddlmc mZ  ddl!m"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      Z/ G d de/      Z0 G d de/      Z1 G d de/      Z2 G d de/      Z3d Z4d Z5ejl                  jn                  ejl                  jp                  d               Z9d Z:d Z;ejl                  jy                  dejz                  ej|                  g      d         Z?ejl                  jy                  dejz                  ej                  ej|                  g      d!        ZAd" ZBejl                  jy                  d#ddg      d$        ZCd% ZDd& ZEd' ZFd( ZGd) ZHd* ZIy# 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.
    N)assert_assert_allcloseassert_almost_equalassert_array_lessassert_equalassert_raises)norm)lrange)
cov_structfamiliesF)PdfPagesztest_glm.pdfc                 4    t         r| j                  |       y y N)
pdf_outputsavefig)pdffigs     g/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/statsmodels/genmod/tests/test_gee.pyclose_or_saver   2   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_datar1   7   s     ggoobggooh78G
bggll7Iu=MAadGEadGEQU8D~~rww

1q'9:DAJ$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<   Q   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   margeffr4   
margeff_sebsesummary)selfnr0   groupsr/   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,(UV!!#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 )Nr@   rA   rB   rC   r   r   rE   rF   rG   rH   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$   rJ   rK   rL   rM   rN   rO   listrP   rQ   rR   rS   r   rT   r4   rU   rV   ra   )rX   rY   exog_arr
groups_arr	endog_arrrc   	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_tuplesw   s    
		u99##!Q#0AWWRYYq1u-ruuZ/@A
QTNRYY%5%51%5%==	 +333T#Y3	3:&)_

I{;(UV!!#fmmAB&78AB8 :::
Z(I&Z>(UV!!#fmmAB&78AB8/ 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 )NrA   r   r   r   r   r   r   r   r      r   r   r   r   r   r   r   r   r   r   rs   familynaivegΌ]
g{@cov_typerI   gX']?sܩ?ư>rtol)r$   rJ   rK   rO   r(   rN   rP   rQ   r   BinomialrR   rS   r   rT   rU   rX   r/   r0   rZ   r[   r\   r]   s          r   test_margins_logisticzTestGEE.test_margins_logistic   s     			u,-wwvUU12QT
1tVH4E4E4GHG;
:ST!!#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 )NrA   rq   rr   rt   r   rs   rw   ]
@grx   gg]ڿh㈵>r|   rz   r{   )r$   rJ   rK   rO   r(   rN   rP   
NominalGEErR   rS   r   rT   rU   r   s          r   test_margins_multinomialz TestGEE.test_margins_multinomial   s    
 			u,-wwvUU12QT
1udF3G8Y:OP!!#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 )NrA   rq   rr   rt   r   rs   rw   r   r   rx   T)r$   rJ   rK   rO   r(   rN   rP   r   rR   plot_distributionr   r3   pltFigure)rX   close_figuresr/   r0   rZ   r[   r\   r   s           r   test_nominal_plotzTestGEE.test_nominal_plot   s     			u,-wwvUU12QT
1udF3G8Y:OP&&(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 )NrA   )
                        rr   rq   r   rs   ru   rw   g74@gU&:?rx   g:#J{/&@r{   r|   gIV&
@)r$   rJ   rK   rO   r(   rN   rP   rQ   r   PoissonrR   rS   r   rT   rU   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:RS!!#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.
        rA   rq   rr   rt   Nr   rs   rw   r   r   rx   ru   ry   r   r|   )r$   rJ   rK   rO   r(   rN   rP   r   rR   rQ   r   r~   r   r4   rV   )rX   r/   r0   rZ   r[   r   logit_modellogit_resultss           r   test_multinomialzTestGEE.test_multinomial   s     			u,-wwvUU12QT
1udF3))WHi;P)QggeT6(:K:K:MN#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   rB   r   rB   rE   rB   rE      rE   r      r   r      r   r   rs   r   rs   )r   r   r   r   r   r   r   r   rB   rB   rB   rB   rE   rE   rE   rE   rB   rB   rB   rB   )r   r   r   r   r   r   rE   rE   r   r   r   r   r   r   rs   rs   	   r   r   r   )r   r   )r   rE   r   r   rE   r   r   r   )
ddof_scalescaling_factor)g4%?g
?r{   )atolgIEc?)g'i֦?gU?r   r   )r$   r(   zerosrM   rN   rO   rP   rQ   rR   r   r4   column_stackr   IndependencemeanfloatscalerV   Exchangeable)
rX   r0   r   r/   rZ   r[   r\   exog1gfacs
             r   test_weightedzTestGEE.test_weighted   s    wwr{''"+"aq2d4tVW=ruuW~6 ''"+PQPQSTU34 4Z=T=T=V
 GG,-5a= a<ruu-?'@tLh/ 	

BEE*=$>TJ 4Z=T=T=V
 			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   rv   rw   r   r   )GLMru   r{   r}   r   )r   r    r!   r"   r#   r&   r5   read_csvr   r   r   r   rP   rQ   from_formularR   +statsmodels.genmod.generalized_linear_modelr   r:   r   r4   rV   )rX   r,   r*   datafamindmod1rslt1r   mod2rslt2s              r   test_poisson_epilzTestGEE.test_poisson_epil(  s   ''//"''//(";<Wi<{{5! %%'ww##"DOTcRU $ 
 '* 	D 6XEUEUEWX
 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 )NrA   d   rC   )r   rB   r   r   r   r   r   r   r   drop)missing_   )r   rB   none)r$   rJ   rK   rL   rM   r
   r(   nanrP   rQ   rR   r   lenr/   asarrayr0   r)   rO   isfiniteallr4   rV   )	rX   r/   r0   rZ   r   r   iir   r   s	            r   test_missingzTestGEE.test_missingB  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                 p   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 )NrA   r   rC   r   r   r   r   r   r   )r/   r   exog2exog3rZ   )r   r   r   offsettimerZ   r   )rZ   r   r   r   )r   rE   r   )zendog ~ exog1 + exog2 + exog3)r$   rJ   rK   rL   rM   r
   r(   r   r5   	DataFramecopyrP   rQ   r   rR   r   r   r/   r   r0   r)   rO   dropnar4   valuesrV   )rX   r/   r   r   r   rZ   data0kr   kwargsr   r   r   r   s                 r   test_missing_formulazTestGEE.test_missing_formula^  sH    			u		  c *		  c *		  c *		  c *RWWQZ066aVVa
vvb 
  &	DA::<DFAv!"X V#+x !'v77''/	
 D HHJEDJJ4

499?? ;RUU5\J;;=DFAv#'>x !%fv77''/H~	
 D HHJE 3 3U\\5H5HI		 0 0%))2B2BCM&	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)
NrB   )r   r   r   r   r   r   r   rZ   exposurer   )ranger$   r   r   
ValueErrorrP   rQ   )rX   r   r   jpr/   r0   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rv   r   r   rv   r   r   decimal)r1   r$   r   r   setflatnonzeror
   r   r~   r   AutoregressiverP   rQ   rR   r   r4   standard_errors)rX   r/   r0   r.   Tidxr   jjrv   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BOwwyDKKa@D002D4H4H4JTUVr   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   )r1   r$   r   r   r   r   r
   r   r~   r   r   r   r   	enumeraterP   rQ   rR   idr   r4   r   r'   r5   r   r   r)   columnsr   )rX   r/   r0   r.   r   r   r   r   rv   vevir   cfser   vmdmdfDr   s                       r   test_logisticzTestGEE.test_logistic  sO   F '';<tU HHSZ %j 	$B,B3r7OAbE	$ ""$$$&$$&&&E2 XWW

* r2rl+ 	MDAqeQ:B&&(C!u2#CJJ1qA#C$7$7$92a5!L	M NNE!T'NE!T'NDABKHqQLLO
 ',DJJqMA,=&>?Ua!e_?@	 r2h' 	IDAq%%"D!Fq & B &&(C

BqE1= 3 3 5r!uaH	I @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         ?rB   )r   r   rB   rC   r   r   r   Fr   r   )r$   rJ   rK   r   GaussianrN   abslinalgcholeskyr   rL   appendsumdotr(   r'   r   r   rP   rQ   rR   r   
dep_paramsr4   )rX   dep_params_trueparams_true	num_groupar_paramr   gagsizeixcmatcmat_rr/   r0   rZ   ixexpvalerrorsarr  r	  s                        r   test_autoregressivezTestGEE.test_autoregressive1  s   = 1/0
 			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  r1   r   r   rP   rQ   rR   r   r$   r  r4   r7   r8   )rX   rv   r/   r0   r.   r  r  r	  s           r   test_post_estimationzTestGEE.test_post_estimation_  s    ""$&'9:tU$$&WWUD%vr:ffhBFF44c6F6FGEBFF4$<<ciiHr   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      rE   rC   r   r   r   rB         ?r   r           rv   r   
constraint	statisticgL?p-valueg8o;?r,  gV@gBvw?r-  )r   r-  r   r  g      $@r   g{Gz?)r$   rJ   rK   rL   rM   rN   r(   arrayr   r  r   r   rP   rQ   rR   r   
score_testrO   r   sqrtr  
cov_paramsr4   r	   cdfr  r   )rX   rY   r0   r/   r.   LRrv   r   r   res1r   res2fr  mod0rslt0r  wald_zwald_pscore_ps                        r   test_scoretestzTestGEE.test_scoretestl  s    			tyyaV,QT
T!Q$Z'$q!t*4RYY%%1%---		!a%("''!*5 HHo&'HH

 ""$$$&ww4v"!Q
 xxzDOO-k:JGDOO-i8,G HHo&'HH

 ""$$$&ww4v"!Q
 xxzDOO-k:KHDOO-i8,G yyaV,HHq"gYHHcUOEE%Lr 	>AQT
cAHnQT
::RYY=M=MST=M=UU  &&(F((*B775$fLDHHJE&&(F((*B77tU6baQRV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*  rE   rC   r   rB   r   )r   r   r   r   )r   r   r   r   r   )r0  r   r   FTr1  r2  df)r$   rJ   rK   rL   rM   rN   r(   r  r   r   rP   rQ   rR   compare_score_testr   score_test_results)rX   r   rY   r0   r.   exog_subr/   r8  r9  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:<X

''%5Z\J++-% 	VH''%uFC	227;Mk*F,E,Ek,R  i(&*C*CI*N  d 3V5N5Nt5TU	V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                  t              5  t        j                  |||t        j                               }|j                         }t        j                  |||t        j                                }|j#                  |       d d d        t        j                  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        j                  t              5  t         j                  j/                  |      }	t        j                  ||||	      }|j                         }t        j                  |||      }|j#                  |       d d d        t        j                  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   IxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr)  r*  rE   rC   r   rB   r   rD  ru   r   r   )r$   rJ   rK   rL   rM   rN   r(   r  pytestwarnsUserWarningrP   rQ   r   r   rR   r   rG  r   r  r   r   	Exceptionuniform)
rX   rY   r0   r.   rI  r/   rK  rL  rN  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&>">> \\+& 	,ggx:3J3J3LG kkmG''%u9P9P9RSC""7+	, \\+& 	,ggeXuX=N=N=PQG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+	, 	,?	, 	,	, 	,	, 	,	, 	,	, 	,sA   A8N5A8NAN*A2N7A0ONN'*N47O O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*  rE   rC   r   r   r   rB   r+  r.  )robustrw   bias_reducedr/  r   )rE   rE   r[  )r$   rJ   rK   rL   rM   rN   r(   r3  r   r  r   r   rP   rQ   rR   r   r   
cov_robustr)   rO   	cov_naivecov_robust_bc)rX   rY   r0   r/   r.   r8  r9  rv   r   ry   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HHo&'HH

 ""$$$&9 		IHGGtU6baQRV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  r1   r   r   r   r   rP   rQ   rR   r   r4   r   r$   r'   r5   r   r   r)   r  r   )rX   rv   r/   r0   r.   r  r  r  r  r   r  r  r	  r
  r   s                  r   test_linearzTestGEE.test_linear  s   8 ""$&'9:tU$$&$$& X

 r2h' 	JDAqeT61=B&&(C

BqE2> 3 3 5r!ubI		J NNE!T'NE!T'NDABKHqQLLO
 ',DJJqMA,=&>?Ua!e_?@	 r2h' 	JDAq%%"D!Fq & B &&(C

BqE2> 3 3 5r!ubI	J @   ;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 )NrA   ),  rE   rC   r   r   )r   r   r   皙?rd  r   r   r   r   )r   r   r   r   )r   )r0  rB   r   r   )r   r  r$   rJ   rK   rL   r  rO   rM   rN   r   r   r   r   rP   rQ   rR   r   r4   )rX   rv   r0   r/   r.   r  r  r8  r9  r   r  r  r	  s                r   test_linear_constrainedzTestGEE.test_linear_constrainedn  s&   ""$
		uyyX.QT
tRUU<01BII4D4D#4D4NN		#g7$$&$$&EE<.!EE"Ir2h' 	>DAqeT61!QPB&&(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_datarH   )glQſg%נqY?g`!) g;8-?)g]@x?gv'+՝?g:@I?g){l?)g8j?gތ?g>>tA?r   r   r}   )r   r  r1   r   r)   extendr$   r3  r   r   rP   rQ   rR   rO   r   r4   r   NestedrW   r   Variance)rX   rv   r/   r0   r.   group_nr  dpr  r   r  r  ner   smrys                  r   test_nested_linearzTestGEE.test_nested_linear  s   ""$&'@AtUu{{1~+, 	ANN  NN 	 ((7#AtG,$$&WWUD%vr:vvx UUBCUUABDKKQ7D002BB WWUD%vrGLvv4;;v/ UUCDUUABDKKQ7D002BB&&(MM255!=>TPT	
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   rC   r   rB   r  )y	TheGroupsgroups1groups2zy ~ 1rv  z0 + groups1 + groups2)rZ   ri  r   r   )g-y<-?gPn@gvӂ!@g⪲?r   rj  )r$   rJ   rK   rM   rN   r(   astypeintrL   r5   r   rP   rQ   r   r   rl  rR   rW   r   rm  rO   )rX   rY   rZ   rw  rx  groups_e	groups1_e	groups2_eru  rF  r[   r\   rq  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###+++\\&WQ
 $$,!((* % 
    ((*MMEE89		
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~   r1   r   GlobalOddsRatiorP   
OrdinalGEErR   r$   rO   r   r4   rV   r   typeOrdinalGEEResultsWrapperr:   OrdinalGEEResults)
rX   rv   r/   r0   rZ   r   rN  rsltr  r  s
             r   test_ordinalzTestGEE.test_ordinal  s    ""$'(;5ItV''	2nnUD&$Cwwy UU	
 	DKKQ7 UU	
 	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  r@   r   rB   rC   )ru  rZ   x1x2zy ~ 0 + x1 + x2r   ignore)r$   rJ   rK   randintrN   rL   r5   r   rP   r  r   rR   warningscatch_warningssimplefilterr   )rX   rY   ru  rZ   r  r  rF  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//0A6PR/SE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  r@   r   rB   r   r   r   rC   rD  )r$   rJ   rK   r  rM   rN   rO   rL   r   OrdinalIndependencerP   r  rR   )rX   rY   ru  rZ   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  r@   r   rB   r   r   r   rC   r  rD  )r$   rJ   rK   r  rM   rN   rO   rL   r  r  r  r   NominalIndependencerP   r   rR   )rX   rY   ru  rZ   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~   r1   r   r  rP   r  rR   r   r   r3   r   r   )
rX   r   rv   r/   r0   rZ   r   rN  r  r   s
             r   test_ordinal_plotzTestGEE.test_ordinal_plot5  s|     ""$'(;5I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  rD  )gfy?g؀q?g鷯gg
ݿ)gU%Ӷ?gŲ?grG ,:?gV!̊43?r   r   nominalrH   )g=$?g歺Ք?go[tTgْU)g*V?g^?g=zGb?g_`F?)r1   r   r   rP   r   rR   r$   rO   r   r4   r   r  r   r  NominalGEEResultsWrapperr:   NominalGEEResults)rX   r/   r0   rZ   r   r   r   cf1se1r   r   cf2se2s                r   test_nominalzTestGEE.test_nominalD  s@   '(;5I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   r1   r   r   r   r   rP   rQ   rR   r   r4   r   r$   r'   r5   r   r   r)   r  r   )rX   rv   r/   r0   rn  r  r  r  r  r   r  r  r	  r
  r   s                  r   test_poissonzTestGEE.test_poissonb  s   : !!#()<=tW$$&$$&
&
& r2h' 	IDAqgtVQ?B&&(C

BqE1= 3 3 5r!uaH		I NNE!T'NGAtG,<d1ab5kJQRSLLO
 ',DJJqMA,=&>?Ua!e_?@	 r2h' 	IDAq%%,dAfQR & B &&(C

BqE1= 3 3 5r!uaH	I @rb  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   r@   r   rC   rE   rB   rs   r   r   "   $   )rZ   r   )r$   rJ   rK   rL   rM   rN   r(   rP   rQ   rR   permutationr   r4   tvaluesstringr   r   ascii_letters)rX   rY   r   ru  rZ   r  result1r  y1r  rw  model2result2mpr  r   r   rx  model3result3s                       r   test_groupszTestGEE.test_groups  s    			sII1a&)II!$ 1q5)2771:6qr"Af-**, YY""1%rUr1uX*R0**,79 c&k* 	4DAq((QU3BqE	4"()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 )NrA   r   rC   r   r   r   X1X2X3r   r   r  r   r   rw   r   )r   r   r   r  r$   rJ   rK   rL   rM   r
   r(   r5   r   rP   rQ   r   rR   lmOLSr:   r   r4   r   rV   r5  diagr]  r  )rX   vsrv   r   r  r  r  rZ   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!!&R " 
 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   rA   rC   r   r   r   r   )r   r  TimerZ   Fr   r   zY ~ X1r  rZ   rs   r   )r$   rJ   rK   rL   r'   r(   rV  rM   r
   r5   r   r   r   r   r  rP   rQ   rR   r   r   r4   r<   )rX   rY   r   r  matr  rZ   r   r   rv   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BO
ww##fdf $ 
 
ww##fd2 $ 
 
ww##h42 $ 
 
ww##h6&R $ 
 
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 )NrA   r   r   rC   r   rE   r  r   r   r  Fdispr   r   )r   r   r   r~   r$   rJ   rK   rL   r  r5   r   rP   rQ   r   rR   discreteLogitr   r4   r   rX   r  rv   r   r  r  r  rZ   r
  r   r   r   r   s                r   test_compare_logitzTestGEE.test_compare_logit?  sA   $$&""$
		u!!s!+a/0YY3'YY3'YY3'""1ac"2LLq"B?@ww##&R $ 
 
~~**+=A*Fe$ELL//1D1DbQr   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 )NrA   r   rC   r   rE   r  r   r   r  Fr  r   r   )r   r   r   r   r$   rJ   rK   ceillogrV  rL   r  r5   r   rP   rQ   r   rR   r  r   r4   r   r  s                r   test_compare_poissonzTestGEE.test_compare_poissonW  sN   $$&!!#
		uGGRVVBII--3-7889YY3'YY3'YY3'""1ac"2LLq"B?@ww##&R $ 
 
,,-?a,He$ELL//1D1DbQr   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 )Nrt  i  rC   r   r   r   皙?)r   r  r  rZ   r   Y ~ X1 + X2r   rv   r   )r   r  r  rH   Tr   r  r  )r0   r   r   r   )r  r  )r0   )r$   rJ   rK   rL   rM   rN   rO   rV  r5   r   rP   rQ   r   r   r  rR   r   	convergedpredictr   r   r   r4   )rX   rY   r  r  rZ   r   r   r   fmlr[   r\   pred1pred2pred3pred4pred5x1_newx2_newnew_exogpred6r4   pred6_corrects                         r   test_predictzTestGEE.test_predicto  sc   
		tYY1%YY1%1q5)255;7""1aa"0IISBG_v5A>||2R6VL
 $$h&7&7&9( % 
 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rE   r   rB   r   rE   r   r   r   rs   rB   r   g      @r   rB   r   rE   rB   r   r   rE   r   r   rB   r   r   r   r   r   r   r   r   r   r   rB   rB   rB   r   Tmax_lagr   rD  UUUUUU?rf  r   gmy@gim@g=פ6̣r   r   g3?g	R?)r$   rO   toolsadd_constantr   
StationaryrP   rQ   rR   rV   r5  r   covariance_matrixr  r4   )rX   r/   r0   r.   csr[   r\   r  s           r   test_stationary_gridzTestGEE.test_stationary_grid  s    :;uu7889!!$'""148tUr:ZZ"''(++  w3A6::<>P	
 	MM255!56T	
 	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  rD  r  r  r   r   r  )r   r   rB   r   r   rB   r   r   rB   r   r   r   rE   )r   r   )r$   rO   r  r  rP   rQ   r   r  rR   rV   r5  r   r4   )rX   r/   r0   r   r.   r[   r\   r  s           r   test_stationary_nogridzTestGEE.test_stationary_nogrid  s#    :;uu78uu7889!!$'4:+@+@QV+W
 ZZ"''(++ 	MM255!56T	
 	BEE"67dN uu78DA!,,QUC
 			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 )Nrt  rA   rC      r   r   r   r  r   r  r  rZ   r   r   r  r   r   )rv   r   r   Tr  )r   )r   r   ir0   r   r   F)r0   r   r   	transform)r$   rJ   rK   rL   rM   rN   rO   rV  poissonr  r5   r   rP   rQ   r   r   r   rR   r   r  r  r[   r0   r   )rX   rY   r  r  rZ   r   r   r   r   r  r[   r\   r  r  r  r  r  r  s                     r   test_predict_exposurezTestGEE.test_predict_exposure  s_   
		uYY1%YY1%2d4""1aa"099$$Q$2IIcR"Wo69IIPQR||  $	
 $$##% % 
 V%%t, d8n5Z(89d8ntJ?OPcd>#$'*%cd+  
 ""34(>#$'*%cd+	  
 	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 )Nrt  rA   r   r  r   r   rC   r  )rZ   rv   r   r   r  )r$   rJ   rK   r   rL   re   rM   rN   rO   rV  zipr	  r  rP   rQ   r   r   rR   r  r   )rX   rY   _r0   rZ   r   r   exog_ioffset_i
exposure_ir/   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 )Nrt  rA   rC   r  r   r   r   r  r  r  r   r  TrH   )rv   r   r   )rv   r   r   )r$   rJ   rK   rL   rM   rN   rO   rV  expr	  r5   r   rP   rQ   r   r   r   rR   r   r  r4   r   )rX   rY   r  r  rZ   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||  $	
 %%h&6&6&8 & 
 **,W&&-%%h&6&6&8 & 
 **'..*97W&&-%%h&6&6&88 & 
 **'..*97W&&-%%h&6&6&8: & 
 **'..*97W&&-%%##% & 
 **,W&&-%%h&6&6&8V & 
 **'..*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 )NrA   r   rC   rt  r   )r   r  r  r  r   r   r  r   r.  g&(?g&J?)r   r   r   r  r$   rJ   rK   rL   rM   rN   rO   r5   r   rP   rQ   r   rR   params_sensitivityr   r   r  r   r4   )rX   r   rv   rY   r   r  r  rZ   r
  rN  r  psr   s                r   test_sensitivityzTestGEE.test_sensitivityi  sa   $$&""$
		uII!$YY1%YY1%2d4LLq"56gg""61V # 
 wwy$$QQ/CGQ'bAQ\\44AC:N 	.01RZZ!!$1!45	
 B 2s   "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   rC   )r   r   r   Nr   r   rE   rB   r   )r   rE   rs   r   )r   r   r   rB   )r   r   r   rB   rE   r   r   r   r-  rs   rD  rE  )
return_covT)r{   r{   )MbP?r"  rj  )r$   rJ   rK   rL   rM   rN   r(   r   rO   tril_indicesr   r   rP   rQ   rR   Equivalencer   r4   rV   r   )rX   r/   r0   rZ   pairsstartr   abexr  r  r!  ecr  r  r   r}   s                     r   test_equivalencezTestGEE.test_equivalence  se    			t		  b )yyW-QT
1rwwqz2rs q 	;AE!H 1u!HruuZ00!HruuZ00a !Hruu%;<<!Hruu%;<<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Q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   rt  rC   )rt  r   r   r   r   r   rB      T)labelsr!  rD  r   r  maxiter)r$   rJ   rK   rL   rM   rN   r(   ry  int32r  r   r   r$  rP   rQ   _pairs_from_labelsgroup_labelsr%  r   r  r   r   r  addr  r  r  rR   )rX   r/   r0   rZ   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^   ro   r   r   rR  marksmoke
matplotlibr   r   r   r   r   r   r   parametrizer   r   r  r$  r'  rB  r   r   r   rP  rX  r_  ra  rg  rr  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>   ^   s)   .$9LF&F( [[[[8  8E$C,) XD428>D@ [[TE4=1[[TE4=1/ 2 2/&W0`IL,D\IA>F [[z..
0G0GHVV@.,`I6OJb>*-
^(
T'AR [[ & [[
 
 [[  [[[[8  8B<]I@):V!DF-^R0R0%.NO.!F5,n&<B.H
8<P|)"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 )NrH   rw   )rI   ry   r[  rZ  g:0yE>r|   r   g|=r   	robust_bc)rN  rR   rI   rW   r   ry   r\  r]  r^  r$   r5  r  r   rV   r   r6  cov_params_defaultr   r   r   )
rX   rN  
res_robust	res_naiveres_robust_bcr}   resry   covrV   s
             r   test_cov_typezCheckConsistency.test_cov_type  s   hhWW$*;*;W<
GG):):WGM	T->->X 	 	Z(((3Y''1]++^< :#8#89!5!56NM,G,GH#
 	PC3
 ''"''#,'CCGGSt4>)  ///B48CNN,c5IC22CdO	P  	
--1F1FFG	,,	0C0CCD00M4O4OOP 	j#''K@r   )r;  r<  r=  rI   rM  rB  r   r   rD  rD    s    L)Ar   rD  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޿)r1   r   r   r   r   rP   rQ   rN  r$   r3  rI   )clsr/   r0   rn  rv   r  s         r   setup_classz!TestGEEPoissonCovType.setup_class!  s`      ))<=tW!!#$$&''%wfbA88W
r   c                 ^   t        dd      \  }}}t        j                  |      }t        j                  |      }t        j                  |      }t	        j
                         }t        j                         }t        j                  |||d ||      }|j                         }t        |       y )Nr  Fr  )r1   r5   r6   r   r   r   r   r   rP   rQ   rR   r<   )rX   r/   r0   rn  rv   r  rN  r   s           r   test_wrapperz"TestGEEPoissonCovType.test_wrapper/  s    ()<EJtW		% ||D!))G$!!#$$&ggeT7D&"=	er   Nr;  r<  r=  classmethodrS  rU  rB  r   r   rO  rO    s    
 
r   rO  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   rQ  )r1   r   r   r   r   r$   r'   r5   r   r   r)   r  rP   rQ   r   rN  r3  rI   )rR  r/   r0   rn  rv   r  r
  r   s           r   rS  z(TestGEEPoissonFormulaCovType.setup_classA  s      ))<=tW!!#$$&NNE!T'NGAtG,<d1ab5kJQRSLLO
 ',DJJqMA,=&>?Ua!e_?@	
 ''&&($&R ' 
 88W
 @s   C=N)r;  r<  r=  rW  rS  rB  r   r   rY  rY  ?  s    
 
r   rY  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~   r1   r   r  rP   r  rN  r$   r3  rI   )rR  rv   r/   r0   rZ   r   s         r   rS  z!TestGEEOrdinalCovType.setup_class[  sf     ""$'(;5I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  )r1   r5   r6   r   r   r~   r   r  rP   r  rR   r<   )rX   r/   r0   rZ   rv   r   rN  r   s           r   rU  z"TestGEEOrdinalCovType.test_wrapperr  s    '(;5ItV		%h/||D!64""$''	2nnUD&$C	er   NrV  rB  r   r   r\  r\  Y  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  rD  )gꇿ?gܱ"/*?g7qg@Bݿ)	r1   r   r   rP   r   rN  r$   r3  rI   )rR  r/   r0   rZ   r   s        r   rS  z%TestGEEMultinomialCovType.setup_class  sP     ((;5ItV $$&..fD88$VWr   c                 <   t        dd      \  }}}t        j                  |d      }t        j                  |      }t        j                  |d      }t	        j
                         }t        j                  ||||      }|j                         }t        |       y )Nr  Fr  r_  r`  rb  rD  )
r1   r5   r6   r   r   r   rP   r   rR   r<   )rX   r/   r0   rZ   r   rN  r   s          r   rU  z&TestGEEMultinomialCovType.test_wrapper  sy    '(;5ItV		%h/||D!64$$&nnUD&R@	er   NrV  rB  r   r   rd  rd    s    X Xr   rd  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   rC   r  r   r   ffffff?rB   )rZ   rv   gHz>)r   r   r   r-  r   {Gz?gQ?r   )r$   rJ   rK   rL   r5  r  r	  rM   rN   r(   rP   rQ   r   r   fit_regularizedr   r4   rO   )nggsr   r   rlprr   ru  rZ   r[   r\   s              r   test_regularized_poissonrq    s+   IINN4IBA
		rBwl+AA!AqD'kBGGA1H-!Q$77AadG
1a41QT7"
#C66#;D
		$AWWRYYr]BGGBK0FGGAq0@0@0BCE""9-FFMM3~)>#>TPTUr   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 )Nrh  )r*  rE   r*  r   rC   r  r   r   rE   )r   rB   g      ?r   皙?)r   rZ   rk  r   r/  r*  re  r   皙?)r$   rJ   rK   rM   rN   r(   r   rV  rL   r   r5  r  rO   rP   rQ   r   r   rl  r   r4   r  )rm  rn  r   rZ   r   ro  r   epsrp  seru  r[   r\   r)  s                  r   test_regularized_gaussianrx    s6    IINN4IBAWWRYYr]BGGBK0F
"r'1A299$$"r'$2S89AadGiiBG,AadGA1a[ <iiBG,a1q5k/BGGA1H$5$;;!Q$< &&1ac6BEE,/
0CA

RWWRYY--2-6DDAQ"))**R*8	88AaAGGAqZ%<%<%>vNE""4"5F	#BeeL!BqGFMM2Ds;E$$//q4Pr   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   rC   )r   r   rt  r   r   T)r$   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   plot_added_variabler   r3   r   r   plot_partial_residualsplot_ceres_residualsplot_isotropic_dependence)r   r0   r/   rZ   r[   r\   r   s          r   
test_plotsr~    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   rB   r   )7Ar  r   r  rB   )8Ar  r   r   rE   )9Ar  r   r  r   )11Ar  r   r   r   )12Ar  r   r  r   )13Ar  r   r   rs   )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  rB   )6Cr  r   r   rE   )9Cr  r   r   r   )10Cr  r   rB   r   )12Cr  r   rB   r   )14Cr  r   g      @rs   )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   rZ   r   rv   constant)rZ   r   rv   )r5   r   r$   r   locr  rP   rQ   r   r   r   r   r~   r   r   r  r  r   r/   r0   rZ   rR   r   r4   r   )r   rF  rN  r   rK  r;  s         r   r   r     s   "."" 	" 		"
 	" 	" 	" 	" 	 " 	" 	" 	" 	!" 	!" 	!"  	!!"" 	!#"$ 	%"& 	'"( 	)"* 	+", 	-". 	/"0 	1"2 	3"4 	 5"6 	7"8 	9": 	;"< 	="> 	?"@ 	!A"B 	C"DH 
d12hQ	0B#%66BFF277a< 
''

**,  "  C 
			BBzN77
		
J ww**,  "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   rB   rB   rB   rE   rE   rE   )r$   rO   )r   ru  r  r  r   s        r   simple_qic_datar  -  sf    
9:A	:	;B	:	;B
9:A	AtGB	AtGBb"a<r   rv   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rv   rZ   r   r   r  zUnknown familyg-C6?r|   r  r   r   )r  rP   rQ   rR   r7   r   r  r   r   r$   
zeros_liker  r  r   qicr4   r   r6  r   r  r  r  )rv   r   ru  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m1vgm	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  rP   rQ   rR   r7   r   r  r~   r$   r  r  r   r   r  r4   r   r6  r   )rv   r   ru  r  r  r   r  r  r  r  r  r  qldiffr  r  r  s                   r   test_ql_diffr  g  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##	#BFF5M)E12RVVAu<MPU<U5VV)**GNNGMM7;M;M;OPJD!QGNNGMM7;M;M;OPJD!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  )
rR  rS  rT  r   r  r  rP   rQ   rR   r  )r   ru  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  ri  rB   rC   r   r   r  r  )pen_wtr  )r  r   rw   r   )r   ry   )r$   rJ   rK   rL   gammar	  rM   rN   r(   rP   rQ   r   r   rl  rR   r   r4   r]  r   	ones_like)
r  rY   r   r   ru  grpr  r  r  r  s
             r   test_quasipoissonr    sq    IINN3A
		q!f%A
		11%A
		!A
''"))C."''!s("3
4CWW		!	F WW		!	F (((4((4(@**g*.**4'*: GNNGNN3 	 1 11MMBLL):):;;	
 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   rC   r   rB   )r   r-  r   Fr   )rZ   r   Tr   r  rt  r|   )r$   rJ   rK   rN   r  subtractouterr  r  r   r  rL   r'   rO   rP   rQ   r   r   rR   r  r   r  )ro  r7  rm  r   rL  covrr   rw  r  r   ru  r  r  r  r  r  r  s                    r   test_grid_arr    s   IINN3A
A	B	1B
rvvbkk''B/0
0C99c"D9>rCAbii&&A&.	/CAC	BNN1A"2Y'QC!G'D'>>$D
		rAvqk*A
q"%%/"Q&AWW	1Tj&?&?U&KF jjlGWWQ$:3L3LRV3WXFjjlGWW	1Tj&;&;AE&RF jjlG%%w'9'9'D'D4 %%w'9'9'D'DQ'Gd3 	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   rj  re  rj  r   r  re  r  r   rB   rC   r   r  r   r   r   r   r   rZ   rt  r  )r$   rJ   rK   r   r  r  rL   r  r   rO   ravelrM   rN   r(   ry  rz  rP   rQ   r   UnstructuredrR   r   r4   r  )ngrprL  r  rw  xmatpareyru  r   tr7  ro  s               r   test_unstructured_completer    sZ   IINN2D
**m]MB
CC99c"D
		tQi(A
q$&&A99!d(A/D
%%

C	c	B
QWWYA
		$,A
ruuW~.55c:A4aJ,C,C,EaPA	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  rB   rC   r  r  r   r   r   dtyper  rt  r  )r$   rJ   rK   r   r  r  rL   r  r   rO   r   popr  r(   r'   rz  rP   rQ   r   r  rR   r   r4   r  )r  rL  r  rw  r  r  r  ylxltlglr  r  r   ru  r  r   r7  ro  s                      r   test_unstructured_incompleter    s	   IINN2D
**m]MB
CC99c"D
		tQi(A
q$&&A99!d(A/D
%%

C	c	BR^NBB4[ " 
q1uZZ^
		"
		"QURZ.1QU8+,QQ
		!
		!bggaj.!" 	rA
r"A
rA


1C A
rA11QW:*2I2I2KTUVA	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   rs  r   r   rE   r   rE   rC   r   r   r   r   )r$   rJ   rK   r   r   r  rN   r  r  r  rV  rL   r  r  solvecovariance_matrix_solver  r   )
r  dqr   r  sdzsmz1z2s
             r   test_ar_covsolver  #	  sH   IINN3!!t,AAL = 	=A1B 1 1"b 9::C"""*BAvII$$!$,II$$1a&$1BRYY__S"))//"a:P%QRB**b!2==#4b1#B 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  rs  r  r  g333333?rC   r   r  r   r   r   )r$   rJ   rK   r   r   r  r(   eyerV  rL   r  r  r  r  r  rN   rz  r   )	r  r  r  r  r  r  r  r  r  s	            r   test_ex_covsolver  ?	  s>   IINN3!AAL = 	=AA'#q	/9C"""*BAvII$$!$,II$$1a&$1BRYY__S"))//"a:P%QRB**b!299Qc#:BB 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   rC   r   r   r   )r$   rJ   rK   r   r  rN   rz  r   r  r  r  r   rV  rL   r  r  r  r  r  r   )
r  r  r  r  r  r  r  r  r  r  s
             r   test_stationary_covsolver  Z	  sn   IINN34(AYYr%AF = 	=ABIIaL=1ALAAI((!bii6MNFC"""*BAvII$$!$,II$$1a&$1BRYY__S"))//"a:P%QRB**b!299Qc#:BB B1Dt<%	==r   )T)J__doc__r   r  numpyr$   numpy.testingr   r   r   r   r   r   pandasr5   rR  scipy.stats.distributionsr	   statsmodels.compatr
   #statsmodels.discrete.discrete_modelr  discrete_modelstatsmodels.genmodr   r   3statsmodels.genmod.generalized_estimating_equationsgenmod generalized_estimating_equationsrP   #statsmodels.regression.linear_model
regressionlinear_modelr  statsmodels.toolsr  matplotlib.pyplotpyplotr   ImportErrorr   matplotlib.backends.backend_pdfr   r   r   r1   r<   r>   rD  rO  rY  r\  rd  rq  rx  r>  r?  r@  r~  r   r  rA  r  r   r  r~   r  r  r  r  r  r  r  r  r  rB  r   r   <module>r     s  	 
      * % 6 6 3 A A 0 0 !	# 
8
>
"C
C
4
EN" N"b4-A -A`, @
#3 
4&, &R 0 4V*QD 4  4&B?J	 H$5$5x7G7G#HI%0 J%0V x  ("3"3X5E5EF??< .(
 /(
V&R=,$=N=8=6=kI  		s   F8 8G G