U
    Kvf:                  
   @   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 dd dZd	d
 ZG dd dZejejeZejedZeeZdd eD ZdZdZdZej de!e "eeeedd Z#dS )    N)PHReg)assert_allcloseassert_equalassert_   )survival_r_results)survival_enet_r_resultsZbfgs)methodZdispc                 C   s   |d krBd| ||f }d| ||f }d| ||f }d| ||f }n@d| |||f }d| |||f }d| |||f }d| |||f }t t|}t t|}	t t|}
t t|}||	|
|fS )	Nzcoef_%d_%d_%szse_%d_%d_%sztime_%d_%d_%szhazard_%d_%d_%szcoef_%d_%d_%s_%szse_%d_%d_%s_%sztime_%d_%d_%s_%szhazard_%d_%d_%s_%s)getattrr   )npextties	coef_nameZse_nameZ	time_nameZhazard_namecoefsetimeZhazard r   I/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/duration/tests/test_phreg.pyget_results"   s    



r   c                   @   s   e Zd Zedd Zedd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zejjdd Zejjdd Zejjdd Zdd ZdS )	TestPHRegc                 C   s~   t jt jt}tjt j|d| dd}|d d df }|d d df }|d d df }|d d dd f }||||fS )Nresults )	delimiterr   r         )ospathdirnameabspath__file__npZ
genfromtxtjoin)fnamecur_dirdatar   statusentryexogr   r   r   	load_file6   s    zTestPHReg.load_filec                 C   s  t | \}}}}t|}| d}	t|	d }t|	d dd }
|dd }ttdt|d }t	||||d}|j
f t}t||
d |\}}}}t|j|dd	 t|j|d
d	 |jd \}}}t	|||||dj
f t}t||
d|\}}}}t|j|dd	 t|j|dd	 t	|||||dj
f t}t||
d|\}}}}t|j|d
d	 t|j|d
d	 t	||||||dj
f t}t||
d|\}}}}t|j|dd	 t|j|d
d	 |jd \}}}d S )N_r   r   .r      )r   gMbP?Zrtolg-C6?)r'   r   et)stratar   st)r'   r/   r   Zet_st)r   r)   lensplitintr!   kronrangeonesr   fitargsr   r   paramsbsebaseline_cumulative_hazard)r#   r   entry_fstrata_fr   r&   r'   r(   r   vsr   Zties1r/   modZphrbZcoef_rZse_rZtime_rZhazard_rZtime_hcumhazsurvr   r   r   r   r   do1C   sN    



 zTestPHReg.do1c                 C   s   t jd dt jjdd }t jddd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 )N麅  2      sizer   r   rE      r,   
      Zdrop)missing   )rM   rI   )r!   randomseeduniformrandintastypefloat64normalnanr   r   r1   endogr&   r(   shaper_)selfr   r&   r(   Zmdr   r   r   test_missingr   s    zTestPHReg.test_missingc              
   C   s<  t jd dt jjdd }t jdddt j}t jjdd}t |}|dd d |dd< t	
|||d d df |d d d	f |d d df |d d d
f |d}t||||d}| }d}tj||||d}	|	 }
tj||ddd}| }t|j|
j t|j|j t|j|
j t|j|j d S )NrC   rD   rE   rF   r   r   rH   rJ   r   r   )r   r&   exog1exog2Zexog3Zexog4r'   r'   z$time ~ exog1 + exog2 + exog3 + exog4)r&   r'   r&   r'   )r!   rN   rO   rP   rQ   rR   rS   rT   Z
zeros_likepd	DataFramer   r7   from_formular   r9   r:   )rY   r   r&   r(   r'   dfmod1rslt1fmlmod2rslt2Zmod3Zrslt3r   r   r   test_formula   s8    
  

zTestPHReg.test_formulac                 C   sb   t jd }t jd }t jd }t jd }t||||d}tjdd|d}t|jjd	d
g d S )N)	r   r   r   rI   r,            	   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )r   r&   x1x2z"time ~ C(x1) + C(x2) + C(x1)*C(x2)r&   )r&   r%   rk   rj   )	r!   rX   r^   r_   r   r`   r   r(   rW   )rY   r   r&   rl   rm   ra   model1r   r   r   test_formula_cat_interactions   s    



 z'TestPHReg.test_formula_cat_interactionsc                 C   sr  d}t jd dt jj|d }t jdd|t j}t jjdd|dfd}t|||d d df |d d df d}d	}t	j
|||d
}| }ddlm}	 |	|jj|}
| }|j|d}|j|j|
d}|j|j| |
d}||||f}tdD ],}t|D ]}t|| j|| j qq |||f}tdD ],}t|D ]}t|| j|| j qLq@d S )Nd   rC   rD   rF   r   r   r   )r   r&   r[   r\   z*time ~ exog1 + np.log(exog2) + exog1*exog2)r&   )dmatrix)r(   )
cov_paramsr(   rI   r   )r!   rN   rO   rP   rQ   rR   rS   r^   r_   r   r`   r7   Zpatsyrq   r%   Zdesign_infopredictr9   rr   r5   r   Zpredicted_valuesZstandard_errors)rY   r   r   r&   r(   ra   rd   rn   result1rq   ZdfpZpr1Zpr2Zpr3Zpr4Zprlijr   r   r   test_predict_formula   s>     

zTestPHReg.test_predict_formulac              	   C   s   t jd d}dt jj|d }t jjdd|dt j}t jjdd}t jj|d}t jjdd|d| }t	|||d d df |d d df ||d	}t
jd
ddd|d}| }	t
jd
|j|j|j|d}
|
 }t|	j|j t|	j|j d S )NrC   rE   rD   rF   r   r   )rE   r   r   )r   r&   rl   rm   offsetr'   ztime ~ x1 + x2r&   rx   r'   )r&   rx   r'   r%   )r!   rN   rO   rP   rQ   rR   rS   rT   r^   r_   r   r`   r7   r&   rx   r'   r   r9   r:   )rY   r   r   r&   r(   rx   r'   ra   rn   rt   Zmodel2Zresult2r   r   r   test_formula_args   s0      
  zTestPHReg.test_formula_argsc           
      C   s   t jd dt jjdd }t jdddt j}t jjdd}dD ]v}t|||}|	 }|d d df |j
d  }|d d d	d f }t|||||d
}|	 }	t|	j
|j
d	d   qHd S )NrC   rD   rE   rF   r   r   rH   breslowZefronr   )rx   r   )r!   rN   rO   rP   rQ   rR   rS   rT   r   r7   r9   r   )
rY   r   r&   r(   r   rb   rc   rx   re   rf   r   r   r   test_offset   s    zTestPHReg.test_offsetc                 C   s  t jd dt jjdd }t jdddt j}t jjdd}t|||}|	 }|j
}tt | d |j}tt |d dt jd	  |j}d
d |d D }	t jd }
t|	|
 |j}t jd }	t |d}
t|	|
 t jddd}t|||}|j	|d}| }ddddg}	t |d}
t|	|
dd |j}t t |d}||d d f }t jd }	tt |d|	 d S )NrC   rD   rE   rF   r   r   rH   gG mb.^@)g&=@gQ=[#@g/BR%@gҢ8*@c                 S   s   g | ]}t t |qS r   )r!   meanabs.0xr   r   r   
<listcomp>  s     z2TestPHReg.test_post_estimation.<locals>.<listcomp>)g{7@giA?gn?)g>KK?gt
Mm?g6?g:*?_i?r   groupsgˇu?g\M	N.?gݴ?g?h?gư>r-   r   )g8nJ??g^0إ[?gsB?g,{&?)r!   rN   rO   rP   rQ   rR   rS   rT   r   r7   Zmartingale_residualsr   r~   sumZweighted_covariate_averagesrX   r;   Zscore_residualsr}   rr   Zschoenfeld_residualsZflatnonzeroisfiniteall)rY   r   r&   r(   r?   rsltZ
mart_residZw_avgZbc_hazvwZscore_residr   Z
robust_covZs_residiir   r   r   test_post_estimation   s@    




zTestPHReg.test_post_estimationc                 C   s0  t jd dt jjdd }t jdddt j}t jjdd}t|||}|	 }|
 }t t dt d}t||||d	}|	 }|
 }d
}t|t|k t t dt d}	t|||}|j	|	d}|
 }t jddd| }
t||||
d}|	 }|
 }d}t|t|k d S )NrC   rD   rE   rF   r   r   rH   rI   )r/   z%3 strata dropped for having no events   rj   r   皙?g?r]   z*200 observations have positive entry times)r!   rN   rO   rP   rQ   rR   rS   rT   r   r7   summaryr4   Zaranger6   r   str)rY   r   r&   r(   r?   r   Zsmryr/   msgr   r'   r   r   r   test_summary$  s.    zTestPHReg.test_summaryc                 C   s   t jd dt jjdd }t jdddt j}t jjdd}t|||}|	 }|
  dD ]N}|j
|d	 |j
|dd
 |d |j
|dd
 |dd
d d f |d qdd S )NrC   rD   rE   rF   r   r   rH   )Zlhrhrr@   rA   )	pred_typerJ   )rV   r   )rV   r(   r   )r!   rN   rO   rP   rQ   rR   rS   rT   r   r7   rs   )rY   rV   r&   r(   r?   r   r   r   r   r   test_predictB  s     zTestPHReg.test_predictc                 C   s   t jd d}t jj|dfd}|d}t | }| t t jj|d }t |}d|dd< t 	t
dt |d }t||||d	}| }	|	 }
|
 }|}|
 }|
 }|
 }d S )
NrC   rE   r   rF   r   r      r,   )r&   r/   )r!   rN   rO   rT   r   explogrP   r6   r4   r5   r   r7   get_distributionr}   varstdZrvs)rY   r   r(   Zlin_predZ	elin_predr   r&   r/   r?   r   distZfitted_meansZ
true_meansZ
fitted_varZ	fitted_sdsampler   r   r   test_get_distributionV  s"    

zTestPHReg.test_get_distributionc                    s   dD ]\}}t ddgD ]\}d|||f }tt|}d||f }| |\}}}	|	|	d8 }	|	|	jddd }	t|	|dd	  jd
}
t|
j	|dd  fdd}||}||
j	}t
t|| d qqd S )N))rD   r   )rp   r,   r   r   zcoef_%d_%d_%dzsurvival_data_%d_%d.csvr   )Zddofr{   )r&   r   )alphag333333?r-   c              	      sP     | t }d}|d| t| d  d |tt|     }|S )Nr   r   )Zlogliker1   r!   r   r~   )r9   ZllfZL1_wtmodelsr   r   r   plf  s    6z+TestPHReg.test_fit_regularized.<locals>.plf)	enumerater
   r   r)   r}   r   r   Zfit_regularizedr   r9   r   r!   sign)rY   r   r   Zjsr   r9   r#   r&   r'   r(   Z	sm_resultr   Zllf_rZllf_smr   r   r   test_fit_regularizedm  s    

zTestPHReg.test_fit_regularizedN)__name__
__module____qualname__staticmethodr)   rB   rZ   rg   ro   rw   ry   r|   r   pytestmarkZsmoker   r   r   r   r   r   r   r   r   3   s$   

. %)


r   r   c                 C   s$   g | ]}| d r|dr|qS )Zsurvivalz.csv)
startswithendswithr   r   r   r   r     s     

r   rz   )FTzfname,ties,entry_f,strata_fc                 C   s   t | ||| d S )N)r   rB   )r#   r   r<   r=   r   r   r   test_r  s    r   )$	itertoolsr   Znumpyr!   Z&statsmodels.duration.hazard_regressionr   Znumpy.testingr   r   r   Zpandasr^   r   r   r   r   r8   r   r   r   r   r   r    r$   r"   Zrdirlistdirfnamesr   r<   r=   r   Zparametrizelistproductr   r   r   r   r   <module>   s0   
  a
