
p7]c           @   s  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 m
 Z
 d  d l Z d  d l m Z m Z m Z m Z d  d l m Z m Z m Z m Z d  d l m Z d  d l j j Z d d l m Z d	 e f d
     YZ  d   Z! d e f d     YZ" d e f d     YZ# d   Z$ e j% j& e j% j' e(   Z) e j% j* e) d  Z+ e j, e+  Z- g  e- D]* Z. e. j/ d  oe. j0 d  re. ^ q{Z- e j1 j2 d e-  e j1 j2 d e3 e4 g  e j1 j2 d e3 e4 g  d      Z5 d   Z6 d   Z7 e j1 j8 d    Z9 d   Z: e j1 j8 d    Z; d   Z< d e f d     YZ= d    Z> d! e f d"     YZ? d#   Z@ d S($   i(   t   PLATFORM_OSXN(   t   sparse(   t   MixedLMt   MixedLMParamst   _smw_solvert   _smw_logdet(   t   assert_almost_equalt   assert_equalt   assert_allcloset   assert_(   t
   _penaltiesi   (   t   lme_r_resultst	   R_Resultsc           B   s   e  Z d  Z d   Z RS(   sc  
    A class for holding various results obtained from fitting one data
    set using lmer in R.

    Parameters
    ----------
    meth : string
        Either "ml" or "reml".
    irfs : string
        Either "irf", for independent random effects, or "drf" for
        dependent random effects.
    ds_ix : integer
        The number of the data set
    c      
   C   sw  d | | | f } t  t d |  |  _ t  t d |  |  _ t  t d |  |  _ t  t d |  |  _ t  t d |  |  _ t t d |  r t  t d |  |  _ t  t d |  |  _	 t
 j |  j	  |  _	 n  t j j t j j t   } t j j | d	  } t j j | d
 |  } t |  T } t j |  }	 t |	  }
 g  |	 D]% } g  | D] } t |  ^ qb^ qU} Wd  QXt
 j |  } | d  d   |
 j d  f |  _ | d  d   |
 j d  f |  _ g  t |
  D]! \ } } | j d  r| ^ q} | d  d   | f |  _ g  t |
  D]! \ } } | j d  r3| ^ q3} | d  d   | f |  _ d  S(   Ns	   _%s_%s_%dt   coeft   vcovt   cov_ret   scalet   logliket
   ranef_meant   ranef_condvart   resultss   lme%02d.csvt   endogt   groupst   exog_fet   exog_re(   t   getattrR   R   t   vcov_rt   cov_re_rt   scale_rR   t   hasattrt   ranef_postmeanR   t   npt
   atleast_2dt   ost   patht   dirnamet   abspatht   __file__t   joint   opent   csvt   readert   nextt   floatt   asarrayt   indexR   R   t	   enumeratet
   startswithR   R   (   t   selft   metht   irfst   ds_ixt   bnamet   cur_dirt   rdirt   fnamet   fidt   rdrt   headert   linet   xt   datat   it   ii(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   __init__)   s2    8""44(   t   __name__t
   __module__t   __doc__R@   (    (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyR      s   c            s       f d   } | S(   Nc            s;   t  j |   j  j  j d   }  j | d  S(   Nt   has_fet
   profile_fe(   R   t   from_packedt   k_fet   k_ret   use_sqrtR   (   R<   t   params(   RD   t   modelRE   (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   fP   s    !(    (   RK   RE   RD   RL   (    (   RD   RK   RE   sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   loglike_functionL   s    t   TestMixedLMc           B   s  e  Z e j j e j j d  e e g  e j j d e e g  e j j d e e g  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 e j j d    Z d   Z e j j d    Z RS(   RI   t   remlRE   c   #   	   C   s-  d } d } d } d } t  j j d  t  j j d | | | f  } t  j j d | | | f  }	 d |	 d  d   d f <t  j j d | | d f  }
 t  j j d | | f  } | d  d   d	 f c d 9<t  j | t  j | d f   } t  j j d | d f  } t  j | t  j | d f   } | d  d   d	 f c d 9<| |	 j d  } | |
 j d  } t  j j d | |  } | j d  | | | } t  j t |  t  j |   } i i  d
 6i  d 6} xe t |  D]W } t  j | | k  } |
 | d d  f | d
 | <|
 | d d  f | d | <qWt	 | | | |	 d | d | } | j
 d |  } t | d | d | } ynx t d  D] } t  j j d |  } t  j j d | | f  } t  j | j |  } t  j j d d  d } t j | d | d | } | j d | d |  } | j | d | } t j | |  } t | | d d qW| t k r| t k r| j | j  }  | j j d t d t  } t | d t d t }! t j | |!  }" t |  |" d d n  Wn* t k
 r(t r"t j d  q)  n Xd  S(   Ni   i   i   i   i  t   sizei   i    it   at   bt   exog_vcRI   RO   RE   RD   R   t   vcompt   rtolgMbP?s4   fails on OSX due to unresolved numerical differences(   R   t   randomt   seedt   normalt   kront   onest   sumt   ranget   flatnonzeroR   t   fitRM   t   dott   TR   t   from_componentst
   get_packedt   scoret   ndt   approx_fprimeR   t   Falset   hessiant   params_objectt   Truet   approx_hesst   AssertionErrorR    t   pytestt   xfail(#   R0   RI   RO   RE   t   n_grpt   grpsizeRG   RH   R   R   RS   t   slopest	   slopes_vct	   re_valuest	   vc_valuest   errR   R   t   vcR>   t   ixRK   t   rsltR   t   krt	   fe_paramsR   RT   RJ   t
   params_vect   grt   ngrt   hesst	   loglike_ht   nhess(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_compare_numdiff[   sx    !!!"		c         C   s   t  j j d  t  j j d d	  } t  j t  j d  d d d g  } t  j t  j j d d  d d d g  } | j d  | t  j j d d  } t | | |  j   } t | | | t  j	 d   j   } t
 | j | j d d d  S(
   Ni  RP   i,  i   id   i   t   decimali   (   i,  i   (   R   RV   RW   RX   RY   t   arangeR[   R   R^   RZ   R   RJ   (   R0   t   exogR   t   g_errorsR   t   mdf1t   mdf2(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_default_re   s    $*&$c         C   s   t  j j d  t  j j d d	  } t  j t  j d  d d d g  } t  j t  j j d d  d d d g  } | j d  | t  j j d d  } t | | |  } | j d t	  } t
 t | d  t	  d  S(
   Ni  RP   i,  i   id   i   t   full_outputt   hist(   i,  i   (   R   RV   RW   RX   RY   R   R[   R   R^   Ri   R   R   (   R0   R   R   R   R   t   modRw   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_history   s    $*&c         C   s  t  j j d  d } d } d } t  j j d | | | f  } t  j | | d f  } t  j t  j |  t  j |   } t  j j d | |  } t  j j d | |  } d }	 t  j t  j j d d  t  j |   }
 |	 |
 | d  d   d f 7}	 t  j j d |  } |	 t  j | t  j |   | 7}	 t  j j d |  } |	 t  j | t  j |   | 7}	 |	 t  j j d | |  7}	 | j d  |	 } i i  d 6i  d	 6} xm t |  D]_ } t  j	 | | k  } | | d  d   d  f | d | <| | d  d   d  f | d	 | <qWt | | d
 | d | d | j   } | j d d d d d d d d d d d | j d	 d d d d d d d d d d d  S(   NiV&  i   i   id   RP   i   i    RQ   RR   R   R   RS   t   vtypet   ret   dist_lowt   num_lowt	   dist_hight   num_highRu   g      ?(   R   RV   RW   RX   RZ   RY   R   R[   R\   R]   t   NoneR   R^   t
   profile_re(   R0   RG   t   gsizeRn   R   R   R   t   vcat   vcbt   errorsR   t   rcR   Ru   t   kR?   Rw   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_profile_inference   sD    $*##"&$%c         C   sq  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 d d  } | d  d   d f c d 9<t  j | t  j d   | } | j d  t  j j d d  } | j d  | } t d d d  } t  j d  | _	 t  j
 d  | _ t  j d  | _ t | | | d	 | } | j d
 |  }	 i i  d 6i  d 6}
 xf t | j  D]U \ } } | j | } | | d d  f |
 d | <| | d d  f |
 d | <qyWt | | | d |
 } | j   } | j   t |	 j	 | j	 d d t t  j |	 j  | j d d d d t |	 j d d d g | j d d d d d  S(   Ni  RP   i  i   i   id   i   i    R   t   freeRQ   RR   RS   t   atolg-C6?g{Gz?RU   i   (   i  i   (   i  i   (   id   i   (   i   i   (   R   RV   RW   RX   RY   R   RZ   R[   R   Ry   t   eyeR   t   zerosRT   R   R^   R.   t   group_labelst   row_indicest   summaryR   t   diagt   bse(   R0   R   R   R   Rp   R   R   R   t   model1t   result1RS   R   t   groupRv   t   model2t   result2(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_vcomp_1   s8    $""
%c      
   C   s2  t  j j d  d } t  j j d | d f  } t  j t  j | d  t  j d   } d } t  j j d | d f  } t  j j d | d d f  } t  j | t  j d*   | } | | j d  7} t  j t  j | d  t  j d   } | t  j d t  j j d | d  t  j d   7} t  j t  j | d  t  j d   } | t  j d t  j j d | d  t  j d   7} | t  j j d |  7} | j d  | }	 t j	 d	 t
 |   }
 |	 |
 d
 <| |
 d <| d  d   d f |
 d <| d  d   d f |
 d <| d  d   d f |
 d <| d  d   d f |
 d <| |
 d <| |
 d <i d d 6d d 6} t j d d | d d d | d |
 } | j   } t | j d d d g d d t | j d  d! g d! d" g g d d# t | j d$ d% g d d# t | j j d d& !d' d( d) g d d# d  S(+   Nia  i@  RP   i   i   i    i   i   R-   t   yR   t   x1t   x2t   z1t   z2t   v1t   v2s	   0 + C(v1)RQ   s	   0 + C(v2)RR   s   y ~ x1 + x2t
   re_formulas   0+z1+z2t
   vc_formulaR=   gE>'?gh㈵?g|'f?RU   g-C6?gCl?g㥛 ?gV-?gMbP?gjt@g`"@i   gFx$?gD;)?g?(   i   i   (   R   RV   RW   RX   RY   R   RZ   R[   t   pdt	   DataFrameR\   R   t   from_formulaR^   R   Ry   R   RT   R   t   iloc(   R0   t   nR   R   R   R   Rp   t
   subgroups1t
   subgroups2R   t   dft   vcfR   R   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_vcomp_2  sN    ((6(6



	%c   	      C   sP  t  j j d  t  j j d d  } t  j t  j d  t  j d   } t  j j d d  } t  j | t  j d   | } | t  j j d d  } i d d 6} t j i | d 6| d	 6| d
 6 } t	 j
 d d
 d
 d | d | } | j   } | j   t | j j d d !t  j d d d t | j j d d !t  j d d d d  S(   Ni  RP   i  id   i   s   0 + x1RQ   R   R   R   s   y ~ 1R   R=   i    gSvA]g{?gб?gP4`_RU   gMbP?ghg 8L?g!Va̿g&R?o*(   gSvA]g{?gб?gP4`_(   ghg 8L?g!Va̿g&R?o*(   R   RV   RW   RX   RY   R   RZ   R   R   R   R   R^   R   R   t   residR   t   r_t   fittedvalues(	   R0   R   R   Rp   R   t   vc_fmlR   RK   t   result(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_vcomp_3P  s(    $$
c   
      C   s   t  j j t  j j t   } t  j j | d  } t  j j | d  } t j |  } i d d 6} t j	 d d d d d	 d
 | d | } | j
   } t j	 d d d d d	 d
 | d t d | } | j
   }	 t | j |	 j  t | j |	 j  d  S(   NR   s
   pastes.csvs   0 + caskt   casks   strength ~ 1R   t   batchR   t   1R   R=   t
   use_sparse(   R!   R"   R#   R$   R%   R&   R   t   read_csvR   R   R^   Ri   R   RJ   R   (
   R0   R5   R6   R7   R=   R   RK   R   R   R   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_sparsej  s,    		c         C   s  t  j j t  j j t   } t  j j | d  } t  j j | d  } t j |  } t j	 d d d d | } | j
   } t | j t j d d	 d
 t | j d d !t j d d	 d
 t | j d d	 d
 t | j d d	 d
 t | j | j  d d	 d
 t j |  } t j	 d d d d | } | j
 d t  } t | j t j d d	 d
 t | j d d !t j d d	 d
 t | j d d	 d
 t | j d d	 d
 t | j | j  d d	 d
 d  S(   NR   s
   dietox.csvs   Weight ~ TimeR   t   PigR=   gMqr/@gD @RU   gh㈵>i    i   gKz7?gd"?g$0ܻ&@g-!l2D@ǧɢRO   g73pr/@g"J @gǎ?g\?g0|&@gC@g/Ţ(   gMqr/@gD @(   gKz7?gd"?(   g73pr/@g"J @(   gǎ?g\?(   R!   R"   R#   R$   R%   R&   R   R   R   R   R^   R   Ry   R   R   R   R   R   R   Rh   Rf   (   R0   R5   R6   R7   R=   RK   R   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_dietox  s2    !!c         C   s  t  j j t  j j t   } t  j j | d  } t  j j | d  } t j |  } t j	 d d d d d d | } | j
 d	 d
  } t | j t j d% d d t | j d d !t j d& d d t | j d d d t | j j j   t j d' d d t | j | j  d d d t j |  } t j	 d d d d d d | } | j
 d	 d
 d t  } t | j t j d( d d t | j d d !t j d) d d t | j d d d t | j j j   t j d* d d# t | j | j  d$ d d d  S(+   NR   s
   dietox.csvs   Weight ~ TimeR   R   R   s   1 + TimeR=   t   methodt   powellg|a2U0z/@g@RU   gh㈵>i    i   gUx_?gcoo?gMbP?gJY&@g
zS~3@g%?g=Ƃ ?g?gMbRRO   g`-z/@g(yu@gS~;{?gjt1K?g?V&@g@C03@gwo?gl`q8?g{Gz?gK7O(   g|a2U0z/@g@(   gUx_?gcoo?(   g
zS~3@g%?g%?g=Ƃ ?(   g`-z/@g(yu@(   gS~;{?gjt1K?(   g@C03@gwo?gwo?gl`q8?(   R!   R"   R#   R$   R%   R&   R   R   R   R   R^   R   Ry   R   R   R   R   R   t   valuest   ravelR   Rh   Rf   (   R0   R5   R6   R7   R=   RK   R   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_dietox_slopes  s@    !!c   
   
   C   s  t  j j t  j j t   } t  j j | d  } t  j j | d  } t j |  } i d d 6} t j	 d d d d d	 d
 | d | } | j
   } t | j j d d d d t | j j d d d d t | j j d& d d d t | j d d d t | j d d d t | j t j  t | j t j  t j d' } t | j d d !| d d t j d( }	 t | j d d !|	 d d t j	 d d d d d	 d
 | d | } | j
 d t  } t | j j d d d d t | j j d d  d d t | j j d) d! d d t | j d" d d t | j d# d d t | j d$ d d t | j d% d d d  S(*   NR   s
   pastes.csvs   0 + caskR   s   strength ~ 1R   R   R   R   R   R=   i    g;pΈN@RU   gMbP?ga2U0*?gPn?gV-?g(\^g?gVQ?g7BZg4Kbg0_^?gDi   g&NwPO@g9}N@g7ُiO@g-C6?RO   g%C?gv/?g5{?g+^go@grp@(   i    i    (   gVQ?g7BZg4Kbg0_^?gD(   g&NwPO@g&NwPO@g9}N@g9}N@g7ُiO@(   i    i    (   R!   R"   R#   R$   R%   R&   R   R   R   R   R^   R   Ry   R   R   R   R   t   llfR   t   aicR   t   nant   bicR   R   R   Rf   (
   R0   R5   R6   R7   R=   R   RK   R   R   R^   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_pastes_vcomp  sL    			c      
   C   s  t  j j d  d } t  j j d | d f  } d | d  d   d f <g  } t  j t  j | d  t  j d   } d } t  j j d | d f  } t  j j d | d d f  } t  j | t  j d    | } | | j d  7} t  j j d | d f  } t  j j d | d d f  } | d  d   d d   f c d 9<t  j | t  j d!   | } | | j d  7} | t  j j d |  7} | j d  | } i i  d 6i  d	 6}	 x{ t t	 t
 | d    D]] \ }
 } t  j | | k  } | | d d  f |	 d | <| | d d   f |	 d	 | <qWt | | | d
 | d |	 } | j   } t j | d  d   d d   f d d g } | | d <| d  d   d f | d <| d  d   d f | d <| d  d   d f | d <| d  d   d f | d <| d  d   d f | d <| d  d   d f | d <i d d 6d d	 6} t 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 | j | j d d d  S("   Nia  i   RP   i   i   i    i   RQ   RR   R   RS   t   columnsR   R   t   re1t   re2t   vc1t   vc2t   vc3i   t   vc4s   0 + vc1 + vc2s   0 + vc3 + vc4s   y ~ x1R   R   s   0 + re1 + re2R   R=   RU   g:0yE>(   i   i   (   i   i   (   R   RV   RW   RX   RY   R   RZ   R[   R.   R\   t   intR]   R   R^   R   R   R   R   Ry   R   RT   RJ   R   (   R0   R   R   t   ex_vcR   R   R   Rp   R   RS   R   R   Rv   R   R   R   R   R   R   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_vcomp_formula]  s\    (")".
	c         C   s  t  j j d  t  j j d d!  } t  j j d d  } t  j t  j d  d d d g  } | t  j t  j j d d  d d d g  } | j d  | t  j j d d  } t | | | |  } t | j	 j
 d d d	 d
 g k  t | j	 j d g k  t | j	 j d g k  | j   } t j i | d 6 } x9 t | j d  D]$ }	 | d  d   |	 f | d |	 <qQW| | d <d }
 d } t j |
 | d | d | } t | j	 j
 d d d d g k  t | j	 j d g k  t | j	 j d g k  | j   } t | j | j  | | d <t j |
 | d | d d } t | j	 j
 d d d d g k  t | j	 j d g k  t | j	 j d g k  | j d | j  } t | j | j d d t  j t |  d t  j } t | | | |  } t j    t j d  | j   } Wd  QXd d l m } | |
 | d d } t | j	 j d g k  t | j	 j d  g k  t j    t j d  | j   } Wd  QXt | j | j  d  S("   Nij	  RP   i,  i   id   i   R   R   t   x3t   x4t   x_re1s	   x_re1 VarR   s   exog%dR   s)   endog ~ 0 + exog0 + exog1 + exog2 + exog3s   0 + exog_reR   R   t   exog0t   exog1t   exog2t   exog3s   exog_re Vart   start_paramsRU   g-C6?t   dtypet   ignorei(   t   mixedlms
   groups Var(   i,  i   (   R   RV   RW   RX   RY   R   R[   R   R	   R=   t   xnamest   exog_re_namest   exog_re_names_fullR^   R   R   R\   t   shapeR   R   RJ   R   RZ   t   lent   float64t   warningst   catch_warningst   simplefiltert   statsmodels.formula.apiR   (   R0   R   R   R   R   R   t   mod1t   rslt1R   R   t   fmlt   re_fmlt   mod2t   rslt2t   mod3t   rslt3t   mod4t   rslt4R   t   mod5t   rslt5(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_formulas  sX    $.&""
"
"c      	   C   s  t  j j d  t  j j d d  } t  j t  j d  t  j d   } | d  d   d f | d  d   d f } | t  j t  j j d d  t  j d   t  j j d d  } t | | |  } | j d	 d
  } | j	   t | | |  } | j d	 d t  j d   } | j	   t
 j   } | j d | d	 d  }	 |	 j	   t
 j   } t j   * t j d  | j d | d	 d  }
 Wd  QX|
 j	   t
 j d  } | j d | d	 d
  } | j	   d  S(   Ni}  RP   i  i   id   i   i    i   t   alphag      ?i
   R   g        R   g      $@g333333?(   i  i   (   R   RV   RW   RX   RY   R   RZ   R   t   fit_regularizedR   t	   penaltiest   L2R   R   R   t   PseudoHuber(   R0   R   R   t   expected_endogR   t   mdR   R   t   pent   mdf3t   mdf4t   mdf5(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_regularized  s.    $*+



(   RA   RB   Rl   t   markt   slowt   parametrizeRf   Ri   R   R   R   t   smokeR   R   R   R   R   R   R   R   R   R   R  (    (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyRN   X   s$   	-Q			&	%	?			>	E	R5	;t   TestMixedLMSummaryc           B   s2   e  Z e d     Z d   Z d   Z d   Z RS(   c   
   
   C   s  t  j d d g d  } t  j d g d  } d d d d d d d d d	 d
 g
 } d d d d d d d d
 d d g
 } d d d d d d d d d
 d	 g
 } t j i | d 6| d 6| d 6| d 6| d 6 } | d j } | d d d g j } | d j }	 t | | d |	 j   |  _ d  S(   Ni    i   i   i
   i   i   i   i   i	   i   i   R   t   pidt   x0R   R   R   (   R   t   repeatR   R   R   R   R^   t   res(
   t   clsR  R  R   R   R   R   R   R   R   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   setup_class  s    $$$2c         C   sE   |  j  j   } d d d d g } | j d j j } t | |  d  S(   Nt   constR   R   s	   Group Vari   (   R  R   t   tablesR-   R   R   (   R0   t   summt   desiredt   actual(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_summary  s    c         C   sT   |  j  j d d d d g  } d d d d g } | j d j j } t | |  d  S(   Nt   xname_fet   Constantt   Aget   Weights	   Group Vari   (   R  R   R  R-   R   R   (   R0   R  R  R  (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_summary_xname_fe  s
    c         C   sN   |  j  j d d g  } d d d d g } | j d j j } t | |  d  S(   Nt   xname_res   Random EffectsR  R   R   i   (   R  R   R  R-   R   R   (   R0   R  R  R  (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_summary_xname_re  s
    (   RA   RB   t   classmethodR  R  R"  R$  (    (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyR    s   		c         C   s  | r | d k  r d  S| r" d n d } |  r4 d n d } t  | | |  } t | j | j | j | j  } | s t j t j | j	  d k   r t
 j   * t
 j d  | j d d	 d |   } Wd  QXq| j d d	 d |   } n | j j d
 } | j j d
 }	 t | |	 d  }
 t j |  |
 _ t j |	  |
 _ t j g   |
 _ t j t j | j	  d k   rt
 j   0 t
 j d  | j d |  d d	 d |
  } Wd  QXn | j d |  d d	 d |
  } t | j | j d d t | j | j	 d d t | j | j d d | j } t | j | j   d |  d |  f d d t | j | j d d d | st | j d | j  d d t | j! d | j" d d n  d  S(   Ni   t   irft   drfRO   t   mlgh㈵>R   t   gtolgHz>i   i    R   R   i   i   i   (#   R   R   R   R   R   R   R   t   anyR   R   R   R   R   R^   R   R   RZ   Ry   R   R   t   arrayRT   R   R   R   R   RG   R   t
   cov_paramsR   R   t   random_effectsR   t   random_effects_covR   (   RO   R&  R3   R2   R1   Rw   R  t   mdfRG   RH   R   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   do1$  sF    !!!!'	/R   t   lmes   .csvR7   RO   R&  c         C   s'   t  |  d d ! } t | | |  d  S(   Ni   i   (   R   R0  (   R7   RO   R&  R3   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_rd  s    c          C   sU  t  j j d  t  j j d d  }  t  j j d d  } t  j t  j d  d d d g  } | t  j t  j j d d  d d d g  } |  j d  | t  j j d d  } t j i | d 6 } x9 t	 |  j
 d  D]$ } |  d  d   | f | d | <q W| | d	 <d
 } d } t j | | d | d | }	 |	 j   }
 |
 j   d d d d g } d d	 g } d d d g } t |	 j j | k  t |	 j j | k  t |	 j j | k  |
 j } t | j j   | | k  |
 j } t | j j   | | k  |
 j } t | j j   | | k  |
 j   } t | j j   | | k  t | j j   | | k  |
 j } t | j j   | k  |
 j } t | j j   | k  |
 j } t | j j   | k  t | j j   | k  |
 j } t | j j   | k  t | j j   | k  |
 j } t | j j   | k  d  S(   Nij	  RP   i,  i   id   i   R   s   exog%dR   s)   endog ~ 0 + exog0 + exog1 + exog2 + exog3s	   ~ exog_reR   R   R   R   R   R   t   Groups	   Group Vars   Group x exog_re Covs   exog_re Var(   i,  i   (    R   RV   RW   RX   RY   R   R[   R   R   R\   R   R   R   R^   R   R	   R=   R   R   R   RJ   R-   t   tolistR   t   tvaluesR,  R   Ry   t   bse_feR   t   cov_re_unscaledt   bse_re(   R   R   R   R   R   R   R   R   R   R   R   R   t   re_namest   re_names_fullRJ   R   R5  R,  t   feR6  R   t   cov_re_uR8  (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_mixed_lm_wrappero  sT    $.&"

								c          C   s  t  j j d  d }  d } d } d } | t  j j d |   } t  j | t  j |   } | | t  j j d |  |  } t  j t  j |   t  j |   } t  j |  |  } t | | d | }	 |	 j   }
 |
 j	 } t
 t | t   t
 t |  |  k  t
 t | d t j   t
 t | d  d	 k  t | | d
 | d | }	 |	 j   }
 |
 j	 } t
 t | t   t
 t |  |  k  t
 t | d t j   t
 t | d  d	 k  t  j j d |  | d f  } d	 | d  d   d f <t  j d d	 |  } t  j t  j |   |  | d  d   d	 f <t | | d
 | d | }	 |	 j   }
 |
 j	 } t
 t | t   t
 t |  |  k  t
 t | d t j   t
 t | d  d k  d  S(   Ni[  id   i
   i   i   RP   R   i    i   R   i(   R   RV   RW   RX   RY   RZ   R   R   R^   R-  R	   t
   isinstancet   dictR   R   t   Seriest   linspace(   t   ngrpR   t   rsdt   gsdt   mnt   gmnR   R{   R<   RK   R   R   t   xrt   qp(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_random_effects  sF    !$		+	c          C   s  t  j j d  t  j j d d  }  t j |   }  d d d d d	 d
 g |  _ t  j t  j d  t  j	 d   |  d <t  j j d d   } t  j | t  j	 d!   } | d  d   d f | d  d   d f |  j
 | d  d   d f |  j |  d <|  d c | d  d   d f |  j t  j j d d  7<t  j |  j d" <t  j |  j d# <t  j |  j d$ <t  j |  j d% <t  j |  j d& <t  j |  j d' <d } d } i d d 6d d 6} x[t t f D]M} xDt t f D]6} i  } |  j   } d d d g }	 | r| | d <|	 j d  n  | r>| | d <|	 j d	 d
 g  n  | |	 j   } t j    t j d  t j | d d d | | }
 |
 j   } t j | d d d |  d d | } | j   } t | j | j  t | j | j  t t | j   | j!  Wd  QXqWqWd  S((   Ni[  RP   id   i   R   t   gR   R   t   c1t   c2i2   i   i   i   i    i   i   s   y ~ x1s   1 + z1s   0 + c1RQ   s   0 + c2RR   R   R   R   R   R=   t   missingt   drop(   id   i   (   i2   i   (   i   i   (   i   R   (   i   RJ  (   i   R   (   i   R   (   i   RK  (   i   RL  ("   R   RV   RW   RX   R   R   R   RY   R   RZ   R   RK  RL  t   NaNt   locRf   Ri   t   copyt   appendt   extendt   dropnaR   R   R   R   R   R^   R   RJ   R   R   R   R   t   nobs(   R   R   R   R   R   t
   include_ret
   include_vct   kwargst   dxt   vaR   R   R   R   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_handle_missing  sR    (P:

c          C   s  d d l  m }  d d d d d d d d d d d d d d d g } d d d d d d d	 d
 d d d d d d d g } t j d d d d d d d d d d d d d d d  g  } i | d! 6| d" 6| d# 6} t j |  } t j d$ d% d& g  } t j d' | d( | d# } | j d) |  } t j d* d+ d, g  } t j d- | d( | d# }	 |	 j d) |  }
 |  | |
 g d. t	 } d/ } t
 t |  |  d  S(0   Ni(   t   summary_coli   i   i   i   i   i   i   i   i	   i
   i   i   i   i   i   goʡ?gd;OgZd;@gZd;O@gjt@gl@grh@gGz@g"~@g(\O$@g$@gDl)1@g-F1@g`"-@g-,@t   Yt   Xt   IDSg@{Fg~eJ?gͣT?s   Y ~ XR   R   g&ʓ@g.?g<H.*?s   X ~ Yt   starss  
=============================
              Y         X    
-----------------------------
Group Var 0.1955    1.3854   
          (0.6032)  (2.7377) 
Intercept -1.2672   3.4842*  
          (1.6546)  (1.8882) 
X         1.1618***          
          (0.1959)           
Y                   0.5529***
                    (0.2080) 
=============================
Standard errors in
parentheses.
* p<.1, ** p<.05, ***p<.01(   t   statsmodels.iolib.summary2R\  R   R+  R   R   R   R   R^   Ri   R   t   str(   R\  t   idsR<   R   t   dt   sp1R   t   results1t   sp2R   t   results2t   outt   s(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_summary_col  s"    33c       
   C   sd  t  j j d  d }  d } g  g  g  g  g  g  g  g  g  f	 \	 } } } } } } } }	 }
 xt |   D]} t  j j d | d f  } | d  d   d f d t  j j d |  } t  j j d | d f  } t  j j d d  } | d c d 9<| d	 c d	 9<| t  j | |  j 7} | j |  t  j t  j	 d t  j
 | d   j t  j  } t  j j d d  } | | | 7} | j |  |	 j |  t  j t  j
 | d  t  j	 d   j t  j  } t  j j d d  } | | | 7} | j |  |
 j |  | j |  | j |  | j |  | j d
 | g |  qe Wt  j |  } t  j |  } t  j |  } t  j |  } t  j |  } t  j |  } t j i | d 6| d  d   d f d 6| d  d   d	 f d 6| d  d   d f d 6| d  d   d	 f d 6| d 6| d 6| d 6 } t  j |  } t  j |	  }	 t  j |
  }
 t  j |	 |
 f d d	 } t j d d d d i d d 6d d 6d d d | } | j   } | j } g  t |   D] } | d
 | d d !^ q} t  j |  } t  j | d  d   d f | d  d   d f  d! d k s<t  t  j | d  d   d	 f | d  d   d	 f  d" d k s~t  g  t |   D] } | d
 | d d !^ q} t  j |  } xV t d  D]H } t  j | d  d   | f | d  d   | f  d# d k st  qW| j } x@ | j   D]2 } | | j } | | j | | f k s*t  q*Wd  S($   Ni  i  i
   RP   i   i    g      ?i   i   s   g%dR   R  R   t   z0R   t   v0R   RJ  t   axiss   y ~ x0 + x1R   s   ~0 + z0 + z1R   s   ~0+C(v0)s   0+C(v1)R   R=   g?i   i   (   i    i   (   i    i   (   i    i   (   i    i   (   i    i   (   R   RV   RW   R\   RX   R_   t   flatRR  RY   R   RZ   t   astypeR   t   concatenateR   R   R,   R   R   R^   R-  t   corrcoefRk   R.  t   keysRP   R   (   t   ngt   mR   R<   t   zRm  R   RJ  RR   t   c0RK  R>   t   xxt   yyt   zzt   bbt   vv0t   cc0t   vv1t   cc1R   t   ccRK   R   t   refR   t   b0t   cf0t   refct   p(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_random_effects_getters*  s    <-22	
		.BB.F	c         C   s  | | } t  j j d |  | f  } t  j | j |  } t  j | | f  } t  j j d | | f  | d |  d |  f <t  j j d |  } t  j d |  | | |  | |  f <t  j j	 | d |  d |  f  }	 d } t  j j d |   }
 t  j j
 | t  j |  |   t  j | t  j | | j   |
  } t | | | |	 |  } | |
  } t | |  t | t j |  t j |  |	 |  } | |
  } t | |  d  S(   NRP   i    i   g      ?(   R   RV   RX   R_   R`   R   t   uniformR   t   linalgt   invt   solveR   R   R   R   t
   csr_matrix(   R  t   qt   rRj  Rd  t   At   AtAt   Bt   dit   QiR<   t   y2RL   t   y1(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   check_smw_solver  s$    
1)(D!	t   TestSMWSolverc           B   s   e  Z e d     Z e j j d d d g  e j j d d d g  e j j d d d	 g  e j j d
 d d g  d       Z RS(   c         C   s   t  j j d  d  S(   Ni   (   R   RV   RW   (   R  (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyR    s    R  i   i
   R  i   i   R  i   i   Rj  i    g      ?c         C   s   t  | | | |  d  S(   N(   R  (   R0   R  R  R  Rj  (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_smw_solver  s    (   RA   RB   R%  R  Rl   R  R  R  (    (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyR    s
   c         C   s  | | } t  j j d |  | f  } t  j | j |  } t  j | | f  } t  j j d | | f  } t  j | j |  | d |  d |  f <t  j j d |  }	 t  j d |	  | | |  | |  f <t  j j	 | d |  d |  f  }
 d } t  j j
 | t  j |  |   t  j | t  j | | j    \ } } t  j j
 |  \ } } t | | | |
 |	 |  } t rd n d } t | | d | d  S(   NRP   i    i   g      ?gư>gHz>RU   (   R   RV   RX   R_   R`   R   R  R   R  R  t   slogdetR   R   R    R   (   R  R  R  Rj  Rd  R  R  R  t   cR  R  t   _t   d2t   bdt   d1RU   (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   check_smw_logdet  s    
+)(Gt   TestSMWLogdetc           B   s   e  Z e d     Z e j j d d d g  e j j d d d g  e j j d d d	 g  e j j d
 d d g  d       Z RS(   c         C   s   t  j j d  d  S(   Ni   (   R   RV   RW   (   R  (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyR    s    R  i   i
   R  i   i   R  i   i   Rj  i    g      ?c         C   s   t  | | | |  d  S(   N(   R  (   R0   R  R  R  Rj  (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_smw_logdet  s    (   RA   RB   R%  R  Rl   R  R  R  (    (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyR    s
   c       
   C   s  t  j j d  d }  d } t  j d* } t  j d d g d d g g  } t  j d+ d, f } d } t  j j d	 |  d f  } t  j j d	 |  d f  } t  j j d	 |  d f  } t  j j d	 |  d f  }	 t  j t  j | d
 t  j |  |  }
 t  j	 | |  } t  j j d	 | d f  } t  j	 | t  j
 j |  j  } t  j | d  t  j j d	 | d f  } t  j | d  t  j j d	 | d f  } | | |
 d  d   f | j d  } | | |
 d  d   f | j d  7} | | |
 d  d   f |	 j d  7} | t  j |  t  j j d	 |   7} t j i | d 6| d  d   d f d 6| d  d   d f d 6| d  d   d f d 6| d  d   d f d 6|
 d 6 } | d  d   d f | d <| d  d   d f | d <|	 d  d   d f | d <|	 d  d   d f | d <i d d 6d d 6} t j d d d d d d | d | } d  d  l } | j j j } | j d! | d" | d# |  } | j d$ t d% t  } | t |  c | :)| j | | d   } | j d  } t  j	 | |  | j d  j   } | | d | d j d  j   7} | | d |	 d j d  j   7} | | 7} t  t  j! | |  | d& d' d( d) d  S(-   Ni   id   i
   i   ig      ?i   g      ?RP   R   i    R   R   R   Rl  R   t   grpR   t   z3t   z4t   z5s   0 + z2 + z3RQ   s   0 + z4 + z5RR   s   y ~ 0 + x1 + x2R   R   s   0 + z0 + z1R   R=   iRy   R   RT   RD   RI   RU   g{Gz?R   g-C6?(   i   ig      ?g      @("   R   RV   RW   R   R,   RX   R  R   R   R_   R  t   choleskyR`   t   sqrtR[   R   R   R   R   t   statsmodelst
   regressiont   mixed_linear_modelR   Ra   Rb   Ri   Rf   R   t   get_distributionR   t   rvst   meanR   t   var(   R   t   n_groupsRy   R   RT   R   R   R   t   exog_vcat   exog_vcbR   t   eyt   ut   u1t   u2R   R   R   Ru  R  t   mpt   pot   pat   distt   yrt   v(    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   test_get_distribution  s\    !!,,'''&>.	%%%
(A   t   statsmodels.compat.platformR    R!   R(   R   t   numpyR   t   pandasR   t   scipyR   Rl   t)   statsmodels.regression.mixed_linear_modelR   R   R   R   t   numpy.testingR   R   R   R	   t   statsmodels.baseR
   R  t   statsmodels.tools.numdifft   toolst   numdiffRd   R   R   t   objectR   RM   RN   R  R0  R"   R#   R$   R%   R5   R&   R6   t   listdirt   fnamesR<   R/   t   endswithR  R  Rf   Ri   R2  R=  RI  R  R[  Rk  R  R  R  R  R  R  (    (    (    sD   lib/python2.7/site-packages/statsmodels/regression/tests/test_lme.pyt   <module>   sH   ""3	  -	97*		3	-9	"_		