
p7]c           @   s   d  d l  Z d  d l m Z m Z m Z d  d l m Z d  d l m	 Z	 d  d l
 Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d S(   iN(   t   ConditionalLogitt   ConditionalPoissont   ConditionalMNLogit(   t   approx_fprime(   t   assert_allclosec    	         sS  t  j d }  t  j d } t  j d } | d  d   d  f } t |  | d |   x[ d D]S } t  j | f }   j d |  \ } } t |   f d    } t | |  qY WxV d D]N } t t  j | f   j  }   j t  j | f  } t | | d d q W  j	   } t | j
 t  j d	 d d
 t | j t  j d d d
 d  S(   Ni    i   i   t   groupsic            s     j  d |   S(   Ni    (   t   _denom(   t   x(   t   model(    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   <lambda>   t    t   rtolg-C6?g@?gh㈵>gs?(
   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    (   ii    i   i   (   ii    i   i   (   t   npt   r_t   NoneR    t   _denom_gradR   R   t   logliket   scoret   fitt   paramst   bse(	   t   yt   gR   R   t   _t   gradt   ngradR   t   result(    (   R   sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_logit_1d	   s"    c             s  t  j d }  t  j d } t  j d } t  j d } t  j d  } | | d  d   d f <| | d  d   d f <t |  | d |   xh d D]` } t  j | d | f }   j d |  \ } } t |   f d    } t | | d	 d
 q Wx] d D]U } t  j d | d | f } t |   j  }   j |  }	 t | |	 d	 d q W  j	   }
 t |
 j
 t  j d d	 d t |
 j t  j d d	 d
 |
 j   d  S(   Ni    i   i   i
   R   ig      c            s     j  d |   S(   Ni    (   R   (   R   (   R   (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyR	   8   R
   R   gh㈵>g      g      ?g-C6?g_=[-?g?gMbP?g ?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   i    i   i   i   (   i
   i   (   ii    i   i   (   ii    i   i   (   g_=[-?g?(   g ?gȭ?(   R   R   t   emptyR    R   R   R   R   R   R   R   R   t   summary(   R   R   t   x1t   x2R   R   R   R   R   R   R   (    (   R   sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_logit_2d'   s,    c          C   s  xd D]}  t  j j d  d } t  j j d d d | } t  j j d |  } t  j j d |  } t  j j d d d | } t  j | d  d   d  f | d  d   d  f f  } |  d k r t | | d | } n t | | d | } | j	   } t
 j i | d	 6| d
 6| d 6| d 6 }	 |  d k rRt j d d d d |	 }
 n t j 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 q Wd  S(   Ni    i   i  i   i   t   sizei   R   R   R   R   R   s   y ~ 0 + x1 + x2t   dataR   gh㈵>(   i    i   (   R   t   randomt   seedt   randintt   normalt   hstackR   R    R   R   t   pdt	   DataFramet   from_formulaR   R   R   t
   cov_paramst   tvalues(   t   jt   nR   R   R   R   R   t   model1t   result1t   dft   model2t   result2(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_formulaK   s.    5+c          C   s   t  j d }  t  j d } t  j d } | d  d   d  f } t |  | d | } xV d D]N } t t  j | f | j  } | j t  j | f  } t | | d
 d qY W| j   } t | j	 t  j d d
 d t | j
 t  j d d
 d d  S(   Ni   i   i   i   i   i    i   R   iR   g-C6?g+?gfΡ?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    (   ii    i   i   (   R   R   R   R   R   R   R   R   R   R   R   (   R   R   R   R   R   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_poisson_1dl   s    c    
      C   s8  t  j d }  t  j d } t  j d } t  j d } t  j d  } | | d  d   d	 f <| | d  d   d f <t |  | d | } x] d D]U } t  j d | d | f } t | | j  } | j |  } t | | d d q W| j   }	 t |	 j	 t  j d d d t |	 j
 t  j d d d |	 j   d  S(   Ni   i   i   i   i   i   i   i   i    i
   R   ig      g      ?R   g-C6?gߛ\)Ug$:gMbP?gy?g3w?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   (   ii    i   i   (   gߛ\)Ug$:(   gy?g3w?(   R   R   R   R   R   R   R   R   R   R   R   R   (
   R   R   R   R   R   R   R   R   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_poisson_2d   s"    c          C   so  t  j j d  d }  t  j d  } t  j | t  j |  d   } t  j j d d  } t  j | t  j |  d   } t  j j d |  d f  } t  j d } t  j | |  | } d d t  j	 |  } t  j j
 d |   | k  j t  j  } t | | d | } | j   }	 t | | d | }
 |
 j d	 d d
 d  } t |	 j | j d d t | | d | } | j d	 d d
 d  } t | j t  j d d d 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 } t j | d d d | } | j d	 d d
 d  } t | j | j  d  S(   Ni>4 i   i
   R!   i   i    i   R   t   L1_wtt   alphaR   gMbP?g?gwIݬ?g-C6?R   R   R   i   t   x3i   t   x4s   y ~ 0 + x1 + x2 + x3 + x4R"   (   i    i    i   i    (   i    i    gwIݬ?i    (   R   R#   R$   t   aranget   kront   onesR&   R   t   dott   expt   uniformt   astypet   intR    R   t   fit_regularizedR   R   R(   R)   R*   (   R.   R   t   group_effectsR   R   t   lin_predt   meanR   t   model0t   result0R/   R0   R2   R3   R1   t   fmlt   model3t   result3(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_lasso_logistic   s2    'U$c          C   sQ  t  j j d  d }  t  j d  } t  j | t  j |  d   } t  j j d d  } t  j | t  j |  d   } t  j j d |  d f  } t  j d } t  j | |  | } t  j	 |  } t  j j
 |  } t | | d | } | j   }	 t | | d | }
 |
 j d	 d d
 d  } t |	 j | j d d t | | d | } | j d	 d d
 d  } t | j t  j d d d 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 } t j | d d d | } | j d	 d d
 d  } t | j | j  d  S(   Niz9 i   i
   R!   i   i    i   R   R7   R8   R   gMbP?g?g~{W?g-C6?R   R   R   i   R9   i   R:   s   y ~ 0 + x1 + x2 + x3 + x4R"   (   i    i    i   i    (   i    i    g~{W?i    (   R   R#   R$   R;   R<   R=   R&   R   R>   R?   t   poissonR   R   RC   R   R   R(   R)   R*   (   R.   R   RD   R   R   RE   RF   R   RG   RH   R/   R0   R2   R3   R1   RI   RJ   RK   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_lasso_poisson   s2    U$c         C   s  t  j j d  t  j t  j d  t  j |  d   } t  j j d |   } t  j j d |   } t  j | d  d   d  f | d  d   d  f f d d } t  j	 d d d g d d d g g  } t  j
 | |  } t  j |  } | | j d  d  d   d  f :} | j d  } d t  j |   }	 t  j j d |   }
 d |	 |
 | d  d   d f k  <d |	 |
 | d  d   d f k  <d |	 |
 | d  d   d f k  <t j i |	 d	 6| d
 6| d 6| d 6 } | S(   Ni   i   R!   t   axisi   i    ii   R   R   R   R   (   R   R#   R$   R<   R=   R;   R&   t   concatenateR   t   arrayR>   R?   t   sumt   cumsumR@   R(   R)   (   R.   R   R   R   t   xmt   pat   lprt   prt   cprR   t   uR1   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   gen_mnlogit   s$    (;'#   c          C   s   t  d  }  t j d d d d |  } xc t d  D]U } t j j d d  } | j |  } t | | j	  } t
 | | d	 d
 d d q4 Wd  S(   NiZ   s   y ~ 0 + x1 + x2R   R   R"   i   R!   i   R   gh㈵>t   atolgMbP?(   RZ   R   R*   t   rangeR   R#   R&   R   R   R   R   (   R1   R   R   t   zaR   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_conditional_mnlogit_grad
  s    c          C   s   t  d  }  t j d d d d |  } | j   } t | j t j d d g d d	 g g  d
 d d d t | j t j d d g d d g g  d
 d d d d  S(   NiZ   s   y ~ 0 + x1 + x2R   R   R"   g00?gJ^gveD?gRH7R   gh㈵>R[   gʸ-?g%r?gc?gh@?(	   RZ   R   R*   R   R   R   R   t   asarrayR   (   R1   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_conditional_mnlogit_2d  s    c          C   s   t  d  }  t j j d |  j d  |  d <t j d d d d |  } | j   } t | j	 t j
 d	 d
 g d d g d d g g  d d d d t | j t j
 d d g d d g d d g g  d d d d | j   d  S(   NiZ   R!   i    R9   s   y ~ 0 + x1 + x2 + x3R   R   R"   ggҦY?g8L#g :v?gFaE<gN:7g"T2 R[   gh㈵>R   g&jj?g}Y?g:%Ȉ?gPS"?gl?g6X?(   RZ   R   R#   R&   t   shapeR   R*   R   R   R   R_   R   R   (   R1   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   test_conditional_mnlogit_3d,  s$     		(   t   numpyR   t'   statsmodels.discrete.conditional_modelsR    R   R   t   statsmodels.tools.numdiffR   t   numpy.testingR   t   pandasR(   R   R    R4   R5   R6   RL   RN   RZ   R^   R`   Rb   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_conditional.pyt   <module>   s   		$	!			)	)			