U
    KvfUK                     @   s  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
Zd dlZdZzd dlmZ W n ek
rl   Y nX dd Zejd Zejd Zejd	 Zejd
 Zejdddejf Zejd Zejd Zejd Zejd Zejd Zejd Zejdddejf Z ejd Z!ejd Z"e j#$e j#%e&Z'e j#(e'ddZ)e*e)Z+dd Z,dd Z-dd Z.d d! Z/d"d# Z0d$d% Z1ej2j3d&d' Z4d(d) Z5d*d+ Z6d,d- Z7d.d/ Z8d0d1 Z9d2d3 Z:d4d5 Z;d6d7 Z<d8d9 Z=d:d; Z>d<d= Z?d>d? Z@ej2jAd@dA ZBdBdC ZCej2jAdDdE ZDdS )F    N)SurvfuncRightsurvdiffplot_survfuncCumIncidenceRight)assert_allcloseFc                 C   s   t r| | d S )N)
pdf_outputZsavefig)pdffig r
   L/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/duration/tests/test_survfunc.pyclose_or_save   s    r   )         r   r   r      r   )r   r   r   r   r   r   r   r   )r   r   r   r   )      ?g:gUU?g     ?        g.?gC&ϫ?g?)         r   )      ?r   r   r   )	r   r   r   r      r   r   r   	   )	r   r   r   r   r   r   r   r   r   )r   r   r   r   )gh"q?gc@?gc@?r   gG
TѺ?g b?gE;I?)r   r   r   r   resultszbmt.csvc                  C   sV   t tt} t| jtddd t| jtddd t| jt	 t| j
t t| jt d S Nh㈵>atolrtol)r   ti1st1r   	surv_prob
surv_prob1surv_prob_sesurv_prob_se1
surv_timestimes1n_riskn_risk1n_events	n_events1srr
   r
   r   test_survfunc1;   s    
r-   c                  C   sV   t tt} t| jtddd t| jtddd t| jt	 t| j
t t| jt d S r   )r   ti2st2r   r!   
surv_prob2r#   surv_prob_se2r%   times2r'   n_risk2r)   	n_events2r+   r
   r
   r   test_survfunc2F   s    
r5   c                  C   sn   t ttf} t ttf}t t| }d|dtt< t| ||\}}t	|dddd t	|dddd d S )Nr   g:ǀ,@-C6?r   g-lI?)
npZconcatenater   r.   r    r/   oneslenr   r   )tistgroupszpr
   r
   r   test_survdiff_basicQ   s    r?   c                     s   t jt d dkd d f } t| d | d }|jdd\}}|jdd\}}|j   fdd	d
D }t|| tjd  t|| tjd  t|| tjd  t|| tjd  d S )NGroupALLTStatuslogZ	transformarcsinc                    s   g | ]}  |qS r
   )index).0xr:   r
   r   
<listcomp>h   s     z(test_simultaneous_cb.<locals>.<listcomp>)n   z         )gNB?g7?g)(i?gm?)gi@ֶ?g?g*^"?g׾s|?)g0՜Q?gNFS?g2]_V.?g)1?)gFw?gBh?g-U?g9j?)	bmtlocr   simultaneous_cbr%   tolistr   r7   r_)dfsfZlcb1Zucb1Zlcb2Zucb2ixr
   rJ   r   test_simultaneous_cb]   s    
rX   c            	      C   s   ddgddgddgddgddgd} t t jdk }tjtjt}tj|d	d
}t	|}t
|d j|jj}t|j|j t|j|jddd t|j|jddd dD ].}|jd|d\}}t| | tj||f  qd S )Nk   i  V      iL  h   )linearcloglogrD   asinsqrtlogitrA   r   zbmt_results.csvrB   r6   r   )r]   r^   rD   r`   r_   g      ?)method)rP   r@   ospathdirnameabspath__file__joinpdread_csvr   valuesrC   r   r%   tr!   sr#   seZquantile_cir7   rT   )	cbZdfacur_dirfpZrsltrV   ra   lcbucbr
   r
   r   test_bmtt   s"    
rs   c                  C   s  t  } t t jdk  }t|d |j|j\}}t|dddd t|d |j|jdd\}}t|dddd t|d |j|jd	d\}}t|d
ddd t|d |j|jddd\}}t|dddd t|d |j|jddd\}}t|dddd t| d | j| jddd\}}t|dddd t|jd d }||d< t|d |j|j|j	d\}}t|dddd t|d |j|j|j	ddd\}}t|dddd t|d |j|j|j	ddd\}}t|dddd t| jd d }|| d< t| d | j| j| j	ddd\}}t|dddd t|jd d |d< t|d |j|j|j	d\}}t|dddd t|d |j|j|j	ddd\}}t|dddd t|d |j|j|j	ddd\}}t|dddd d S )NrA   rB   gϸp *@r6   r   gb)weight_typeg2.@Ztwg+MJA-@fh      ?)ru   fh_pg 4,@r   gq=
ף-@gMX/@r   r   strata)ry   gM'@)ry   ru   rx   g6[@)@gԚx)@gՐ"+@r   gPN@(@g>yX5)@g-*@)
rP   copyr@   r   rC   r   r7   Zarangeshapery   )Zfull_dfrU   statr>   ry   Zfull_stratar
   r
   r   test_survdiff   sp    

 
 
 
  
 
 
r}   c                    s.  t rddlm} |d}nd }ttt}ttt}t|}t	|| t|}t	|| t||g}t	|| t
d}g }|D ]0}t|d d |d d |d d}	||	 q~t|}| d }
|
d	d	d
dg |
 \ |j fdddD fdddD dd t	|| t
jdk}tt
j|df t
j|df }| }| d }
|
d	d	d
dg |
 \ |jdd\}}tj|j||dd |jdd\}}tj|j|dd tj|j|dd tj|j|jd|j  dd tj|j|jd|j  dd tdd t	|| t r*|  d S )Nr   )PdfPagesztest_survfunc.pdfr@   r   rB   rC   )titleg?g{Gz?g?c                    s   g | ]} | qS r
   r
   rH   k)har
   r   rK      s     z test_plot_km.<locals>.<listcomp>)r   r   r   c                    s   g | ]} | qS r
   r
   r   )lbr
   r   rK      s     zcenter right)rQ   rA   rD   rE   Z	lightgrey)colorrF   Zdarkgreyr   Zredd   iX  )r   Zmatplotlib.backends.backend_pdfr~   r   r   r    r.   r/   r   r   rP   groupbyappendZget_axesZset_positionZget_legend_handles_labelsZlegendr@   rQ   ZplotrR   pltZfill_betweenr%   r!   r#   Zxlimclose)Zclose_figuresr~   r   Zsr1Zsr2r	   rt   svgs0ZaxiirV   rq   rr   r
   )r   r   r   test_plot_km   sV    






"


r   c                  C   sf   t jd } t jd }t jd }t| ||d}t|jt jd  t|jt jd  t|jt jd  d S )N)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   r   r   r   r   r   r   r   r   r   Zfreq_weights)r   r   r   r   r   )r   g      ?gvWUU?g&>?r   )guh5y?gXa?gQ[?gi< ?g?r7   rT   r   r   r%   r!   r#   )tmr;   wtrV   r
   r
   r   test_weights1  s    


r   c                  C   s|   t jd } t jd }t jd }t jd }t jd }t| ||d}t||}t|j|j t|j|j t|jt jd  d S )N)
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   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   )gb?gL?g3?g0^?g!?gyx?gm+?goG!?r   )r   r;   r   Ztm0Zst0sf0Zsf1r
   r
   r   test_weights2  s    





r   c                  C   s  t jd } t jd }t| |}t dddddddgt dddddddgt dddddddgg}t|d	 |jd	  t|d
 |jd
  t|d |jd  t dddddddgt dddddddgt dddddddgg}t|d	 |jd	  t|d
 |jd
  t|d |jd  t t| }t| ||d}t|jd	 |jd	  t|jd
 |jd
  t|jd |jd  d S )N)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   r   r   r   r   r   r   g#q?g쿭??r   gruS?gl?gS?r   r   r   g!?g\?gm7)?gā?gL^?r   )	r7   rT   r   arrayr   cinccinc_ser8   r9   )Zftimefstatcir   r   weightsZciwr
   r
   r   test_incidence2  sX    


          r   c                  C   s   t jd } t jd }t jd }t| ||d}t|jt jd  t|jt jd  t|jt jd dd	 t|jt jd
 dd	 d S )N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   r   r   r   r   r   r   entry)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )rw   gz6?g(?gy?g镲q?gD?g37?r6   r   )gea?g(y?gH.?g9#J?gAǘ?g/$?g=yX?r7   rT   r   r   r'   r%   r!   r#   timesstatusr   rV   r
   r
   r   test_survfunc_entry_1`  s     




r   c                  C   sr   t jd } t jd }t jd }t| ||d}t| |}t|j|j t|j|j t|j|j t|j|j d S )Nr   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rV   r   r
   r
   r   test_survfunc_entry_2w  s    



r   c                  C   s   t jd } t jd }t jd }t| ||d}t|jt jd  t|jt jd  t|jt jd dd	 t|jt jd
 dd	 d S )N)	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   )r   r   )g(m?g_#I?r   r   )gHK?g1q	?r   r   r
   r
   r   test_survfunc_entry_3  s    


r   c                  C   sd   t jd } t jd }t jd }t jd }t| |||d\}}t| ||\}}t|| t|| d S )N)
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   )
r   r   r   r   r   r   r   r   r   r   r   r7   rT   r   r   )r:   r;   grr   Zz1p1Zz2p2r
   r
   r   test_survdiff_entry_1  s    




r   c                  C   sx   t jd } t jd }t jd }t jd }t| ||\}}t|d t|d t| |||d\}}t|d t|d	 d S )
N)
r   r   r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   g:@gZj΃?r   g      @g$#P?r   r:   r;   r   r   r=   r>   r
   r
   r   test_survdiff_entry_2  s    






r   c                  C   sx   t jd } t jd }t jd }t jd }t| ||\}}t|d t|d t| |||d\}}t|d t|d	 d S )
N)
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   r   g-4@g[TR?r   g&x @gb: $0?r   r   r
   r
   r   test_survdiff_entry_3  s    






r   c            	      C   s   t jd d} t t jj| d }t jjdd| d}t |}|| }|| }t||}d|dk }t||}d|j	 }|j
d |j
d  t | }t|| d S )Niw	     sizer   r   r   )r7   randomseedrD   uniformrandintZargsortr   r   r!   r   Zflatnonzeror   )	ntimer   r   r   ZstatusarV   rI   yr
   r
   r   test_incidence2  s    



r   c                  C   s   d} t jd t jj| dfd}t jj| d}t jjdd| d}t|||d}t jd }t jd	 }t|j	dd
 | t|j
dd
 | d S )Nr   j  r   r   r   r   )exog)gsX?g؝Ic?g>t(?gC?gN`ז	?)g,`#ש?gNti?g|#?g\?gV[Ch?r   )r7   r   r   normalr   r   r   rT   r   r   r!   )r   rI   r   r   resultZtimexZsprobr
   r
   r   test_kernel_survfunc1  s    

r   c                  C   s   d} t jd t jj| dfd}t jjdd| d}t jjdd| d}t||}t|||dd	}t|j|j t|j	|j	d
d
d d S )Nr   r   r   r   r   r   r   '  r   	bw_factorgư>)r   r   )
r7   r   r   r   r   r   r   r   r%   r!   )r   rI   r   r   Zresultkmr   r
   r
   r   test_kernel_survfunc2  s    
r   c                  C   sp   d} t jd t jj| dfd}t jjdd| d}t jjdd| d}t|||dd	 t|||t jd
 d	 d S )Nr   r   r   r   r   r   r   r   r   )r   r   )r7   r   r   r   r   r   rT   r   rI   r   r   r
   r
   r   test_kernel_survfunc3  s    r   c                  C   s   d} t jd t jj| dfd}t jjdd| d}t jjdd| d}t||}dD ]H}t|||d|d	}t|j|j d
D ]}t|j	| |j	| dd q|qTd S )Nr   r   r   r   r   r   )FTr   )r   r   dimred)r   r   r   )r   )
r7   r   r   r   r   r   r   r   r   r   )r   rI   r   r   Zresult1r   Zresult2r   r
   r
   r   test_kernel_cumincidence1  s    

r   c                  C   sZ   d} t jd t jj| dfd}t jjdd| d}t jjdd| d}t|||dd d S )	Nr   r   r   r   r   r   r   r   )r7   r   r   r   r   r   r   r
   r
   r   test_kernel_cumincidence2,  s    r   )Erb   Znumpyr7   Zstatsmodels.duration.survfuncr   r   r   r   Znumpy.testingr   Zpandasrh   Zpytestr   Zmatplotlib.pyplotZpyplotr   ImportErrorr   rT   r   r    r&   r"   nanr$   r(   r*   r.   r/   r2   r0   r1   r3   r4   rc   rd   re   rf   ro   rg   rp   ri   rP   r-   r5   r?   rX   rs   r}   markZ
matplotlibr   r   r   r   r   r   r   r   r   r   r   r   r   Zsmoker   r   r   r
   r
   r
   r   <module>   sj   












:
8.
