
    M/PhUK                        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	 d dlmZ n# e$ r Y nw xY w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j*        e)          Z+d Z,d Z-d Z.d Z/d Z0d Z1ej2        j3        d             Z4d  Z5d! Z6d" Z7d# Z8d$ Z9d% Z:d& Z;d' Z<d( Z=d) Z>d* Z?d+ Z@ej2        jA        d,             ZBd- ZCej2        jA        d.             ZDdS )/    N)SurvfuncRightsurvdiffplot_survfuncCumIncidenceRight)assert_allcloseFc                 B    t           r|                     |           d S d S )N)
pdf_outputsavefig)pdffigs     h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/duration/tests/test_survfunc.pyclose_or_saver      s,     C     )         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                  J   t          t          t                    } t          | j        t
          dd           t          | j        t          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srs    r   test_survfunc1r1   ;        
sC	 	 BBL*4dCCCCBO]DIIIIBM6***BIw'''BK+++++r   c                  J   t          t          t                    } t          | j        t
          dd           t          | j        t          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/   s    r   test_survfunc2r;   F   r2   r   c                  n   t          j        t          t          f          } t          j        t          t
          f          }t          j        t          |                     }d|dt          t                    <   t          | ||          \  }}t          |ddd           t          |ddd           d S )Nr   g:ǀ,@-C6?r    g-lI?)
npconcatenater#   r4   r$   r5   oneslenr   r   )tistgroupszps        r   test_survdiff_basicrG   Q   s     
c
	#	#B	c
	#	#BWSWWFF1SXX:BF##DAqAwT5555AwT555555r   c                  l   t           j        t           d         dk    d d f         } t          | d         | d                   }|                    d          \  }}|                    d          \  }}|j                                        f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	transformarcsinc                 :    g | ]}                     |          S  )index).0xrB   s     r   
<listcomp>z(test_simultaneous_cb.<locals>.<listcomp>h   s#    	4	4	4!"((1++	4	4	4r   )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   r>   r_)dfsflcb1ucb1lcb2ucb2ixrB   s          @r   test_simultaneous_cbrg   ]   s?   
 
W&)	*B	r#w8	-	-B##e#44JD$##h#77JD$					B	4	4	4	43	4	4	4BDHbe %: ; < < <DHbe %; < = = = DHbe %; < = = =DHbe %; < = = = = =r   c                     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          j	        |          }t          |d         j        |j        j                  }t          |j        |j                   t          |j        |j        dd           t          |j        |j        dd           dD ]D}|                    d|          \  }}t          | |         t*          j        ||f                    Ed S )Nk   i  V      iL  h   )linearcloglogrM   asinsqrtlogitrJ   r   zbmt_results.csvrK   r=   r    )rm   rn   rM   rp   ro   g      ?)method)r[   rI   ospathdirnameabspath__file__joinpdread_csvr   valuesrL   r   r)   tr%   sr'   sequantile_cir>   r_   )	cbdfacur_dirfprsltra   rq   lcbucbs	            r   test_bmtr   t   sC    #J#YsCj:	
 
B ci5 
!Cgoobgooh7788G	gy*;	<	<B;r??D	s3x
(9	:	:BBM46***BL$&t$????BOTW4dCCCCA 5 5>>$v>66S6
BE#s(O44445 5r   c                     t                                           } t           t           j        dk                                             }t          |d         |j        |j                  \  }}t          |ddd           t          |d         |j        |j        d          \  }}t          |ddd           t          |d         |j        |j        d	          \  }}t          |d
dd           t          |d         |j        |j        dd          \  }}t          |ddd           t          |d         |j        |j        dd          \  }}t          |ddd           t          | d         | j        | j        dd          \  }}t          |ddd           t          j        |j        d                   dz  }||d<   t          |d         |j        |j        |j	                  \  }}t          |ddd           t          |d         |j        |j        |j	        dd          \  }}t          |ddd           t          |d         |j        |j        |j	        dd          \  }}t          |ddd           t          j        | j        d                   dz  }|| d<   t          | d         | j        | j        | j	        dd          \  }}t          |ddd           t          j        |j        d                   dz  |d<   t          |d         |j        |j        |j	                  \  }}t          |ddd           t          |d         |j        |j        |j	        dd          \  }}t          |ddd           t          |d         |j        |j        |j	        dd          \  }}t          |ddd           d S )NrJ   rK   gϸp *@r=   r    gb)weight_typeg2.@twg+MJA-@fh      ?)r   fh_pg 4,@r   gq=
ף-@gMX/@r   r   strata)r   gM'@)r   r   r   g6[@)@gԚx)@gՐ"+@r   gPN@(@g>yX5)@g-*@)
r[   copyrI   r   rL   r   r>   arangeshaper   )full_dfr`   statrF   r   full_stratas         r   test_survdiffr      s   
 hhjjG	SY%	 	%	%	'	'B r#w	2844GD!D(D9999r#w	28FFFGD!D(D9999r#w	28FFFGD!D(D9999r#w	28! ! !GD!D(D9999r#w	28  GD!D(D9999 ws|W^W]#'a1 1 1GD!D(D9999 Yrx{##a'FBxLr#w	28BIFFFGD!D(D9999r#w	28BI#'c3 3 3GD!D'48888r#w	28BI#'a1 1 1GD!D(D9999 )GM!,--1K#GHws|W^W]%n$SJ J JGD!D(D9999 9RXa[))A-BxLr#w	28BIFFFGD!D(D9999r#w	28BI#'c3 3 3GD!D'48888r#w	28BI#'a1 1 1GD!D(D999999r   c                    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 ]G}t          |d         d         |d         d         |d                   }	|                    |	           Ht          |          }|                                d         }
|
                    g d	           |
                                \  |                    fd
dD             fddD             d           t          ||           t          j        dk    }t          t          j        |df         t          j        |df                   }|                                }|                                d         }
|
                    g d	           |
                                \  |                    d          \  }}t+          j        |j        ||d           |                    d          \  }}t+          j        |j        |d           t+          j        |j        |d           t+          j        |j        |j        d|j        z  z
  d           t+          j        |j        |j        d|j        z  z   d           t+          j        dd           t          ||           t           r|                                 d S d S )Nr   )PdfPagesztest_survfunc.pdfrI   r   rK   rL   )title)皙?r   g{Gz?g?c                      g | ]
}|         S rR   rR   )rT   khas     r   rV   z test_plot_km.<locals>.<listcomp>       )))!1)))r   )r   r   r   c                      g | ]
}|         S rR   rR   )rT   r   lbs     r   rV   z test_plot_km.<locals>.<listcomp>   r   r   zcenter right)r\   rJ   rM   rN   	lightgrey)colorrP   darkgreyr   redd   iX  )r	   matplotlib.backends.backend_pdfr   r   r#   r$   r4   r5   r   r   r[   groupbyappendget_axesset_positionget_legend_handles_labelslegendrI   r\   plotr]   pltfill_betweenr)   r%   r'   xlimclose)close_figuresr   r   sr1sr2r   r   svgs0axiira   r   r   r   r   s                  @@r   test_plot_kmr      sP     <<<<<<h*++
S
!
!C
S
!
!C


C#s


C#s
c

#
#C#s 
W		B	B  1Q49ad8nAaDAAA
		"


C		BOO)))***))++FBJJ))))y)))))))y)))!  # # # #s 
e	B	swr3w'X)>	?	?B
''))C		BOO)))***))++FB!!E!22HCR]CK@@@@!!H!55HCHR]Cz2222HR]Cz2222HR]BL1R_+<<EJJJJHR]BL1R_+<<EJJJJHS##s 		 r   c                  t   t           j        d         } t           j        d         }t           j        d         }t          | ||          }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   freq_weights)r   r   r   r   r   )r   g      ?gvWUU?g&>?r   )guh5y?gXa?gQ[?gi< ?g?r>   r_   r   r   r)   r%   r'   )tmrC   wtra   s       r   test_weights1r     s     
4	5B	4	5B	4	5B	r2B	/	/	/BBM25#7888BLEDEG G GBOE % &' ' ' ' 'r   c                     t           j        d         } t           j        d         }t           j        d         }t           j        d         }t           j        d         }t          | ||          }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   rC   r   tm0st0sf0sf1s          r   test_weights2r     s     
,	-B	+	,B	+	,B
%=
>C
%;
<C
BR
0
0
0C
S
!
!CCNCN333CM3=111C$E = >? ? ? ? ?r   c                  H   t           j        d         } t           j        d         }t          | |          }t          j        g d          t          j        g d          t          j        g d          g}t	          |d         |j        d                    t	          |d         |j        d                    t	          |d         |j        d                    t          j        g d	          t          j        g d
          t          j        g d          g}t	          |d         |j        d                    t	          |d         |j        d                    t	          |d         |j        d                    t          j        t          |                     }t          | ||          }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?쿭??r   r   r   r   r   )r   r   ruS?r   r   r   r   )r   r   r   gl?S?r   r   r   r   r   )g!?\?r   r   r   r   r   )r   r   m7)?r   r   r   r   )r   r   r   gā?L^?r   r   r   )	r>   r_   r   arrayr   cinccinc_ser@   rA   )ftimefstatcir   r   weightsciws          r   test_incidencer   2  s    EFGEEFGE	5%	(	(BH : : : ; ;H : : : ; ;H : : : ; ;	<D DGRWQZ(((DGRWQZ(((DGRWQZ(((x = = = > >x 1 1 1 2 2x 1 1 1 2 2	3G GAJ
1...GAJ
1...GAJ
1... gc%jj!!G
E5w
?
?
?CBGAJ,,,BGAJ,,,BGAJ,,,,,r   c                     t           j        d         } t           j        d         }t           j        d         }t          | ||          }t          |j        t           j        d                    t          |j        t           j        d                    t          |j        t           j        d         d	           t          |j        t           j        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   )r   gz6?g(?gy?g镲q?gD?g37?r=   r!   )gea?g(y?gH.?g9#J?gAǘ?g/$?g=yX?r>   r_   r   r   r+   r)   r%   r'   timesstatusr   ra   s       r   test_survfunc_entry_1r   `  s     E67EU56FE45E	ufE	2	2	2BBIru%89:::BM25)=#>???BL"%>#@    BORU>&@     r   c                     t           j        d         } t           j        d         }t           j        d         }t          | ||          }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   ra   r   s        r   test_survfunc_entry_2r   w  s     E67EU56FE45E	ufE	2	2	2B
v
&
&CBIsz***BM3>222BL#-000BOS%566666r   c                     t           j        d         } t           j        d         }t           j        d         }t          | ||          }t          |j        t           j        d                    t          |j        t           j        d                    t          |j        t           j        d         d	           t          |j        t           j        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   s       r   test_survfunc_entry_3r     s     E+,EU,-FE+,E	ufE	2	2	2BBIruT{+++BM25;///BL"%(:";$GGGGBORU+<%=DIIIIIIr   c                  *   t           j        d         } t           j        d         }t           j        d         }t           j        d         }t          | |||          \  }}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   r>   r_   r   r   )rB   rC   grr   z1p1z2p2s           r   test_survdiff_entry_1r     s    	+	,B	+	,B	+	,BE./Eb"b...FBb"b!!FBBBr   c                  j   t           j        d         } t           j        d         }t           j        d         }t           j        d         }t          | ||          \  }}t          |d           t          |d           t          | |||          \  }}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   rB   rC   r   r   rE   rF   s         r   test_survdiff_entry_2r     s     
+	,B	+	,B	+	,BE./E BBDAqAx   Az""" BBe,,,DAqAsA{#####r   c                  j   t           j        d         } t           j        d         }t           j        d         }t           j        d         }t          | ||          \  }}t          |d           t          |d           t          | |||          \  }}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   s         r   test_survdiff_entry_3r     s     
+	,B	+	,B	+	,BE./E BBDAqAy!!!A{### BBe,,,DAqAz"""Az"""""r   c                  &   t           j                            d           d} t          j        t           j                            |                      }t           j                            dd|           }t          j        |          }||         }||         }t          ||          }d|dk    z  }t          ||          }d|j	        z
  }|j
        d         |j
        d         z   t          j        |                   }t          ||           d S )Niw	     sizer   r   r   )r>   randomseedrM   uniformrandintargsortr   r   r%   r   flatnonzeror   )	ntimer   r   r   statusara   rU   ys	            r   test_incidence2r    s     INN4AF29$$!$,,---DYq!!,,F	D		B8DBZF	4	(	(B1oG	tW	%	%B	BLA	bgaj	 "."9"9:AAqr   c                     d} t           j                            d           t           j                            | df          }t           j                            |           }t           j                            dd|           }t          |||          }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   )r>   r   r   normalr   r   r   r_   r   r  r%   )r   rU   r  r   resulttimexsprobs          r   test_kernel_survfunc1r    s    AINN4
	q!f%%A9!$$DYq!!,,F4a000FEKLEELMEFK!$e,,,F$QqS)511111r   c                     d} t           j                            d           t           j                            | df          }t           j                            dd|           }t           j                            dd|           }t          ||          }t          |||d	          }t          |j        |j                   t          |j	        |j	        d
d
           d S )Nr   r  r   r   r   r   r   '  r  	bw_factorgư>)r"   r!   )
r>   r   r   r  r   r   r   r   r)   r%   )r   rU   r  r   resultkmr	  s         r   test_kernel_survfunc2r    s    
 	AINN4
	q!f%%A9Q++DYq!!,,FT6**H4a5AAAFH'):;;;H&(8t$OOOOOOr   c                     d} t           j                            d           t           j                            | df          }t           j                            dd|           }t           j                            dd|           }t          |||d	           t          |||t           j        d
         	           d S )Nr   r  r   r   r   r   r   r  r  )r  r  )r>   r   r   r  r   r   r_   r   rU   r  r   s       r   test_kernel_survfunc3r    s     	AINN4
	q!f%%A9Q++DYq!!,,F$Q%8888$Q"%2EFFFFFFr   c                     d} t           j                            d           t           j                            | df          }t           j                            dd|           }t           j                            dd|           }t          ||          }dD ]]}t          |||d|	          }t          |j        |j                   d
D ]*}t          |j	        |         |j	        |         d           +^d S )Nr   r  r   r   r   r   )FTr  )r  r  dimred)r   r   r   )r"   )
r>   r   r   r  r   r   r   r   r   r   )r   rU   r  r   result1r  result2r   s           r   test_kernel_cumincidence1r    s    	AINN4
	q!f%%A9Q++DYq!!,,Ff--G I I#D&qE+13 3 3 	w}555 	I 	IAGLOW\!_4HHHHH	II Ir   c                  :   d} t           j                            d           t           j                            | df          }t           j                            dd|           }t           j                            dd|           }t          |||d           d S )	Nr   r  r   r   r   r   r  r  )r>   r   r   r  r   r   r  s       r   test_kernel_cumincidence2r  ,  s     	AINN4
	q!f%%A9Q++DYq!!,,FdFe<<<<<<r   )Err   numpyr>   statsmodels.duration.survfuncr   r   r   r   numpy.testingr   pandasrx   pytestr	   matplotlib.pyplotpyplotr   ImportErrorr   r_   r#   r$   r*   r&   nanr(   r,   r.   r4   r5   r8   r6   r7   r9   r:   rs   rt   ru   rv   r   rw   r   ry   r[   r1   r;   rG   rg   r   r   mark
matplotlibr   r   r   r   r   r   r   r   r   r   r  r  r  smoker  r  r  rR   r   r   <module>r)     s{   				                * ) ) ) ) )      
	####### 	 	 	D	  
 	e"#e"#	z	U=>
iIrv=>
%

E#$	e%&e%&	z	U=>
iIrv=>
%

E.!	
'//"'//(33
4
4W\\'9i00bk"oo, , ,, , ,	6 	6 	6= = =.5 5 5<7: 7: 7:t 5 5 5p' ' '(? ? ?2+- +- +-\  .7 7 7 J J J&	 	 	$ $ $,# # #,  &2 2 2"P P P$ 	G 	G 	GI I I. = = = = =s   - 55