U
    ÃmœdUK  ã                   @   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
   úa/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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   )g”àh"Çqì?gc@›Á„öâ?gc@›Á„öÒ?r   g‚G
TÑº?g bŒÐ?g‰E;Œ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 ©Nçñhãˆµøä>©Ú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¶-Êl�IÂ?)
Ú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   é�   é¬   )gÚNB†áåÛ?gº¬ºõ7ôÚ?g)( äiÔÙ?g‚m°¯ÒØ?)gi@Ö¶Õêí?g±Ñ„ºì?g*À^þ–"ì?g×¾ãˆs|ë?)g0¹ÕœQ­à?gNFSÅÞ?g¶2]_V.Ý?g)1¾½Û?)gF‚ÂwÞî?gBh­­í?g�¿-’Uí?g§Éð9jì?)	ÚbmtÚlocr   Úsimultaneous_cbr%   Útolistr   r7   Úr_)ÚdfÚsfZlcb1Zucb1Zlcb2Zucb2Zixr
   rJ   r   Útest_simultaneous_cb]   s    
rW   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 ƒ q®d S )Nék   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   r`   ÚlcbÚucbr
   r
   r   Útest_bmtt   s"    ü
rr   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_typegô2Šå–Æ.@Ztwg+MJA·÷-@Úfhç      à?)rt   Úfh_pg ã4ôï,@r   gq=
×£°-@gãüMX/@r   r   Ústrata)rx   gM¡ó»ô'@)rx   rt   rw   gã6À[@)@gÔšæ§x)@g¦Õ�¸Ç"+@r   gÆPN´«@(@g>yX¨5í)@gË-­†´*@)
rP   Úcopyr@   r   rC   r   r7   ZarangeÚshaperx   )Zfull_dfrU   Ústatr>   rx   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{®Gázä?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   Úredéd   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	   rs   ÚsvÚgÚs0ZaxÚiirV   rp   rq   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      å?g“vWUUà?g&í>®ªªÒ?r   )guhä5§y²?g†ŠXa†Á?gïÍÊQ[Ê?g´i¶< šÔ?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ùñÏÂ?g´0^åýÈ?gÊ!žº¬Í?gø´yÒx˜Ó?gûmº+ÜîÝ?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   g½óruSŒÊ?g‡lÁÆ?gŒS¥Ñ?r   r   r   g�±!¬„ö²?g\Û­ú¶?gŠm7 )»?gÏäÄ�©¼?gÙÃêÑL^À?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”   )rv   g—�z6«Ú?gçŒ(í¾Ô?gµ¦yÇÑ?gâé•²qÌ?gÐDØðôÂ?gœ3¢´7ø²?r6   ©r   )gþe÷äa¡Ö?g(µ¦yÓ?gç§èH.Ï?gîëÀ9#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¢   )g®ÓHKåíÀ?g1ïq¦	ÛÅ?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â:ÆÇ@g½Z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)g©‚´sX©Ó?gÃØ�Iöcª?g>¢t¯´(æ?gCÅ?gN`�×–	Ô?)g,`#Å×©ï?gƒNtiï?g|#€¼Óï?g\Û­ú»î?gVÊ[Cãhî?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Ì   )Era   Únumpyr7   Zstatsmodels.duration.survfuncr   r   r   r   Znumpy.testingr   Zpandasrg   Zpytestr   Zmatplotlib.pyplotZpyplotrˆ   ÚImportErrorr   rT   r   r    r&   r"   Únanr$   r(   r*   r.   r/   r2   r0   r1   r3   r4   rb   rc   rd   re   rn   rf   ro   rh   rP   r-   r5   r?   rW   rr   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.
