
p7]c           @   s  d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l m Z m Z m	 Z	 d  d l
 Z d  d l Z d d l m Z d d l m Z i d d 6d	 d
 6Z d   Z d e f d     YZ 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 j d  r.e ^ qZ d d f Z  e! e" f Z# e! e" f Z$ e j% j& d e' e  j( e e  e# e$    d    Z) d S(   iN(   t   PHReg(   t   assert_allcloset   assert_equalt   assert_i   (   t   survival_r_results(   t   survival_enet_r_resultst   bfgst   methodi    t   dispc         C   s   | d  k r[ d |  | | f } d |  | | f } d |  | | f } d |  | | f } nX d |  | | | f } d |  | | | f } d |  | | | f } d |  | | | f } t t |  } t t |  }	 t t |  }
 t t |  } | |	 |
 | f S(	   Ns   coef_%d_%d_%ss   se_%d_%d_%ss   time_%d_%d_%ss   hazard_%d_%d_%ss   coef_%d_%d_%s_%ss   se_%d_%d_%s_%ss   time_%d_%d_%s_%ss   hazard_%d_%d_%s_%s(   t   Nonet   getattrR   (   t   nt   pt   extt   tiest	   coef_namet   se_namet	   time_namet   hazard_namet   coeft   set   timet   hazard(    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   get_results"   s    t	   TestPHRegc           B   s   e  Z e d     Z e 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 d   Z RS(   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 f } | d  d   d d   f } | | | | f S(   Nt   resultst	   delimitert    i    i   i   i   (   t   ost   patht   dirnamet   abspatht   __file__t   npt
   genfromtxtt   join(   t   fnamet   cur_dirt   dataR   t   statust   entryt   exog(    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt	   load_file6   s    	c      
   C   s  t  j |   \ } } } } t |  } |  j d  }	 t |	 d  } t |	 d j d  d  }
 | d d !} t j t d  t j | d   } t	 | | | d | } | j
 t   } t | |
 d  |  \ } } } } t | j | d d	 t | j | d d
 | j d \ } } } t	 | | | d | d | j
 t   } t | |
 d |  \ } } } } t | j | d d	 t | j | d d	 t	 | | | d | d | j
 t   } t | |
 d |  \ } } } } t | j | d d
 t | j | d d
 t	 | | | d | d | d | j
 t   } t | |
 d |  \ } } } } t | j | d d	 t | j | d d
 | j d \ } } } d  S(   Nt   _i   i   t   .i    i   R   t   rtolgMbP?g-C6?R(   t   ett   stratat   stt   et_st(   R   R*   t   lent   splitt   intR!   t   kront   ranget   onesR    t   fitt   argsR   R	   R   t   paramst   bset   baseline_cumulative_hazard(   R$   R   t   entry_ft   strata_fR   R'   R(   R)   R   t   vsR   t   ties1R/   t   modt   phrbt   coef_rt   se_rt   time_rt   hazard_rt   time_ht   cumhazt   survR   R   (    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   do1C   s:    %!!!!c         C   s  t  j j d  d t  j j d d  } t  j j d d d  j t  j  } t  j j d d  } t  j | d d +t  j | d d	 +t  j | d	 d
  d  d   f <t	 | | | d d } t
 t | j  d  t
 t | j  d  t
 | j j t  j d  d  S(   Ni  i2   t   sizei   i    i   i   i   i
   i   t   missingt   dropi   (   i   i   (   i   i   (   R!   t   randomt   seedt   uniformt   randintt   astypet   float64t   normalt   nanR    R   R2   t   endogR'   R)   t   shapet   r_(   t   selfR   R'   R)   t   md(    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_missingr   s    $c         C   s  t  j j d  d t  j j d d  } t  j j d d d  j t  j  } t  j j d d  } t  j |  } | d d !d | d d +t	 j
 i | d	 6| 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 } t | | | d | } | j   } d } t j | | d
 | d | }	 |	 j   }
 t j | | d
 d
 d d } | j   } t | j |
 j  t | j | j  t | j |
 j  t | j | j  d  S(   Ni  i2   RK   i   i    i   i   i
   R   R'   t   exog1i   t   exog2t   exog3i   t   exog4R(   s$   time ~ exog1 + exog2 + exog3 + exog4(   i   i   (   R!   RN   RO   RP   RQ   RR   RS   RT   t
   zeros_liket   pdt	   DataFrameR    R8   t   from_formulaR   R:   R;   (   RY   R   R'   R)   R(   t   dft   mod1t   rslt1t   fmlt   mod2t   rslt2t   mod3t   rslt3(    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_formula   s.    $..		c      
   C   s   t  j d } t  j d } t  j d } t  j d } t j i | d 6| d 6| d 6| d 6 } t j d d d d | } t | j j d	 d g  d  S(   Ni   i   i   i   i   i   i   i   i	   i    R   R'   t   x1t   x2s"   time ~ C(x1) + C(x2) + C(x1)*C(x2)R&   (	   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!   RX   Ra   Rb   R    Rc   R   R)   RW   (   RY   R   R'   Rm   Rn   Rd   t   model1(    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_formula_cat_interactions   s    	c         C   s  d } t  j j d  d t  j j d |  } t  j j d d |  j t  j  } t  j j d d d | d f } t j i | d 6| d	 6| d  d   d f d
 6| d  d   d f d 6 } d } t	 j
 | | d	 | } | j   } d d l m }	 |	 | j j |  }
 | j   } | j d |  } | j | j d |
 } | j | j d | j   d |
 } | | | | f } xF t d  D]8 } x/ t |  D]! } t | | j | | j  qWqW| | | f } xF t d  D]8 } x/ t |  D]! } t | | j | | j  qWqWd  S(   Nid   i  i2   RK   i    i   i   R   R'   R\   R]   s*   time ~ exog1 + np.log(exog2) + exog1*exog2i(   t   dmatrixR)   t
   cov_paramsi   i   (   R!   RN   RO   RP   RQ   RR   RS   Ra   Rb   R    Rc   R8   t   patsyRq   R&   t   design_infot   predictR:   Rr   R6   R   t   predicted_valuest   standard_errors(   RY   R   R   R'   R)   Rd   Rg   Ro   t   result1Rq   t   dfpt   pr1t   pr2t   pr3t   pr4t   prlt   it   j(    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_predict_formula   s6    $!4	c      
   C   s  t  j j d  d } d t  j j d |  } t  j j d d d | j t  j  } t  j j d d  } t  j j d |  } t  j j d d d | | } t j	 i | d 6| d	 6| d  d   d f d
 6| d  d   d f d 6| d 6| d 6 } t
 j d d	 d	 d d d d d | } | j   }	 t
 j d d	 | j d | j d | j d | }
 |
 j   } t |	 j | j  t |	 j | j  d  S(   Ni  i   i2   RK   i    i   i   R   R'   Rm   Rn   t   offsetR(   s   time ~ x1 + x2R&   (   i   i   (   R!   RN   RO   RP   RQ   RR   RS   RT   Ra   Rb   R    Rc   R8   R'   R   R(   R   R:   R;   (   RY   R   R   R'   R)   R   R(   Rd   Ro   Rx   t   model2t   result2(    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_formula_args   s"    '.+c   
   	   C   s  t  j j d  d t  j j d d  } t  j j d d d  j t  j  } t  j j d d  } x d D] } t | | |  } | j	   } | d  d   d f | j
 d } | d  d   d
 d   f } t | | | d | d | } | j	   }	 t |	 j
 | j
 d
  qi Wd  S(   Ni  i2   RK   i   i    i   i   t   breslowt   efroni   R   R   (   i   i   (   R   R   (   R!   RN   RO   RP   RQ   RR   RS   RT   R    R8   R:   R   (
   RY   R   R'   R)   R   Re   Rf   R   Rh   Ri   (    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_offset   s    $!c         C   sZ  t  j j d  d t  j j d d  } t  j j d d d  j t  j  } t  j j d d!  } t | | |  } | j	   } | j
 } t t  j |  j   d  | j } t t  j | d  j d  t  j d"  | j } g  | d D] }	 t  j t  j |	   ^ q }
 t  j d# } t |
 |  | j } t  j d$ }
 t  j |  j d  } t |
 |  t  j j d d d  } t | | |  } | j	 d |  } | j   } d d d d g }
 t  j |  j d  } t |
 | d d | j } t  j t  j |  j d   } | | d  d   f } t  j d% }
 t t  j |  j d  |
  d  S(&   Ni  i2   RK   i   i    i   i   gG mb.^@g&=@gQ=[#@g/BR%@gҢ8*@g{7@giA?gn?g>KK?gt
Mm?g6?g:*?_i?i   t   groupsgˇu?g\M	N.?gݴ?g?h?R-   gư>i   g8nJ??g^0إ[?gsB?g,{&?(   i   i   (   g&=@gQ=[#@g/BR%@gҢ8*@(   g{7@giA?gn?(   g>KK?gt
Mm?g6?g:*?_i?(   g8nJ??g^0إ[?gsB?g,{&?(   R!   RN   RO   RP   RQ   RR   RS   RT   R    R8   t   martingale_residualsR   t   abst   sumt   weighted_covariate_averagesRX   R<   t   meant   score_residualsRr   t   schoenfeld_residualst   flatnonzerot   isfinitet   all(   RY   R   R'   R)   RA   t   rsltt
   mart_residt   w_avgt   bc_hazt   xt   vt   wt   score_residR   t
   robust_covt   s_residt   ii(    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_post_estimation   s@    $			/		!c         C   s  t  j j d  d t  j j d d  } t  j j d d d  j t  j  } t  j j d d  } t | | |  } | j	   } | j
   } t  j t  j d  t  j d   } t | | | d | } | j	   } | j
   } d	 } t | t |  k  t  j t  j d
  t  j d   }	 t | | |  } | j	 d |	  } | j
   } t  j j d d d  | }
 t | | | d |
 } | j	   } | j
   } d } t | t |  k  d  S(   Ni  i2   RK   i   i    i   i   R/   s%   3 strata dropped for having no eventsi   i   R   g?g?R(   s*   200 observations have positive entry times(   i   i   (   R!   RN   RO   RP   RQ   RR   RS   RT   R    R8   t   summaryR5   t   arangeR7   R   t   str(   RY   R   R'   R)   RA   R   t   smryR/   t   msgR   R(   (    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_summary$  s.    $$$c      	   C   s  t  j j d  d t  j j d d  } t  j j d d d  j t  j  } t  j j d d  } t | | |  } | j	   } | j
   xt d D]l } | j
 d |  | j
 d | d d !d |  | j
 d | d d !d | d d  d  d   f d |  q Wd  S(   Ni  i2   RK   i   i    i   i   t   lhrt   hrRH   RI   t	   pred_typeRV   i
   R)   (   i   i   (   R   R   RH   RI   (   R!   RN   RO   RP   RQ   RR   RS   RT   R    R8   Ru   (   RY   RV   R'   R)   RA   R   R   (    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_predictB  s    $
2c         C   s!  t  j j d  d } t  j j d | d f  } | j d  } t  j |  } | t  j t  j j d |   } t  j |  } d | d d +t  j	 t
 d  t  j | d   } t | | d	 | d
 | } | j   }	 |	 j   }
 |
 j   } | } |
 j   } |
 j   } |
 j   } d  S(   Ni  i   RK   i   i   i    i   i   R'   R/   (   R!   RN   RO   RT   R   t   expt   logRP   R7   R5   R6   R    R8   t   get_distributionR   t   vart   stdt   rvs(   RY   R   R)   t   lin_predt	   elin_predR   R'   R/   RA   R   t   distt   fitted_meanst
   true_meanst
   fitted_vart	   fitted_sdt   sample(    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_get_distributionV  s"    #%c      	      sJ  xCd d f D]5\ } } x&t  d d g  D]\ }  d | | | f } t t |  } d | | f } |  j |  \  } } }	 |	 |	 j d  8}	 |	 |	 j d d	 d
 :}	 t  |	 d | d d     j d   }
 t |
 j	 | d d     f d   } | |  } | |
 j	  } t
 t j | |  d
  q, Wq Wd  S(   Ni2   i   id   i   i    g?s   coef_%d_%d_%ds   survival_data_%d_%d.csvt   ddofi   R'   R   R   t   alphaR-   g333333?c            sd     j  |   t   } d } |  d | t j |  d  d | t j t j |    } | S(   Ni   i   (   t   loglikeR2   R!   R   R   (   R:   t   llft   L1_wt(   t   modelt   sR   (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   plf  s    A(   i2   i   (   id   i   (   t	   enumerateR
   R   R*   R   R   R    t   fit_regularizedR   R:   R   R!   t   sign(   RY   R   R   t   jsR   R:   R$   R'   R(   R)   t	   sm_resultR   t   llf_rt   llf_sm(    (   R   R   R   sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_fit_regularizedm  s    (   t   __name__t
   __module__t   staticmethodR*   RJ   R[   Rl   Rp   R   R   R   R   t   pytestt   markt   smokeR   R   R   R   (    (    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyR   3   s   /		 		%			)R   t   survivals   .csvR   R   s   fname,ties,entry_f,strata_fc         C   s   t  j |  | | |  d  S(   N(   R   RJ   (   R$   R   R=   R>   (    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   test_r  s    (*   t	   itertoolsR   t   numpyR!   t&   statsmodels.duration.hazard_regressionR    t   numpy.testingR   R   R   t   pandasRa   R   R   R   R   R9   R   t   objectR   R   R   R   R    R%   R#   t   rdirt   listdirt   fnamesR   t
   startswitht   endswithR   t   Falset   TrueR=   R>   R   t   parametrizet   listt   productR   (    (    (    sD   lib/python2.7/site-packages/statsmodels/duration/tests/test_phreg.pyt   <module>   s,   	 `