ó
áp7]c           @   sj  d  d l  Z d  d l m Z d  d l Z d  d l Z d  d l m Z m	 Z	 m
 Z
 m Z d  d l m Z d  d l m Z e j j d e j ƒ  e j ƒ  e j ƒ  g ƒ e j j d e	 ƒ  e
 ƒ  e ƒ  g ƒ d „  ƒ ƒ Z e j j d e j ƒ  e j ƒ  e j ƒ  g ƒ e j j d e	 ƒ  e
 ƒ  e ƒ  g ƒ d	 „  ƒ ƒ Z e j j d e	 ƒ  e
 ƒ  e ƒ  g ƒ d
 „  ƒ Z d S(   iÿÿÿÿN(   t   assert_allclose(   t   QIFt   QIFIndependencet   QIFExchangeablet   QIFAutoregressive(   t   approx_fprime(   t   familiest   famt
   cov_structc      	      s&  t  j j d ƒ d } d } t  j j d | d f ƒ } t |  t j ƒ rÄ t  j t  j j d | | ƒ t  j | ƒ ƒ } t  j	 d ƒ | t  j	 d d ƒ t  j j d | ƒ } | j
 d ƒ | } n] t |  t j ƒ rñ t  j j d	 d | ƒ} n0 t |  t j ƒ r!t  j j d
 d d | ƒ} n  t  j t  j | | ƒ t  j | ƒ ƒ j t  j ƒ } t | | d | d |  d | ƒ‰  x© t d	 ƒ D]› } t  j j d d ƒ }	 ˆ  j |	 ƒ \ } }
 } } } ‡  f d †  } t |	 | d ƒ } t | | d ƒ ‡  f d †  } t |	 | d ƒ } t |
 | d ƒ qƒWd  S(   Niú’ iÈ   i   t   sizei   g      à?i   i   i   i    t   groupst   familyR   c            s   ˆ  j  |  ƒ d S(   Ni   (   t	   objective(   t   params(   t   model(    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_qif.pyt   llf_gn(   s    gH¯¼šò×z>g-Cëâ6?c            s   ˆ  j  |  ƒ d S(   Ni    (   R   (   R   (   R   (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_qif.pyt   llf.   s    g      Ð?(   t   npt   randomt   seedt   normalt
   isinstanceR   t   Gaussiant   kront   onest   sqrtt   sumt   Poissont   poissont   Binomialt   randintt   aranget   astypet   intR   t   rangeR   R   R    (   R   R   t   nt   qt   xt   et   yt   gt   _t   ptt   gradt   gn_derivR   t
   gn_numdiffR   t   grad_numdiff(    (   R   s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_qif.pyt   test_qif_numdiff
   s.    .74!c      	   C   s  t  j j d ƒ d } d } t  j d } t  j j d | t | ƒ f ƒ } t |  t j ƒ rÚ t  j	 t  j j d | | ƒ t  j
 | ƒ ƒ } t  j d ƒ | t  j d d ƒ t  j j d | ƒ } t  j | | ƒ | } n´ t |  t j ƒ r"t  j | | ƒ } t  j | ƒ }	 t  j j |	 ƒ } nl t |  t j ƒ rŽt  j | | ƒ } d d t  j | ƒ }	 t  j j d
 d d | ƒ|	 k  j t  j ƒ } n  t  j	 t  j | | ƒ t  j
 | ƒ ƒ j t  j ƒ }
 t | | d |
 d |  d | ƒ} | j ƒ  } t | j | d d d d ƒ| j ƒ  } d  S(   Niú’ iè  i   i   g      à¿gš™™™™™É?R	   g      à?i   i    R
   R   R   t   atolgš™™™™™©?t   rtol(   i   g      à¿gš™™™™™É?g      Ð?(   R   R   R   t   r_R   t   lenR   R   R   R   R   R   t   dotR   t   expR   R   t   uniformR    R!   R   R   t   fitR    R   t   summary(   R   R   R#   R$   R   R%   R&   R'   t   lprt   meanR(   R   t   rsltR)   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_qif.pyt   test_qif_fit4   s,    !.704!c   
      C   sK  t  j j d ƒ t  j j d d ƒ } t  j j d d ƒ } t  j t  j d ƒ t  j d ƒ ƒ } t | | d | d |  ƒ} | j ƒ  } t	 j
 i | d	 6| d  d  … d
 f d 6| d  d  … d f d 6| d 6ƒ } t j d d d d |  d | ƒ} | j ƒ  } t | j | j ƒ t | j | j ƒ t |  t ƒ sG| j }	 | j }	 n  d  S(   Ni_  R	   id   i   i   i   R
   R   R'   i    t   x1i   t   x2s   y ~ 0 + x1 + x2t   data(   id   i   (   R   R   R   R   R   R   R   R   R7   t   pdt	   DataFramet   from_formulaR    R   t   bseR   R   t   bict   aic(
   R   R'   R%   R
   t   model1t   result1t   dft   model2t   result2R)   (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_qif.pyt   test_formulaW   s    $K	(   t   numpyR   t   numpy.testingR    t   pandasR@   t   pytestt   statsmodels.genmod.qifR   R   R   R   t   statsmodels.tools.numdiffR   t   statsmodels.genmodR   t   markt   parametrizeR   R   R   R/   R<   RK   (    (    (    s@   lib/python2.7/site-packages/statsmodels/genmod/tests/test_qif.pyt   <module>   s    "' 