
p7]c           @   s  d  Z  d d l m Z d d l Z d d l Z d d l Z d d l m Z m	 Z	 m
 Z
 m Z m Z m Z m Z d d l j j Z d d l j Z d d l j j Z d d l m Z d d l m Z d d l j j Z d d l Z  d d l! m" Z" d d l# Z# y d d l$ j% Z& Wn e' k
 r!n Xe( Z) e) rMd d l* m+ Z+ e+ d	  Z, n e- Z, d
   Z. e/ d  Z0 d   Z1 d e2 f d     YZ3 d e2 f d     YZ4 d e4 f d     YZ5 d e4 f d     YZ6 d e4 f d     YZ7 d e4 f d     YZ8 d   Z9 d   Z: e j; j< e j; j= d     Z> d   Z? d   Z@ e j; jA d e jB e jC g  d    ZD e j; jA d e jB e jE e jC g  d     ZF d!   ZG d S("   sj  
Test functions for GEE

External comparisons are to R and Stata.  The statmodels 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.
i(   t   lrangeN(   t   assert_almost_equalt   assert_equalt   assert_allcloset   assert_array_lesst   assert_raisest   assert_warnst   assert_(   t   families(   t
   cov_struct(   t   norm(   t   PdfPagess   test_glm.pdfc         C   s   t  r |  j |  n  d  S(   N(   t
   pdf_outputt   savefig(   t   pdft   fig(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   close_or_save,   s    c         C   s   t  j j t  j j t   } t j t  j j | d |   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 d } n  | | | f S(	   s#  
    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.
    t   resultst	   delimitert   ,Ni    i   i   t   axis(   t   ost   patht   dirnamet   abspatht   __file__t   npt
   genfromtxtt   joint   concatenatet   onest   shape(   t   fnamet   iceptt   cur_dirt   Zt   groupt   endogt   exog(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt	   load_data1   s    	(c         C   s   t  t |  j t j   t  t |  j t j   t  t |  j t j   t  t |  j t j   t  t |  j j t	 j
   t  t |  j j t	 j
   t  t |  j j t	 j
   t  t |  j j t	 j
   d  S(   N(   R   t
   isinstancet   paramst   pdt   Seriest   fittedvaluest   residt   centered_residt   _resultsR   t   ndarray(   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   check_wrapperM   s    t   TestGEEc           B   s   e  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 d
   Z d   Z d   Z d   Z d   Z d   Z e j j d e j e j 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%   Z. d&   Z/ d'   Z0 d(   Z1 d)   Z2 d*   Z3 d+   Z4 RS(,   c         C   s  d } t  j j d  t  j j d | d f  } d | d  d   d f <t  j t  j | d  t  j d  } | d  d   d f t  j j d |  } t j | | |  } | j	 d d	 d
 d g  } | j
   } t | j | j d  t | j | j d  | j   d  S(   Ni(   i  t   sizei   i   i    i   t   start_paramsg?gcͯ?g̒?(   i   i   i   i   (   R   t   randomt   seedt   normalt   kront   aranget   r_t   geet   GEEt   fitt   get_margeffR   t   margeffR)   t
   margeff_set   bset   summary(   t   selft   nR&   t   groupsR%   t   modelt   resultt   marg(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_margins_gaussian\   s    &)	c      	   C   s   t  j j d  t  j d } t  j d  } t  j d | d  d   d f <t  j d  } t j | | | d t j	   } | j
 d d d	 d
 d g  } | j   } t | j t  j d  t | j t  j d d d d  S(   Ni  i    i   i   i   t   familyt   cov_typet   naiveR4   gΌ]
g{@gX']?gsܩ?t   rtolgư>(   i    i    i    i    i   i   i   i   (   i   i   (   i   i   i   i   i   i   i   i   (   R   R5   R6   R:   R   R9   R;   R<   R   t   BinomialR=   R>   R   R?   R@   (   RC   R%   R&   RE   RF   RG   RH   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_margins_logistict   s    !	c      	   C   s   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 d	 d
 g  } | j	   } t
 | j t  j d d d t
 | j t  j d d d d  S(   Ni  i    i   i   i   RK   RL   R4   g]
@gggg]ڿRM   gh㈵>gsܩ?gư>(   i    i    i    i    i   i   i   i   (   i   i   (   i   i   i   i   i   i   i   i   (   R   R5   R6   R:   R   R9   R;   t
   NominalGEER=   R>   R   R?   R@   (   RC   R%   R&   RE   RF   RG   RH   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_margins_multinomial   s    c      	   C   s   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 d	 d
 g  } | j	   } t
 t | t j  t  d  S(   Ni  i    i   i   i   RK   RL   R4   g]
@gg(   i    i    i    i    i   i   i   i   (   i   i   (   i   i   i   i   i   i   i   i   (   R   R5   R6   R:   R   R9   R;   RP   R=   t   plot_distributionR   R(   t   pltt   Figuret   True(   RC   t   close_figuresR%   R&   RE   RF   RG   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_nominal_plot   s    c      	   C   s   t  j j d  t  j d } t  j d  } t  j d | d  d   d f <t  j d
  } t j | | | d t j	   } | j
 d d d d d g  } | j   } t | j t  j d d d t | j t  j d d d d  S(   Ni  i
   i   i   i   i   i   i   i   i   i   i    i   RJ   RK   RL   R4   g74@gU&:?g:#J{/&@RM   gư>gIV&
@(   i
   i   i   i   i   i   i   i   (   i   i   (   i    i    i    i    i   i   i   i   (   R   R5   R6   R:   R   R9   R;   R<   R   t   PoissonR=   R>   R   R?   R@   (   RC   R%   R&   RE   RF   RG   RH   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_margins_poisson   s    !c      	   C   s   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	 d
 d g  } t j	 | | | d t
 j   } | j d d  } t | j | j d d t | j | j d d d S(   sf   
        Check the 2-class multinomial (nominal) GEE fit against
        logistic regression.
        i  i    i   i   i   NRK   RL   R4   g]
@ggRJ   RM   gh㈵>(   i    i    i    i    i   i   i   i   (   i   i   (   i   i   i   i   i   i   i   i   (   R   R5   R6   R:   R   R9   R;   RP   R=   R<   R   RN   R   R)   RA   (   RC   R%   R&   RE   RF   R   t   logit_modelt   logit_results(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_multinomial   s    c   
      C   s  t  j d  } t  j d  } d | d d +t  j d  } | d d c !d 7+t  j t  j d  t  j d  } t j | | | d | } | j   } t	 | j
 t  j d d  t  j d  } d | d )t  j d } t  j d } t  j d } t  j t  j d  | f  } t j | | | d | d t j   } t  j d d	 d d d	 d d d g  } d t d |  }	 | j d d d |	  } t	 | j
 t  j d d d t	 | j d  t	 | j t  j d d d t j | | | d | d t j   } | j d d  d  S(    Ni   i   i    i
   i   t   weightsg      @i   i   i   i   i   i   i	   R	   t
   ddof_scalet   scaling_factorg4%?g
?t   atolgư>gIEc?g'i֦?gU?gh㈵>(   i   i   (   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   (   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   (   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i	   i	   i
   i
   (   g4%?g
?(   g'i֦?gU?(   R   R   t   zerosR8   R9   R:   R;   R<   R=   R   R)   t   column_stackR	   t   Independencet   meant   floatt   scaleRA   t   Exchangeable(
   RC   R&   R]   R%   RE   RF   RG   t   exog1t   gt   fac(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_weighted   s:    "
'c         C   s%  t  j j t  j j t   } t  j j | d d  } t j |  } t j	   } t
 j   } t j j d | d | d | d | } | j d d  } d	 d
 l m } | j d | d t j	   }	 |	 j   }
 | j } |
 j }
 t | j |
 j d d d d t | j |
 j d d d d d  S(   NR   s   epil.csvs   y ~ age + trt + baset   subjectR	   RJ   RK   RL   i(   t   GLMRM   gư>R`   (   R   R   R   R   R   R   R*   t   read_csvR   RX   R	   Rc   R;   R<   t   from_formulaR=   t+   statsmodels.genmod.generalized_linear_modelRm   R/   R   R)   RA   (   RC   R"   R    t   datat   famt   indt   mod1t   rslt1Rm   t   mod2t   rslt2(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_poisson_epil  s     		c   	      C   s  t  j j d  t  j j d d  } t  j j d 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 d } | j
   } t t | j  d  t t  j | j j  t  j d  t  j |  t  j |  j d  @} t j	 | | | | d  d   f | | d d } | j
   } t | j | j  t | j | j  d  S(   Ni  R3   id   i   i   i    i   i   i   i
   i   t   missingt   dropi_   t   none(   id   i   (   i_   i   (   R   R5   R6   R7   R8   R    R   t   nanR;   R<   R=   R   t   lenR%   t   asarrayR&   R   R:   t   isfinitet   allR)   RA   (	   RC   R%   R&   RE   Rt   Ru   t   iiRv   Rw   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_missing   s"    !#%3c      
   C   sT  t  j j d  t  j j d d  } t  j j d d  } t  j j d d  } t  j j d d  } t  j t d  t  j d   } t  j | d <t  j | d d +t  j | d d	 +t j	 i | d
 6| d 6| d 6| d 6| d 6 } xid D]a} | j
   } i  }	 | d k r:d | d <d | d <d |	 d <d |	 d <n  t j j d d 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 <n  t j j d d | d d | d d |	 } | j   } t | j j | j j  t | j j | j j  q Wd  S(   Ni  R3   id   i   i   i    i   i
   i   R%   Rh   t   exog2t   exog3RE   i   t   offsett   times   endog ~ exog1 + exog2 + exog3Rq   Ry   Rz   i_   i   R{   (   i    i   (   i_   i   (   R   R5   R6   R7   R8   R    R   R|   R*   t	   DataFramet   copyR;   R<   Ro   R=   R   R}   R%   R~   R&   R   R:   t   dropnaR)   t   valuesRA   (   RC   R%   Rh   R   R   RE   t   data0t   kRq   t   kwargsRt   Ru   Rv   Rw   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_missing_formula<  sH    !


#c         C   s	  xt  d  D] } x t t f D] } x t t f D] } d d d g } d | | <t j | d  } t j | d d f  } i  } t j | d  | d <| r t j d  | d <n  | r t j d  | d	 <n  t t   t j | | |  Wd  QXq3 Wq  Wq Wd  S(
   Ni   i   i   i    i   i   RE   t   exposureR   (	   t   ranget   FalseRU   R   Ra   R   t
   ValueErrorR;   R<   (   RC   t   jt   k1t   k2t   pR%   R&   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_invalid_argsm  s    
c      
   C   s&  t  d  \ } } } t j t |   } t |  } x9 | D]1 } t j | | k  } t t |   | | <q= Wt j   } t	 j
   }	 t j | | | d | d |	 }
 |
 j   } t j | | | d | d | d |	 } | j   } t | j | j d d t | j   | j   d d d  S(   Ns   gee_logistic_1.csvRJ   R	   R   t   decimali   (   R'   R   Ra   R}   t   sett   flatnonzeroR    R   RN   R	   t   AutoregressiveR;   R<   R=   R   R)   t   standard_errors(   RC   R%   R&   R$   t   Tt   idxR   t   jjRJ   t   vat   md1t   mdf1t   md2t   mdf2(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_default_time  s     !	c      	   C   s  t  d  \ } } } t j t |   } t |  } x9 | D]1 } t j | | k  } t t |   | | <q= Wt j   } t	 j
   }	 t	 j   }
 t	 j   } d d d d g d d d d	 g d
 d d d g g } d d d d g d d d d g d d d d g g } x t |
 |	 | f  D] \ } } t j | | | | | |  } | j   } t |  t |  k rt | j | | d d t | j   | | d d qqWt j | d  d   d  f | d  d   d  f | d  d   d d   f f d d } t j |  } d d g g  t | j d d  D] } d  | d ^ q.| _ x t |
 |	 f  D]s \ } } t j j d! d | d" | d# | } | j   } t | j | | d d t | j   | | d d q_Wd  S($   Ns   gee_logistic_1.csvgg) ?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   i   i   R   t   Yt   Ids   X%ds   Y ~ X1 + X2 + X3RJ   R	   (   R'   R   Ra   R}   R   R   R    R   RN   R	   Rg   Rc   R   t	   enumerateR;   R<   R=   t   idR   R)   R   R   t   NoneR*   R   R   R   t   columnsRo   (   RC   R%   R&   R$   R   R   R   R   RJ   t   vet   viR   t   cft   seR   t   vt   mdt   mdft   DR   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_logistic  sR    #				"K	3c      	   C   s+  d d d g } d d d g d d d	 g d
 d d g g } t  j j d  d } d } d } t j   } xd D]} t  j |  d  d   d  f t  j |  d  d  d   f } t  j |  } | | }	 t  j j	 |	  }
 g  } g  } g  } x t
 |  D] } t  j j d | | f  } | j |  | j d  } t  j |
 t  j j d |   } | j | |  | j | t  j |   q Wt  j |  } t  j |  } t  j | d d } t j   } t j | | | d | d | } | j   } t | j | | d  t | j | | d  qn Wd  S(   Ni    gD?g$ĸ?g(P8yI?gPiޒ?g6s?g1?gc?gB?g9k"?g0E?gK13?iHoid   g      ?i   i   i   R3   R   RJ   R	   (   i   i   i   (   R   R5   R6   R   t   GaussianR9   R   t   abst   linalgt   choleskyR   R7   t   appendt   sumt   dotR   R   R	   R   R;   R<   R=   R   t
   dep_paramsR)   (   RC   t   dep_params_truet   params_truet	   num_groupt   ar_paramR   t   gat   gsizet   ixt   cmatt   cmat_rR%   R&   RE   t   it   xt   expvalt   errorst   arR   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_autoregressive  s@    <
!!c         C   s   t  j   } t d  \ } } } t j   } t j | | | d  | |  } | j   } t	 t
 j | | j  | j  t	 | t
 j | | j  | j  d  S(   Ns   gee_linear_1.csv(   R   R   R'   R	   Rg   R;   R<   R   R=   R   R   R   R)   R,   R-   (   RC   RJ   R%   R&   R$   R   R   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_post_estimation!  s    
c         C   s  t  j j d  d } t  j j d | d f  } | d  d   d f | d  d   d f | d  d   d f } | d t  j j d |  7} t  j t  j | d  t  j d   } t  j d	 d
 d d g g  } t  j d g  } t j	   } t
 j   } t j | | | d | d | d | | f }	 |	 j   }
 t |
 j   d d  t |
 j   d d  t  j d	 d
 d d g g  } t  j d	 g  } t j	   } t
 j   } t j | | | d | d | d | | f } | j   } t | j   d d  t | j   d d  t  j j d | d f  } t  j d d
 g g  } t  j d g  } t  j d } xt d  D]r} | d  d   d f d | d | d  d   d f t  j j d |  } t j	   } t
 j   } t j | | | d | d | } | j   } t j	   } t
 j   } t j | | | d | d | d | | f }	 |	 j   }
 t  j t  j | t  j | j   |    } t  j | | j  | } d t j t  j |   } |
 j   d } t t  j | |  d  qqWd  S(   Ni   i   R3   i   i    i   i   i   g      ?ig        RJ   R	   t
   constraintt	   statisticgL?s   p-valueg8o;?gV@gBvw?i
   g      ?g      $@g{Gz?(   i   i(   R   R5   R6   R7   R8   R9   R   t   arrayR   R   R	   Rc   R;   R<   R=   R   t
   score_testR:   R   t   sqrtR   t
   cov_paramsR)   R
   t   cdfR   R   (   RC   RD   R&   R%   R$   t   Lt   RRJ   R   Rt   t   res1Rv   t   res2t   fR   t   mod0t   rslt0R   t   wald_zt   wald_pt   score_p(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_scoretest0  sd    >(3	-R	   c         C   s  t  j j d  d } t  j j d | d f  } t  j t  j | d  t  j d   } | d  d   d d g f } | j d  d t  j j d |  } t  j d d d d g d d d d g g  } t  j	 d  } t
 j | | | d	 | | f d
 |   }	 |	 j   t
 j | | | d
 |   }
 |
 j   } x t t g D] } t
 j | | | d
 |   } | ry| j   n  | j |  } t | d |	 j d  t | d |	 j d  t | d |	 j d  qBWd  S(   Ni   i   R3   i   i    i   i   i   R   R	   R   s   p-valuet   df(   R   R5   R6   R7   R8   R9   R   R   R~   Ra   R;   R<   R=   R   RU   t   compare_score_testR   t   score_test_results(   RC   R	   RD   R&   R$   t   exog_subR%   R   R   t   mod_lrt   mod_subt   res_subt   call_fitt   modt   score_results(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_compare_score_testl  s6    (&-
c   
      C   s  t  j j d  d } t  j j d | d f  } t  j t  j | d  t  j d   } | d  d   d d g f } | j d  d t  j j d |  } t t	  ` t
 j | | | d t j   } | j   } t
 j | | | d t j   } | j |  Wd  QXt t	  ` t
 j | | | d	 t j   } | j   } t
 j | | | d	 t j   } | j |  Wd  QXt t  l t
 j | | |  } | j   } t
 j | d d
 !| d  d
  d  d   f | d d
 ! } | j |  Wd  QXt t	  c t  j j d |  }	 t
 j | | | d |	 } | j   } t
 j | | |  } | j |  Wd  QXt j t	  ] t  j j d |  }	 t
 j | | |  } | j   } t
 j | | |  } | j |  Wd  QXd  S(   Ni   i   R3   i   i    i   i   R	   RJ   id   R]   (   R   R5   R6   R7   R8   R9   R   R   R   t   UserWarningR;   R<   R	   Rg   R=   Rc   R   R   R   RX   R   t	   Exceptiont   uniformt   pytestt   warns(
   RC   RD   R&   R$   R   R%   R   R   R   t   w(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt    test_compare_score_test_warnings  sH    (&!9c         C   s  t  j j d  d } t  j j d | d f  } | d  d   d f | d  d   d f | d  d   d f } | d t  j j d |  7} t  j t  j | d  t  j d   } t  j d	 d
 d d g g  } t  j d g  } t j	   } t
 j   } x d D] }	 t j | | | d | d | d | | f }
 |
 j d |	  } | j d |	  t | j j t  j d  t | j j t  j d  |	 d k rt | j j t  j d  qqWd  S(   Ni   i   R3   i   i    i   i   i   g      ?ig        t   robustRL   t   bias_reducedRJ   R	   R   RK   (   R   RL   R   (   i   i   (   i   i   (   i   i   (   R   R5   R6   R7   R8   R9   R   R   R   R   R	   Rc   R;   R<   R=   R   R   t
   cov_robustR   R:   t	   cov_naivet   cov_robust_bc(   RC   RD   R&   R%   R$   R   R   RJ   R   RK   RF   RG   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_constraint_covtype  s&    >(c      	   C   s5  t  j   } t d  \ } } } t j   } t j   } d d d d g d d d d	 g g } d
 d d d g d d d d g g } x t | | f  D]m \ }	 }
 t j | | | d  | |
  } | j
   } t | j | |	 d d t | j   | |	 d d q Wt j | d  d   d  f | d  d   d  f | d  d   d d   f f d d } t j |  } d d g g  t | j d d  D] } d | d ^ q| _ x t | | f  D]s \ }	 }
 t j j d d | d | d |
 } | j
   } t | j | |	 d d t | j   | |	 d d qWd  S(   Ns   gee_linear_1.csvg: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   i
   i   R   R   R   s   X%ds   Y ~ X1 + X2 + X3RJ   R	   (   R   R   R'   R	   Rc   Rg   R   R;   R<   R   R=   R   R)   R   R   R   R*   R   R   R   R   Ro   (   RC   RJ   R%   R&   R$   R   R   R   R   R   R   R   R   R   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_linear  s<    		K	3c         C   sM  t  j   } t j j d  t j j d d  } d | d  d   d f <t j | t j d  t j j d d  } t j t j	 d  t j d  } t
 j   } t
 j   } t j d d d d g g } t j d } xp t | | f  D]\ \ }	 }
 t j | | | d  | |
 d	 | | f } | j   } t | j d
 d d d q Wd  S(   Ni  R3   i,  i   i   i    g?id   R   i   R   i
   (   i,  i   (   i   i   i    g?(   i   i   i   (   i    (   R   R   R   R5   R6   R7   R   R:   R8   R9   R	   Rc   Rg   R   R;   R<   R   R=   R   R)   (   RC   RJ   R&   R%   R$   R   R   R   R   R   R   R   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_linear_constrained  s     "c      	   C   s  t  j   } t d  \ } } } g  } xG t | j d d  D]. } | j d g d  | j d g d  q? Wt j |  d  d   d  f } t	 j
   } t j | | | d  | |  } | j   }	 t j d  }
 t j d! } t |	 j |
 d d t |	 j   | d d t	 j   } t j | | | d  | | d | } | j d |	 j  } t j d" }
 t j d# } t | j |
 d d t | j   | d d | j	 j   } t | j t j d$ d d d d d  S(%   Ns   gee_nested_linear_1.csvi    i
   i   i   gM 6cſgSQ%?g]xҀI# gIT4"?g_Ay?g(Ǥ?g#Ҥ?gK2W?R   i   t   dep_dataR4   glQſg%נqY?g`!) g;8-?g]@x?gv'+՝?g:@I?g){l?g8j?gތ?g>>tA?R`   gh㈵>RM   (   gM 6cſgSQ%?g]xҀI# gIT4"?(   g_Ay?g(Ǥ?g#Ҥ?gK2W?(   glQſg%נqY?g`!) g;8-?(   g]@x?gv'+՝?g:@I?g){l?(   g8j?gތ?g>>tA?(   R   R   R'   R   R   t   extendR   R   R   R	   Rc   R;   R<   R=   R:   R   R)   R   t   NestedRB   R   t   Variance(   RC   RJ   R%   R&   R$   t   group_nR   t   dpR   R   R   R   t   neR   t   smry(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_nested_linear1  s:    	c      
   C   s  t  j j d  d } t  j t  j | d  t  j d   j t  j  } t  j t  j | d  t  j d   j t  j  } t  j t  j | d  t  j d   j t  j  } t  j j d | d  } d t  j j d | d  } d t  j j d | d  } | | | | | | } | d	 t  j j d |  7} t	 j
 i | d
 6| d 6| d 6| d 6 }	 t j j d d d d d d t j   d |	 }
 |
 j   } | j j   } t | j t  j d d d d d d  S(   Ni  i'  id   i2   i
   R3   i   i   g      ?t   yt	   TheGroupst   groups1t   groups2s   y ~ 1RE   R   s   0 + groups1 + groups2R	   Rq   g-y<-?gPn@gvӂ!@g⪲?R`   gh㈵>RM   (   g-y<-?gPn@gvӂ!@g⪲?(   R   R5   R6   R8   R9   R   t   astypet   intR7   R*   R   R;   R<   Ro   R	   R   R=   RB   R   R   R:   (   RC   RD   RE   R  R  t   groups_et	   groups1_et	   groups2_eR  R   RF   RG   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_nested_pandasZ  s,    444	c   
   	   C   s   t  j   } t d d t \ } } } t j d  } t j | | | d  | |  } | j	   } t
 j d } t | j | d d t
 j d }	 t | j |	 d d t t |  t j  t t | j  t j  d  S(   Ns   gee_ordinal_1.csvR!   t   ordinalg3xMz?gfE#D?g3ٿgI(CvZg]]>'?gvj?g1Ҥw?gP4R   i   gTwܻ?g*vq?g>2?g%q[?g?gy?ox?g[${?gj۵?(   g3xMz?gfE#D?g3ٿgI(CvZg]]>'?gvj?g1Ҥw?gP4(   gTwܻ?g*vq?g>2?g%q[?g?gy?ox?g[${?gj۵?(   R   RN   R'   R   R	   t   GlobalOddsRatioR;   t
   OrdinalGEER   R=   R   R:   R   R)   RA   R   t   typet   OrdinalGEEResultsWrapperR/   t   OrdinalGEEResults(
   RC   RJ   R%   R&   RE   R   R   t   rsltR   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_ordinal~  s    	c      	   C   s   t  j j d  d } t  j j d d |  } t  j |  } t  j j d |  } t  j j d |  } t j i | d 6| d 6| d 6| d	 6 } t j	 j
 d
 | d | } | j   t j   7 t j d  t j j
 d
 | d | } | j   Wd  QXd  S(   Ni  i(   i    i   R3   R  RE   t   x1t   x2s   y ~ 0 + x1 + x2Rq   t   ignore(   R   R5   R6   t   randintR9   R7   R*   R   R;   R  Ro   R=   t   warningst   catch_warningst   simplefilterRP   (   RC   RD   R  RE   R  R  R   RF   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_ordinal_formula  s    +
	c         C   s   t  j j d  d } t  j j d d |  } t  j t  j | d  t  j d	  } t  j j d | d f  } t j	   } t
 j | | | d | } | j   d  S(
   Ni  i(   i    i   i   i   R3   R	   (   i   i   (   R   R5   R6   R  R8   R9   R:   R7   R	   t   OrdinalIndependenceR;   R  R=   (   RC   RD   R  RE   R   t   odit   model1(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_ordinal_independence  s    &c      
   C   s   t  j j d  d } t  j j d d |  } t  j t  j | d  t  j d
  } t  j j d | d f  } t j	   C t j
 d  t j   } t j | | | d	 | } | j   Wd  QXd  S(   Ni  i(   i    i   i   i   R3   R  R	   (   i   i   (   R   R5   R6   R  R8   R9   R:   R7   R  R  R  R	   t   NominalIndependenceR;   RP   R=   (   RC   RD   R  RE   R   t   nmiR  (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_nominal_independence  s    &c   
      C   s   t  j   } t d d t \ } } } t j d  } t j | | | d  | |  } | j	   } | j
   }	 t t |	 t j  t  d  S(   Ns   gee_ordinal_1.csvR!   R  (   R   RN   R'   R   R	   R  R;   R  R   R=   RR   R   R(   RS   RT   RU   (
   RC   RV   RJ   R%   R&   RE   R   R   R  R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_ordinal_plot  s    	c         C   sj  t  d d t \ } } } t j   } t j | | | d | } | j   } t j d } t j d } t	 | j
 | d d d d t	 | j   | d d d d t j d  } t j | | | d | }	 |	 j d | j
  }
 t j d } t j d } t	 |
 j
 | d d d d t	 |
 j   | d d d d t t |  t j  t t | j  t j  d  S(   Ns   gee_nominal_1.csvR!   R	   gfy?g؀q?g鷯gg
ݿgU%Ӷ?gŲ?grG ,:?gV!̊43?RM   gh㈵>R`   t   nominalR4   g=$?g歺Ք?go[tTgْUg*V?g^?g=zGb?g_`F?(   gfy?g؀q?g鷯gg
ݿ(   gU%Ӷ?gŲ?grG ,:?gV!̊43?(   g=$?g歺Ք?go[tTgْU(   g*V?g^?g=zGb?g_`F?(   R'   R   R	   Rc   R;   RP   R=   R   R:   R   R)   R   R  R   R  t   NominalGEEResultsWrapperR/   t   NominalGEEResults(   RC   R%   R&   RE   R   Rt   Ru   t   cf1t   se1Rv   Rw   t   cf2t   se2(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_nominal  s$    	c      	   C   sM  t  j   } t d  \ } } } t j   } t j   } d d d d d d g d d	 d
 d d d g g } d d d d d d g d d d d d d g g } x t | | f  D]m \ }	 }
 t j | | | d  | |
  } | j
   } t | j | |	 d d t | j   | |	 d d q Wt j | d  d   d  f | d  d   d  f | d  d   d d   f f d d } t j |  } d d  g g  t | j d d  D] } d! | d ^ q| _ x t | | f  D]s \ }	 }
 t j j d" d  | d# | d$ |
 } | j
   } t | j | |	 d d t | j   | |	 d d qWd  S(%   Ns   gee_poisson_1.csvg쨢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   i   i   i   R   R   R   s   X%ds   Y ~ X1 + X2 + X3 + X4 + X5RJ   R	   (   R   RX   R'   R	   Rc   Rg   R   R;   R<   R   R=   R   R)   R   R   R   R*   R   R   R   R   Ro   (   RC   RJ   R%   R&   R   R   R   R   R   R   R   R   R   R   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_poisson  sD    		,(3c         C   s  t  j j d  d } t  j j d | d f  } t  j j d |  } t  j t  j | d  t  j d   } d | d d +d	 | d
 d +t j | | d | } | j	   } t  j j
 |  } | | } | | d  d   f }	 | | }
 t j | |	 d |
 } | j	   } t | j | j  t | j | j  i  } d d  l } x8 t t |   D]$ \ } } | j | | d !| | <qWWg  | D] } | | ^ q} t j | | d | } | j	   } t | j | j  t | j | j  d  S(   Ni   i(   R3   i   i   i   i   i   i	   i"   i$   RE   i(   R   R5   R6   R7   R8   R9   R   R;   R<   R=   t   permutationR   R)   t   tvaluest   stringR   R   t   ascii_letters(   RC   RD   R   R  RE   R  t   result1R   t   y1R  R  t   model2t   result2t   mpR/  R   Ri   R  t   model3t   result3(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_groups@  s4    (

c         C   s  t  j   } t j   } t j j d  t j j d d  } t j j d d  } t j j d d  } t j j d d  } t j t	 d  t j
 d   } t j i | d 6| d 6| d 6| d	 6 } t j j d
 | | d | d | }	 |	 j   }
 t j j d
 d | j   } | j } t | j |
 j d d |
 j d d  } t | j | d d |
 j t j t j |
 j   } t | | j d d d  S(   Ni  R3   id   i   i   R   t   X1t   X2t   X3s   Y ~ X1 + X2 + X3RJ   R	   Rq   R   i
   RK   RL   (   R	   Rc   R   R   R   R5   R6   R7   R8   R    R   R*   R   R;   R<   Ro   R=   t   lmt   OLSR/   R   R)   R   RA   R   t   diagR   R.  (   RC   t   vsRJ   R   R9  R:  R;  RE   R   R   R   t   olsR   t   naive_tvalues(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_compare_OLSj  s&    !+	"c      
   C   sp  d } t  j j d  t  j j d |  } t  j j d |  } t  j t  j | d f  | d  d   d  f f d d } t  j j d |  } t  j t	 d  t  j d   } t
 j i | d 6| d	 6| d
 6| d 6 } t j   } t j   }	 t j | | | d | d |	 d | }
 |
 j   } t j j d | | d | d |	 d | } | j   } t j j d | | d d
 d |	 d | } | j   } t j j d d | d | d |	 d | } | j   } t j j d d | d d
 d |	 d | } | j   } t | j | j d d t | j | j d d t | j | j d d t | j | j d d t |  d  S(   Nid   i  R3   i   R   i   i   R   R9  t   TimeRE   R   RJ   R	   s   Y ~ X1R   i   (   R   R5   R6   R7   R   R   R   R   R8   R    R*   R   R	   R   R   R   R;   R<   R=   Ro   R   R)   R1   (   RC   RD   R   R9  t   matRC  RE   Rq   R   RJ   Rt   Ru   Rv   Rw   t   mod3t   rslt3t   mod4t   rslt4t   mod5t   rslt5(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_formulas  s<    :!+	c         C   sI  t  j   } t j   } t j j d  d t j j d d  d k  } t j j d d  } t j j d d  } t j j d d  } t j j d d d d } t	 j
 i | d 6| d 6| d	 6| d
 6 } t j j d | | d | d | }	 |	 j   }
 t j j d d | } | j d t  } t |
 j j | j j d d d  S(   Ni  i   R3   id   i    i   R   R9  R:  R;  s   Y ~ X1 + X2 + X3RJ   R	   Rq   t   dispR   i
   (   R	   Rc   R   RN   R   R5   R6   R7   R  R*   R   R;   R<   Ro   R=   t   discretet   LogitR   R   R)   R   (   RC   R?  RJ   R   R9  R:  R;  RE   R   Rt   Ru   Rv   Rw   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_compare_logit  s     +c         C   sR  t  j   } t j   } t j j d  t j t j t j j	 d d    } t j j
 d d  } t j j
 d d  } t j j
 d d  } t j j d d d d } t j i | d 6| d 6| d 6| d	 6 } t j j d
 | | d | d | }	 |	 j   }
 t j j d
 d | } | j d t  } t |
 j j | j j d d d  S(   Ni  R3   id   i    i   R   R9  R:  R;  s   Y ~ X1 + X2 + X3RJ   R	   Rq   RL  R   i
   (   R	   Rc   R   RX   R   R5   R6   t   ceilt   logR   R7   R  R*   R   R;   R<   Ro   R=   RM  R   R   R)   R   (   RC   R?  RJ   R   R9  R:  R;  RE   R   Rt   Ru   Rv   Rw   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_compare_poisson  s     (+c         C   s  d } t  j j d  t  j j d |  } t  j j d |  } t  j t  j | d  t  j d  } t  j j d d d | } t  j j d | | | d | } t j	 i | d 6| d 6| d	 6| d
 6| d 6 } d } t
 j j | | | d t j   d d }	 |	 j d d d d g  }
 t |
 j t  |
 j   } |
 j d | j  } |
 j d | d d	 g d | j  } |
 j d | d d	 g d d | j  } |
 j d d | j  } t | |  t | |  t | | | j  t | | | j  t  j j d d  } t  j j d d  } t j	 i | d 6| d	 6 } |
 j d |  } |
 j } | d | d | | d | } t | |  d  S(   Ni2   i  R3   i   i   g?R   R9  R:  RE   R   s   Y ~ X1 + X2RJ   R4   i    R&   i
   (   i   i   (   R   R5   R6   R7   R8   R9   R:   R   R*   R   R;   R<   Ro   R   R   R=   R   t	   convergedRU   t   predictR   R   R)   (   RC   RD   R9  R:  RE   R   R   Rq   t   fmlRF   RG   t   pred1t   pred2t   pred3t   pred4t   pred5t   x1_newt   x2_newt   new_exogt   pred6R)   t   pred6_correct(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_predict  s>    &$%	%)	"c         C   s   t  j d } t  j d } t  j d } t j |  } t j d d d t  } t j | | | d | } | j	   } | j
 t  j d d  } t | j t  j d d
  d
 j   d  t | j t  j d d d d d t | t  j d d d d d d  S(   Ni   i   i   i   i   i   i   i   g      @i    t   max_lagt   gridR	   i   g      "@gmy@gim@g=פ6̣RM   gh㈵>R`   g3?g	R?(   i   i   i   i   i   i   i   i   i   i   i   g      @(   i   i   i   i   i   i   i   i   i   i   i   i   (   i    i    i    i   i   i   i   i   i   i   i   i   (   i   i   i   (   gim@g=פ6̣(   g3?g	R?(   R   R:   t   toolst   add_constantR	   t
   StationaryRU   R;   R<   R=   RA   R   R   t   covariance_matrixR   R)   (   RC   R%   R&   R$   t   csRF   RG   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_stationary_grid  s    #c         C   s7  t  j d } t  j d } t  j d } t  j d } t j |  } t j | | | d t j d d d t  } | j	   } | j
 t  j d d  } t | j t  j d d d d d t | t  j d d d d d t  j d d  d   d  f } t j | | | d | d t j d d d t  } | j	   d  S(   Ni   i   i   i   i   i   i   i   g      @i    R	   Ra  Rb  i   g      "@gim@g=פ6̣RM   gh㈵>R`   g3?g	R?R   (   i   i   i   i   i   i   i   i   i   i   i   g      @(   i   i   i   i   i   i   i   i   i   i   i   i   (   i    i   i   i    i   i   i    i   i   i    i   i   (   i    i    i    i   i   i   i   i   i   i   i   i   (   gim@g=פ6̣(   g3?g	R?(   i    i   i   i    i   i   i    i   i   i    i   i   (   R   R:   Rc  Rd  R;   R<   R	   Re  R   R=   RA   R   R   R)   R   (   RC   R%   R&   R   R$   RF   RG   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_stationary_nogrid#  s$     c      
   C   si  d } t  j j d  t  j j d |  } t  j j d |  } t  j t  j d  t  j d  } t  j j d d d | } t  j j d d d | } t  j j d | | | t  j	 |  d | } t
 j i | d 6| d	 6| d
 6| d 6| d 6| d 6 } d }	 t j j |	 | | d t j   d d d d }
 |
 j   } t | j t  | j   } | j d | d  } | j d | d  } | j d | d d | d  } | j d | d d | d d d | d d  } | j d | j j d d | d d d | d d d t  } t | |  t | |  t | |  t | d |  t | d |  d  S(   Ni2   i  R3   i   i   i   g?R   R9  R:  RE   R   R   s   Y ~ X1 + X2RJ   R&   it	   transform(   i   i   (   R   R5   R6   R7   R8   R9   R:   R   t   poissonRQ  R*   R   R;   R<   Ro   R   RX   R=   R   RS  RU   RT  RF   R&   R   R   (   RC   RD   R9  R:  RE   R   R   R   Rq   RU  RF   RG   RV  RW  RX  RY  RZ  R^  (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_predict_exposureA  sD    "%		c      
   C   s  d } t  j j d  t  j j d |  } t  j j d |  } t  j t  j d  t  j d  } t  j j d d d | } t  j |  } t  j j	 d | | d | d | } t
 j i | d 6| d	 6| d
 6| d 6| d 6| d 6 } d }	 t j j |	 | | d t j   d d }
 |
 j   } t | j t  t j j |	 | | d t j   d | } | j d | j  } t | j | j  t | j t  t j j |	 | | d t j   d | } | j d | j  } t | j | j  t | j t  t j j |	 | | d t j   d d } | j d | j  } t | j | j  t | j t  t j j |	 | | d t j   d d d d } | j   } t | j t  t j j |	 | | d t j   d d | } | j d | j  } t | j | j  t | j t  d  S(   Ni2   i  R3   i   i   i   g?R   R9  R:  RE   R   R   s   Y ~ X1 + X2RJ   R4   (   i   i   (   R   R5   R6   R7   R8   R9   R:   R   t   expRk  R*   R   R;   R<   Ro   R   RX   R=   R   RS  RU   R)   R   (   RC   RD   R9  R:  RE   R   R   R   Rq   RU  R  R1  R3  R4  R6  R7  t   model4t   result4t   model5t   result5t   model6t   result6(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_offset_formulai  sZ    "(%				c         C   sh  t  j   } t j   } t j j d  d } t j j d |  } t j j d |  } t j j d |  } t j t j	 d  t j
 d  } t j i | d 6| d 6| d 6 } t j j d	 | | d
 | d | }	 |	 j   }
 |
 j d d d  } t t |  d  t g  | D] } | j  j ^ qd d g  t g  | D] } | j d ^ qAd d g  d  S(   Ni  id   R3   i2   i   R   R9  R:  s   Y ~ X1 + X2RJ   R	   i    g      ?i   g        g&(?g&J?(   i   i   (   R	   Rg   R   R   R   R5   R6   R7   R8   R9   R:   R*   R   R;   R<   Ro   R=   t   params_sensitivityR   R}   R   R)   (   RC   R   RJ   RD   R   R9  R:  RE   R   R   R  t   psR   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_sensitivity  s$    "$ c         C   s  t  j j d  t  j j d d  } t  j j d d  } d | d d  d f <t  j t  j d  t  j d	   } d
 | d )i  } d d	 d d g } xt d	  D]
} i  | | <| d
 k  r | | t  j d | | t  j d f | | d <n2 | | t  j d | | t  j d f | | d <| d
 k  rqt  j	 d	 d  \ } } | | | | | | f | | d <q t  j	 d d  \ } } | | | | | | f | | d <q Wt
 j   }	 t j | | | d |	 }
 |
 j   } x t t f D] } t
 j | d | } t j | | | d | } | j   } | t k rNd \ } } n d \ } } t | j | j d | d | t | j | j d | d | t | j | j d | d | qWd S(   s   
        The Equivalence covariance structure can represent an
        exchangeable covariance structure.  Here we check that the
        results are identical using the two approaches.
        i`  R3   i   i   i   Ni    i   i   i   i   i   i   i   iR	   t
   return_covgư>gMbP?R`   RM   (   i   i   (   i    i   i   i   (   i    i   i   i   (   i    i   i   i   i   i   i   i   (   i    i   i   i   i   i   i   i   (   gư>gư>(   gMbP?gMbP?(   R   R5   R6   R7   R8   R9   R   R   R:   t   tril_indicesR	   Rg   R;   R<   R=   R   RU   t   EquivalenceR   R)   RA   Rf   (   RC   R%   R&   RE   t   pairst   startR   t   at   bt   exR  R1  Rx  t   ecR3  R4  R`   RM   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_equivalence  sD    $

# '(c         C   sz  t  j j d  t  j j d d  } t  j j d d  } d | d  d   d f <t  j t  j d  t  j d   } d	 | d
 )t  j t  j d  t  j d   j t  j  } | t  j j	 t
 |   } t j d | d t  } t j | | | d | } | j   xx | j D]m } | j | } g  | j   D] }	 t
 |	 d  ^ q1}
 t | | k  } t t |
  | | d d  qWt g   } x | j D]w } xn | j | j   D]Y } xP t | d | d  D]7 \ } } | | f } | | k st  | j |  qWqWqWt j d | d t  } t j | | | d | } t j   " t j d  | j d d  Wd  QXd  S(   Ni`  R3   i2   i   i   i    i   i
   i   i   t   labelsRx  R	   R  t   maxiter(   i2   i   (   R   R5   R6   R7   R8   R9   R   R  t   int32R-  R}   R	   Rz  RU   R;   R<   t   _pairs_from_labelst   group_labelsR{  R   R   R   R   t   zipt   AssertionErrort   addR  R  R  R=   (   RC   R%   R&   RE   R  t   eqR  Ri   R   R   t   vlt   mt   ixsR   R}  R~  t   ky(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_equivalence_from_pairs  s8    $
0
)#$(5   t   __name__t
   __module__RI   RO   RQ   R   t   markt   smoket
   matplotlibRW   RY   R\   Rk   Rx   R   R   R   R   R   R   R   R   t   parametrizeR	   Rc   Rg   R   R   R   R   R   R  R  R  R  R  R"  R#  R+  R,  R8  RB  RK  RO  RR  R`  Rh  Ri  Rl  Rt  Rw  R  R  (    (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR2   Z   s\   							-			1			Y	,		<$	1		B		)	$				H	*	"	,			&			(	7		;t   CheckConsistencyc           B   s   e  Z d Z d    Z RS(   c   
      C   s  |  j  } | j d |  j  } | j d |  j d d  } | j d |  j d d  } | j   | j   t | j d  t | j d  t | j d  d } x | d | j f | d | j f | d | j f g D] \ } } } t	 j
 t	 j |   }	 t | j |	 d | | d k rF| j d |  }	 t | j |	 d | n  t | j   | d | d d	 t | j | d | d d	 q Wt | j | j k  t | j | j k  t | j | j k  t t | j d d
 d  S(   NR4   RK   RL   R   R   g:0yE>RM   R`   g|=t	   robust_bc(   R   R=   R4   RB   R   RK   R   R   R   R   R   R>  R   RA   R   R   t   cov_params_defaultR   R   R   (
   RC   R   t
   res_robustt	   res_naivet   res_robust_bcRM   t   resRK   t   covRA   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_cov_type%  s8    			

" 	N(   R  R  R   R4   R  (    (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR  !  s   t   TestGEEPoissonCovTypec           B   s    e  Z e d     Z d   Z RS(   c         C   sv   t  d  \ } } } t j   } t j   } t j | | | d  | |  |  _ t	 j
 d d d d d d g  |  _ d  S(   Ns   gee_poisson_1.csvgڅ͝쨢gqIϫg}v]K
?g&&p?gtm^sgQ޿(   R'   R   RX   R	   Rc   R;   R<   R   R   R   R   R4   (   t   clsR%   R&   R   RJ   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   setup_classV  s    !c         C   s   t  d d t \ } } } t j |  } t j |  } t j |  } t j   } t j   } t	 j
 | | | d  | |  } | j   } t |  d  S(   Ns   gee_poisson_1.csvR!   (   R'   R   R*   R+   R   R   RX   R	   Rc   R;   R<   R   R=   R1   (   RC   R%   R&   R   RJ   R   R   Rw   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_wrapperc  s    	(   R  R  t   classmethodR  R  (    (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR  T  s   t   TestGEEPoissonFormulaCovTypec           B   s   e  Z e d     Z RS(   c         C   s  t  d  \ } } } t j   } t j   } t j | d  d   d  f | d  d   d  f | d  d   d d   f f d d } t j	 |  } d d g g  t
 | j d d  D] } d | d ^ q | _ t j j d d | d | d	 | |  _ t j d
 d d d d d g  |  _ d  S(   Ns   gee_poisson_1.csvi   R   R   R   s   X%ds   Y ~ X1 + X2 + X3 + X4 + X5RJ   R	   gڅ͝쨢gqIϫg}v]K
?g&&p?gtm^sgQ޿(   R'   R   RX   R	   Rc   R   R   R   R*   R   R   R   R   R;   R<   Ro   R   R   R4   (   R  R%   R&   R   RJ   R   R   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR  v  s    ,(3(   R  R  R  R  (    (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR  t  s   t   TestGEEOrdinalCovTypec           B   s    e  Z e d     Z d   Z RS(   c      	   C   s   t  j   } t d d t \ } } } t j d  } t j | | | d  | |  |  _	 t
 j d d d d d d	 d
 d g  |  _ d  S(   Ns   gee_ordinal_1.csvR!   R  g3xMz?gfE#D?g3ٿgI(CvZg]]>'?gvj?g1Ҥw?gP4(   R   RN   R'   R   R	   R  R;   R  R   R   R   R   R4   (   R  RJ   R%   R&   RE   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR    s    	!	c         C   s   t  d d t \ } } } t j | d d } t j |  } t j | d d } t j   } t j d  } t	 j
 | | | d  | |  } | j   } t |  d  S(   Ns   gee_ordinal_1.csvR!   t   namet   yendogt	   the_groupR  (   R'   R   R*   R+   R   R   RN   R	   R  R;   R  R   R=   R1   (   RC   R%   R&   RE   RJ   R   R   Rw   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR    s    	(   R  R  R  R  R  (    (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR    s   t   TestGEEMultinomialCovTypec           B   s    e  Z e d     Z d   Z RS(   c         C   sg   t  d d t \ } } } t j   } t j | | | d | |  _ t j d d d d g  |  _	 d  S(   Ns   gee_nominal_1.csvR!   R	   gꇿ?gܱ"/*?g7qg@Bݿ(
   R'   R   R	   Rc   R;   RP   R   R   R   R4   (   R  R%   R&   RE   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR    s    	c         C   s   t  d d t \ } } } t j | d d } t j |  } t j | d d } t j   } t j | | | d | } | j	   } t
 |  d  S(   Ns   gee_nominal_1.csvR!   R  R  R  R	   (   R'   R   R*   R+   R   R	   Rc   R;   RP   R=   R1   (   RC   R%   R&   RE   R   R   Rw   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR    s    	(   R  R  R  R  R  (    (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR    s   c       	   C   sh  t  j j d  d \ }  } } t  j j d |  | | f  } d } | | d  d   d f t  j d | d  | d  d   d f | d  d   d f <d | d  d   d f | d  d   d	 f } t  j |  } t  j j |  } t  j t  j |   t  j	 |   } t
 j | | d
 | d t j   }	 |	 j d  }
 t |
 j d t  j d d d d d d  S(   Ni"  i  i   R3   g      ?i   i   gffffff?i   RE   RJ   gHz>i    iRM   g{Gz?R`   gQ?(   i  i   i   (   i    i   i    ii    (   R   R5   R6   R7   R   Rm  Rk  R8   R9   R   R;   R<   R   RX   t   fit_regularizedR   R)   R:   (   t   ngt   gsR   R   t   rt   lprRd   R  RE   RF   RG   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_regularized_poisson  s    S.$$c          C   s~  t  j j d  d \ }  } } t  j t  j |   t  j |   } t  j |  | | f  } d t  j j d |  |  d k  | d  d   d f <t  j j d |  |  | d  d   d f <d } xw t	 d |  D]f } t  j j d |  |  } | | d  d   | d f t  j
 d | d  | | d  d   | f <q Wt  j | d  d   d d  f t  j d  } d }	 t  j
 |	  t  j t  j j d |   t  j |   }
 |
 t  j
 d |	  t  j j d |  |  7}
 | |
 } t j | | d t j   d | } | j d d d } t  j d  } t  j d | d d +t | j | d d d d t | j j t  j |	 d d d d d  S(   Ni"  i   i   i   R3   g      ?i    i   i   g      ?g?R	   RE   g{Gz?R  id   RM   R`   g?g?(   i   i   i   (   i   i   g      ?i   (   i   i   g      ?i   (   R   R5   R6   R8   R9   R   Ra   R   R7   R   R   R   R:   R;   R<   R	   Rg   R  R   R)   R   (   R  R  R   RE   R   R  R   t   epsR  t   st   eR  RF   RG   R  (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_regularized_gaussian  s,    $3)K/7.
$c         C   s  t  j j d  t  j j d d  } t  j j d d  } t  j t  j d  t  j d  } t j | | |  } | j	   } | j
 d  } t t | t j  t  | j d  } t t | t j  t  | j d  } t t | t j  t  | j   } t t | t j  t  d  S(	   Niz  R3   id   i   i2   i   (   id   i   (   i   i   (   R   R5   R6   R7   R8   R9   R:   R;   R<   R=   t   plot_added_variableR   R(   RS   RT   RU   t   plot_partial_residualst   plot_ceres_residualst   plot_isotropic_dependence(   RV   R&   R%   RE   RF   RG   R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt
   test_plots  s    "c       %   C   s  d d d d d g d d d d d	 g d
 d d d d g d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g d  d d d! d" g d# d d d! d$ g d% d d d d& g d' d d d d( g d) d* d	 d! d	 g d+ d* d	 d d g d, d* d	 d d g d- d* d	 d d g d. d* d	 d d g d/ d* d	 d d g d0 d* d	 d d g d1 d* d	 d d g d2 d* d	 d3 d g d4 d* d	 d d g d5 d* d	 d d g d6 d* d	 d d g d7 d* d	 d d" g d8 d* d	 d d$ g d9 d* d	 d d& g d: d* d	 d d( g g! }  t  j |  d d; |  d	 } t j | j | j d k d f <t j j d< d= | d> d d? t	 j
   d@ t j   } | j   j   } d | dA <t j | j | dA d g d> | j d? t	 j
   d@ t j   } t | j | j  t | j | j  t | j | j  | j   } | j   } t | j j | j j  d  S(B   NR   t   alt   statust   faket   grpst   4At   Ai   i    t   5Ag       @t   6Ai   i   t   7At   8Ai   t   9Ai   t   11Ai   t   12Ai   t   13Ai   t   14Ai	   t   15Ai
   t   16Ai   t   17Ag      @i   t   18Ai   t   19Ai   t   20Ai   t   2Ct   Ct   3Ct   4Ct   5Ct   6Ct   9Ct   10Ct   12Ct   14Cg      @t   15Ct   17Ct   22Ct   23Ct   24Ct   32Ct   35CR   s   status ~ fakeRq   RE   R	   RJ   t   constant(   R*   R   R   R|   t   locR  R;   R<   Ro   R	   Rc   R   RN   R   R   R  R  R   R%   R&   RE   R=   R   R)   R   (   Rq   R   R   Rv   R  R   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyR     sb    
%c         C   sp   t  j d } t  j d } t  j d } t  j d	 } | d  d   d  f } | d  d   d  f } | | | | f S(
   Ni    i   i   i   i   (   i    i   i   i    i   i   i    i   i   i    i    i    i   i   i    (   i    i   i    i    i    i   i    i    i   i    i   i    i    i   i    (   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   (   i    i    i    i   i   i   i   i   i   i   i   i   i   i   i   (   R   R:   R   (   Rr   R  R  R  Ri   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   simple_qic_dataT  s    RJ   c         C   s=  |    } t  |   \ } } } } t j | | d | d | } | j d d  } | j } t j | | d | d | }	 |	 j d d  }
 |
 j } |  t j k r t |  d } t |  d } n |  t j k rct	 j
 |  } | d k } | | t	 j | |  | | | | <t	 j | t	 j |  | |  } t	 j | t	 j |  | |  } n t d   | j | j | j | j    } |	 j |
 j |
 j |
 j    } t | | d d d t | | d d d t j   * t j d	  | j   } |
 j   } Wd  QXt | | d
  t | | d
  d  S(   NRJ   RE   R^   i    g       @s   Unknown familyRM   g-C6?R  i   (   R  R;   R<   R=   R,   R   R   R}   RX   R   t
   zeros_likeRQ  R   R   t   qicR)   Rf   R   R   R  R  R  R   (   RJ   Rr   R  R  R  Ri   R  R1  t   mean1R3  R4  t   mean2t   ql1t   ql2t   cR   t   qle1t   qle2t   qler1t   qler2(    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_ql_knownb  s8    			'$'!!c         C   s  |    } t  |   \ } } } } t j | | d | d | } | j d d  } | j } t j | | d | d | }	 |	 j d d  }
 |
 j } |  t j k r d } n |  t j k r+t j	 | t j
 | d |  t j
 d |   } | t j	 | t j
 | d |  t j
 d |   8} n\ |  t j k r{t j	 | t j
 |  |  t j	 | t j
 |  |  } n t d   | j | j | j | j    \ } } } |	 j |
 j |
 j |
 j    \ } } } t | | | d d d	 d d  S(
   NRJ   RE   R^   i    i   s   unknown familyRM   gh㈵>R`   (   R  R;   R<   R=   R,   R   R   RN   R   R   RQ  RX   R   R  R)   Rf   R   R   (   RJ   Rr   R  R  R  Ri   R  R1  R  R3  R4  R  t   qldiffR  t   _R  (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_ql_diff  s,    				5<$c          C   sr   t  j t  ] t j   }  t |   \ } } } } t j | | d |  d | } | j   } | j	   Wd  QXd  S(   NRJ   RE   (
   R   R   R   R   R   R  R;   R<   R=   R  (   Rr   R  R  R  Ri   RF   RG   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   test_qic_warnings  s    (H   t   __doc__t   statsmodels.compatR    R   t   numpyR   R   t   numpy.testingR   R   R   R   R   R   R   t3   statsmodels.genmod.generalized_estimating_equationst   genmodt    generalized_estimating_equationsR;   t   statsmodels.toolsRc  t#   statsmodels.regression.linear_modelt
   regressiont   linear_modelR<  t   statsmodels.genmodR   R	   t#   statsmodels.discrete.discrete_modelRM  t   discrete_modelt   pandasR*   t   scipy.stats.distributionsR
   R  t   matplotlib.pyplott   pyplotRS   t   ImportErrorR   R   t   matplotlib.backends.backend_pdfR   R   R   R   RU   R'   R1   t   objectR2   R  R  R  R  R  R  R  R  R  R  R  R   R  R  R   RX   R  RN   R  R  (    (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_gee.pyt   <module>
   s`   4		     3 "		#		;	*,"