
    (phU                     j    S SK r S SKrS SKJrJr  S SKJr  S SKJ	r	  S r
 " S S5      r " S S	5      rg)
    N)assert_equalassert_allclose)stats)	_survivalc                    S[         4S[        4/n[        R                  " [	        X5       VVs/ s H  u  p4X44PM
     snnUS9n[        R
                  " USS9nUS   n [        R                  " US   5      nU R                  n[        R                  " USS5      n[        R                  " X-
  U-  5      n	[        R                  " U S S S2   SS	9u  pX* S
-
     nX* S
-
     nX4$ s  snnf )Ntimecensored)dtype)r   r	   )orderr   T)return_index   )floatintnparrayzipsortlogical_notsizearangecumprodunique)timesr	   r
   tddatadiedmnsf_indices	ref_timesref_sfs                 R/var/www/html/venv/lib/python3.13/site-packages/scipy/stats/tests/test_survival.py_kaplan_meier_referencer'      s     e_z3/0E88E(<=(<aV(<=UKD77434DLE>>$z*+D

A
		!QA	QXN	#B 52;T:JAhl#I1F >s   C'
c            
          \ rS rSr\S 5       rS rS rS rS r	S r
/ SQr/ S	Qr/ S
Qr/ SQr/ SQr/ SQr/ SQr/ SQr/ SQr/ SQr/ SQr/ SQr/ SQr/ SQr/ SQr\R6                  R9                  S\\\4\\\4\\\4\\\4\\\4/5      S 5       r\R6                  R9                  S/ SQ5      S 5       rS rS r S r!S r"S  r#S!r$g")#TestSurvival&   c                 h   U R                  U5      nU R                  SSU5      R                  [        R                  5      nU R                  [        R                  " X#5      5      nU R                  UR                  S9U R                  5       :  n[        R                  R                  XE5      nXdU4$ )Nr      r   )randomintegersastyper   int32permutedrepeatr   r   CensoredDataright_censored)rngn_uniqueunique_timesrepeatsr   r	   samples          r&   get_random_sampleTestSurvival.get_random_sample(   s     zz(+,,q!X.55bhh?RYY|=>::5:::.=##225Ch&&    c                 B   Sn[         R                  " [        US9   [        R                  " S//5        S S S 5        [         R                  " [        US9   [        R                  " S5        S S S 5        Sn[         R                  " [        US9   [        R                  " [
        R                  /5        S S S 5        Sn[         R                  " [        US9   [        R                  " [        R                  R                  S/S/S95        S S S 5        Sn[        R                  " / S	Q5      n[         R                  " [        US9   UR                  R                  S
S9  S S S 5        [         R                  " [        US9   UR                  R                  SS9  S S S 5        Sn[         R                  " [        US9   UR                  R                  S5        S S S 5        [         R                  " [        US9   UR                  R                  SS/5        S S S 5        Sn[         R                  " [        US9   UR                  R                  5       nS S S 5        Sn[         R                  " [        US9   WR                  R                  5         S S S 5        [         R                  " [        US9   WR                   R                  5         S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNR= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNs= f! , (       d  f       GNF= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nz,`sample` must be a one-dimensional sequence.matchr   z`sample` must not contain nanz5Currently, only uncensored and right-censored data...T)r	   zmethod` must be one of...)r         z	ekki-ekkimethod	shrubberyz2confidence_level` must be a scalar between 0 and 1r         ?333333?z:The confidence interval is undefined at some observations.z.Confidence interval bounds do not implement...)pytestraises
ValueErrorr   ecdfr   nanNotImplementedErrorr4   left_censoredcdfconfidence_intervalr!   warnsRuntimeWarninglowhigh)selfmessagerescis       r&   test_input_validation"TestSurvival.test_input_validation3   sM   @]]:W5JJu 6]]:W5JJqM 6 2]]:W5JJx  6 J]].g>JJu))77tf7MN ? .jj#]]:W5GG''{'; 6]]:W5FF&&k&: 6 G]]:W5GG''+ 6]]:W5FF&&Sz2 6 O\\.8,,.B 9 C]].g>FF&&( ?]].g>GG'') ?>C 6555 65 ?>
 6555 6555 98 ?>>>s   KK/&L5L	L%L7M	>M?M-=M?9N
K,/
K>
L
L"%
L47
M	
M
M*-
M<?
N
Nc                 b   [         R                  " / 5      n[        UR                  R                  / 5        [        UR                  R
                  / 5        [         R                  " S/5      n[        UR                  R                  S/5        [        UR                  R
                  S/5        g )Nr   )r   rK   r   rO   	quantilesprobabilities)rU   rW   s     r&   test_edge_casesTestSurvival.test_edge_casesY   sr    jjnSWW&&+SWW**B/jj!oSWW&&,SWW**QC0r=   c                    / SQn[         R                  " U5      n[        R                  " [        R                  " U5      5      n[        R
                  " SS5      S-  nSU-
  n[        UR                  R                  U5        [        UR                  R                  U5        [        UR                  R                  U5        [        UR                  R                  U5        g )N)gQ@gRQ@g=
ףp=@gGz@g@r         )r   rK   r   r   r   r   r   rO   r\   r]   r!   rU   r:   rW   ref_xref_cdfr%   s         r&   test_uniqueTestSurvival.test_uniqueb   s    /jj 		&)*))Aq/A%WSWW&&.SWW**G4SVV%%u-SVV))62r=   c                    / SQn[         R                  " U5      n[        R                  " [        R                  " U5      5      n[        R
                  " / SQ5      nSU-
  n[        UR                  R                  U5        [        UR                  R                  U5        [        UR                  R                  U5        [        UR                  R                  U5        g )N)r   rA   r   rA   rB   r,   )gUUUUUU?gUUUUUU?gUUUUUU?g?r   r   )r   rK   r   r   r   r   r   rO   r\   r]   r!   rc   s         r&   test_nonuniqueTestSurvival.test_nonuniquen   s    #jj 		&)*((23WSWW&&.SWW**G4SVV%%u-SVV))62r=   c                    [         R                  R                  S5      nU R                  US5      u  n  n[        R
                  " U5      nUR                  R                  nU[         R                  " XUS   S-   S9S-  -   n[        UR                  R                  U5      UR                  R                  5        [        UR                  R                  U5      UR                  R                  5        [        UR                  R                  US   S-
  5      S5        [        UR                  R                  [         R                  * [         R                  /5      SS/5        [        UR                  R                  U5      UR                  R                  5        [        UR                  R                  U5      UR                  R                  5        [        UR                  R                  US   S-
  5      S5        [        UR                  R                  [         R                  * [         R                  /5      SS/5        g )Nl   I)_    r   r   )appendrA   r   )r   r.   default_rngr;   r   rK   rO   r\   diffr   evaluater]   infr!   )rU   r6   r:   r"   rW   xxrs          r&   test_evaluate_methods"TestSurvival.test_evaluate_methodsz   s   ii##$78--c261jj GGR57+A--SWW%%a(#''*?*?@SWW%%b)377+@+@ASWW%%ad1f-q1SWW%%w&781a&ASVV__Q')=)=>SVV__R(#&&*>*>?SVV__QqT!V,a0SVV__rvvgrvv%67!Q@r=   )
%   +   /   8   <   >   G   M   P   Q   )
r   r   r   r   r   r   r   r   r   r   )
r   r         ?      ?r   r   r   rF   g      ?r   )
                  r          (   )
r   r   r   r   r   r   r   r   r   r   )	?gK7?皙?r   gHzG?gQ?HzG?r   r   )
!      )   0   r      rv   r   r   rw   )
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   rG   rG   rG   )   rB         r      r   rA         r   r   r   r   
      ra   rb   	   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )ffffff?r   gNbX9?5^I?r   r   r   r   r   r   gRQ?oʡ?r   r   r   MbX9?r   )rB   rb   r   r   rb   rb   r   r   rl   r   rA   r   r   r   r   rb   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )
gh|?5?g r?gv?MbX?r   r   gv?^I+?r   r   casec                 :   Uu  p#n[         R                  R                  U[        R                  " U5      5      n[         R
                  " U5      n[        UR                  R                  USS9  [        UR                  R                  [        R                  " [        R                  " U5      5      5        [        U[        R                  " U5      5      n[        US   [        R                  " [        R                  " U5      5      5        [        US   USS9  g )NMbP?atolr   r   )r   r4   r5   r   r   rK   r   r!   r]   r   r\   r   r   r'   )rU   r   r   r   refr:   rW   s          r&   $test_right_censored_against_examples1TestSurvival.test_right_censored_against_examples   s      S##225"..:NOjj ,,c=SVV%%rwwryy/?'@A &eR^^D-ABSVRWWRYYu%567A$/r=   seed)l   -j|Il   #}|4IQl   >5Gn?l   e5"c                    [         R                  R                  U5      nUR                  SS5      nU R	                  X#5      u  pEn[
        R                  " U5      n[        XV5      n[        UR                  R                  US   5        [        UR                  R                  US   5        [
        R                  " US9n[        R                  " U5      n[
        R                  " U5      n[        US   UR                  R                  5        [        US   UR                   R                  SS9  [        US   UR                  R                  SS9  g )	Nr   d   r   r   )
uncensored+=rtolrA   )r   r.   rn   r/   r;   r   rK   r'   r   r!   r\   r]   r4   r   _ecdf_right_censoredr   rO   )	rU   r   r6   r7   r:   r   r	   rW   r   s	            r&   4test_right_censored_against_reference_implementationATestSurvival.test_right_censored_against_reference_implementation   s    ii##D)<<C("&"8"8"Gxjj %e6((#a&1,,c!f5 ##u5,,V4jjSVSVV--.A 5 5EBA 4 45Ar=   c                    U R                   U R                  p![        R                  R	                  U[
        R                  " U5      5      n[        R                  " U5      n/ SQnUR                  R                  5       nUR                  R                  5       nUR                  R                  UR                  R                  -
  n[        XSS9  [        UR                  R                  [
        R                  " UR                  R                  U-
  SS5      5        [        UR                  R                  [
        R                  " UR                  R                  U-   SS5      5        [        UR                  R                  [
        R                  " UR                  R                  U-
  SS5      5        [        UR                  R                  [
        R                  " UR                  R                  U-   SS5      5        / SQn	/ SQn
UR                  R                  SS	9n[        UR                  R                  U	S
S9  [        UR                  R                  U
S
S9  g )N)~jt?r   gHzG?#~j?r   r   r   r   r   r   g1Zd?rh|?r   r   r   m?r   r   r   r   r   )iU;?r   gLƼ?SX?r   r   r   r   r   r   g#?v1<?r   r   r   </O?r   ),?r   gXC%?d=	lN?r   r   r   r   r   r   gG˵h?yjh?r   r   r   @J?r   log-logrC   gư>)t4d4r   r4   r5   r   r   rK   r!   rP   rO   r]   rS   r   cliprT   )rU   r   r   r:   rW   ref_allowancesf_cicdf_ci	allowanceref_lowref_highs              r&   test_right_censored_ci#TestSurvival.test_right_censored_ci   s   ggtwwt##225"..:NOjj . **,,,.FF((599+B+BB		t<		// 4 4y @!QG	I

00 4 4y @!QG	I

00 5 5	 A1aH	J11 5 5	 A1aH	JEF **)*<		//tD

00(Fr=   c                    U R                   U R                  p![        R                  R	                  U[
        R                  " U5      5      n[        R                  " U5      n[
        R                  " / SQ5      n[
        R                  " / SQ5      nUR                  R                  SS9nUR                  R                  SS9n[        UR                  R                  USS9  [        UR                  R                  USS9  [        UR                  R                  SU-
  SS9  [        UR                  R                  SU-
  SS9  / SQn	/ S	Qn
UR                  R                  SS
S9n[        UR                  R                  U	5        [        UR                  R                  U
5        / SQn	/ SQn
UR                  R                  S
S9n[        UR                  R                  U	5        [        UR                  R                  U
5        g )N)
g4S?gn;?g·g	2?oDk?r   r   grSr??T1?r   r   )
g!S?gn2d?g|y?U?r   r   gmēL?^?r   r   r   rC   gh㈵>r   r   )
ge?gC?gW0?J|?r   r   g cav?#	?r   r   )
gx ?g]^L"?gD%V
d?Ԓ?r   r   g[<\+?7ԧx?r   r   r   )rD   confidence_level)
g7Aca?g|X?g1?/?r   r   gRＯ?        r   r   )
      ?r   g?8ْ`?r   r   gEy?,˪~O?r   r   )r   )t5d5r   r4   r5   r   r   rK   r   r!   rP   rO   r   rS   r]   rT   )rU   r   r   r:   rW   lowerupperr   r   rS   rT   s              r&    test_right_censored_ci_example_5-TestSurvival.test_right_censored_ci_example_5   s   ggtwwt##225"..:NOjj  L M L M **)*<,,I,>		//TB

00%dC

00!E'E111U7F$$ **)<? + A		//5

00$7/L **C*@		//5

00$7r=   c           
         U R                   U R                  p![        R                  R	                  U[
        R                  " U5      5      n[        R                  " U5      n/ SQn[
        R                  SSSS[
        R                  /n[
        R                  SSSS[
        R                  /n[
        R                  " UR                  R                  U5      nS	n	[        R                  " [        U	S
9   UR                  R                  5       n
S S S 5        [!        W
R"                  R$                  U   SS  USS  5        [!        U
R&                  R$                  U   SS  USS  5        [
        R                  SSSS[
        R                  /n[
        R                  SSSS[
        R                  /n[
        R                  " UR                  R                  U5      n[        R                  " [        U	S
9   UR(                  R                  5       n
S S S 5        [!        U
R"                  R$                  U   SS  USS  5        [!        U
R&                  R$                  U   SS  USS  5        SSSSSSSSS[
        R                  /
nSSSSSSSSS[
        R                  /
n[!        U
R"                  R$                  U5        [!        U
R&                  R$                  U5        [        R                  " [        U	S
9   UR(                  R                  SS9n
S S S 5        [
        R                  [
        R                  SSSSSSS[
        R                  /
n[
        R                  [
        R                  SSSSSSS [
        R                  /
n[!        U
R"                  R$                  U5        [!        U
R&                  R$                  U5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f)!N)rv   rx   ry   r}   r~   r   r   g!E?gܙ{k?guOª?gYe?gaEP?r   z9The confidence interval is undefined at some observationsr?   r   g|E؞?gU<?gsC?gEP?g3&J2?ggE؞?gG<?g!E?r   gEP?g3&J2?r   rC   gk?gutz%?g
?gKuπ?g/8g?g(yD?go(q?g9'?)t1d1r   r4   r5   r   r   rK   rL   searchsortedrO   r\   rH   rQ   rR   rP   r   rS   r]   rT   r!   )rU   r   r   r:   rW   rr   flofupirV   rX   rS   rT   s                r&   test_right_censored_ci_nans(TestSurvival.test_right_censored_ci_nans%  s   ggtwwt##225"..:NOjj  %vvq!.0A266Jvv}lL#rvvNOOCGG--q1M\\.8,,.B 9 	,,Q/3SW=--a04c!"g> vv}nmQOvvsC!24ErvvNOOCGG--q1\\.8++-B 9 	,,Q/3SW=--a04c!"g> 2*,?"$79L"B0 BBB,>"BFF,,,c2--t4 \\.8++9+=B 9vvrvv24G"$79L"$7A  24F"$68J"$6@ 	,,c2--t4e 98 984 98s$   4O5O7O*
O
O'*
O8c                 
   [         R                  R                  S5      nUR                  SSSS9n[         R                  " U5      nSU[         R
                  " U5      '   [        R                  " U5      n[        R                  " [        R                  R                  X#5      5      n[        UR                  R                  UR                  R                  5        [        UR                  R                  UR                  R                  5        [        UR                  R                  S S UR                  R                  S S 5        [        UR                  R                   S S UR                  R                   S S SS	9  g )
Nl   m"%< r   r   i  r-   Tr   r   r   )r   r.   rn   r/   
zeros_likeargmaxr   rK   r4   r5   r   r!   r\   _n_dr   _sf)rU   r6   r:   r	   rW   r   s         r&   &test_right_censored_against_uncensored3TestSurvival.test_right_censored_against_uncensoredk  s    ii##$78b#D1==(&*6"#jj jj++::6LMSVV%%svv'7'78SVVYY		*SVVYYs^SVVYYs^4

3BCRuEr=   c                    [         R                  R                  S5      nUR                  SS5      nU R	                  X5      u  n  n[
        R                  " U5      n SS KJn  UR                  R                  5         g ! [        [        4 aS    Sn[        R                  " [        US9   UR                  R                  5         S S S 5         g ! , (       d  f        g = ff = f)Nl   u!u\xD r   r   r   z2matplotlib must be installed to use method `plot`.r?   )r   r.   rn   r/   r;   r   rK   matplotlib.pyplotpyplotr!   plotModuleNotFoundErrorImportErrorrH   rI   )rU   r6   r7   r:   r"   rW   pltrV   s           r&   test_plot_ivTestSurvival.test_plot_ivw  s    ii##$78<<C(--c<1jj 	+FFKKM#[1 	KG2'B CBBB	s*    A? ?+C"*CC"
C	C"C" N)%__name__
__module____qualname____firstlineno__staticmethodr;   rY   r^   rf   ri   rt   r   r   r1t2d2r2t3d3r3r   r   r4r   r   r5rH   markparametrizer   r   r   r   r   r   r   __static_attributes__r   r=   r&   r)   r)   &   s(   ' '$*L1
3
3A& 
2B	'B	<B 
0B	'B	BB	1B	'B	.B
.B	EB
AB 
HB	?B	OB[[Vr2rlRRL2r2,')2rlRRL&B C0C0 [[V &N OBOB&(GT08dD5L
Fr=   r)   c            
           \ rS rSr\R
                  R                  S/ SQ/ SQ// SQ/ SQ/S/ SQ4/ S	Q/ S
Q// SQ/ SQ/S/ SQ4/ SQ/ SQ// SQ/ SQ/S/ SQ4/5      S 5       rS rSr	g)TestLogRanki  zx, y, statistic, pvalue)r   r   r   r   r   r   )r   r   r   r   )r   r   r   )r   r   r   rv   r   r   rw   gK@)g܇~?g%?g ~q?)r   ra   rb   r,   )r   r   r   r   )   r      )r   rl   r   r   rb   g8v\?)g?ghG:?g]?)ra   r   r      rv   r*   1   2   ?   O   V   b         )   rx   r~   R   r     )r   r   r   r   r   rl   r  r   r   r   r   r   r   r   r  r   #   rv   r   r   .   r   L   r   r  [   p      )"   r   F   g.@)gJVQy?g8j^Qi?g%?c                 $   [         R                  " US   US   S9n[         R                  " US   US   S9n[        / SQ5       HI  u  pV[         R                  " XUS9n[	        UR
                  S-  USS9  [	        UR                  XE   SS9  MK     g )	Nr   r   )r   right)z	two-sidedlessgreater)rr   yalternativerA   g|=r   )r   r4   	enumeratelogrankr   	statisticpvalue)rU   rr   r*  r.  r/  r   r+  rW   s           r&   test_log_rankTestLogRank.test_log_rank  s    j !A$ad;!A$ad;'(HINA--!kBC
 CMM1,ieDCJJ	> Jr=   c                 h   [         R                  " SS/5      nSn[        R                  " [        US9   [         R
                  " USS//S9  S S S 5        Sn[        R                  " [        US9   [         R
                  " SS//US9  S S S 5        g ! , (       d  f       NK= f! , (       d  f       g = f)Nr   rA   z`y` must ber?   )rr   r*  z`x` must be)r   r4   rH   rI   rJ   r-  )rU   r:   msgs      r&   test_raisesTestLogRank.test_raises  s    ##QF+]]:S1MMF1vh/ 2 ]]:S1MMaVH/ 21	 21 21s   B0B#
B #
B1r   N)
r   r   r   r   rH   r  r  r0  r4  r  r   r=   r&   r  r    s    [[!4 '89:H
 .//0D
 I(*F H

!	13h?i3h?	0r=   r  )rH   numpyr   numpy.testingr   r   scipyr   scipy.statsr   r'   r)   r  r   r=   r&   <module>r:     s2      7  !<] ]@L0 L0r=   