L iUjddlZddlZddlmZmZddlmZddlm Z dZ GddZ Gdd Z y) N) assert_equalassert_allclose)stats) _survivalcdtfdtfg}tjt ||Dcgc] \}}||f c}}|}tj |d}|d}tj |d}|j}tj|dd}tj||z |z } tj|dddd \} } || d z } | | d z } | | fScc}}w) Ntimecensored)dtype)rr )orderrT) return_index) floatintnparrayzipsort logical_notsizearangecumprodunique)timesr r tddatadiedmnsf_indices ref_timesref_sfs e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/stats/tests/test_survival.py_kaplan_meier_referencer'se_z3/ 0E 88E8(<=1aV=U KD 7743 4D LE >>$z* +D A !QA QXN #B52;T:JAwwhl#I 1 F f >sC/ c eZdZedZdZdZdZdZdZ gdZ gdZ gd Z gd Z gd Zgd Zgd ZgdZgdZgdZgdZgdZgdZgdZgdZej4j7de e e fe eefeeefeeefeeefgdZej4j7dgddZdZdZdZ dZ!dZ"y )! TestSurvivalcr|j|}|jdd|jtj}|j tj ||}|j|j|jkD}tjj||}|||fS)Nrr) randomintegersastyperint32permutedrepeatrr CensoredDataright_censored)rngn_unique unique_timesrepeatsrr samples r&get_random_samplezTestSurvival.get_random_sample(szz(+ ,,q!X.55bhh? RYY|W=>::5:::.=##225(Cuh&&cd}tjt|5tjdggdddtjt|5tjddddd}tjt|5tjt j gdddd}tjt|5tjtjjdgdgdddd}tjgd }tjt|5|jjd dddtjt|5|jjd dddd }tjt|5|jjddddtjt|5|jjddgdddd}tjt|5|jj}dddd}tjt|5jjdddtjt|5j jdddy#1swYxYw#1swYxYw#1swYZxYw#1swY xYw#1swYxYw#1swYxYw#1swYXxYw#1swY$xYw#1swYxYw#1swYxYw#1swYyxYw)Nz,`sample` must be a one-dimensional sequence.matchrz`sample` must not contain nanz5Currently, only uncensored and right-censored data...T)r zmethod` must be one of...)rz ekki-ekkimethod 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...)pytestraises ValueErrorrecdfrnanNotImplementedErrorr3 left_censoredcdfconfidence_intervalr!warnsRuntimeWarninglowhigh)selfmessagerescis r&test_input_validationz"TestSurvival.test_input_validation3s@ ]]:W 5  JJu   ]]:W 5  JJqM 2 ]]:W 5 ! JJx  !J ]].g > O JJu))77tf7M N O.jj# ]]:W 5 < GG ' '{ ' ; < ]]:W 5 ; FF & &k & : ;G ]]:W 5 , GG ' ' + , ]]:W 5 3 FF & &Sz 2 3O \\. 8 /,,.B /C ]].g > ) FF & & ( ) ]].g > * GG ' ' ) * *C     ! ! O O  < < ; ; , , 3 3 / / ) ) * *sK7L%L7LL+L8MMMM+M77LLLL(+L58MMMM(+M47Nc^tjg}t|jjgt|jj gtjdg}t|jjdgt|jj dgy)Nr)rrIrrM quantiles probabilities)rSrUs r&test_edge_caseszTestSurvival.test_edge_casesYsrjjnSWW&&+SWW**B/jj!oSWW&&,SWW**QC0r;cgd}tj|}tjtj|}tj dddz }d|z }t |jj|t |jj|t |jj|t |jj|y)N)gQ@gRQ@g= ףp=@gGz@g@r) rrIrrrrrrMrYrZr!rSr9rUref_xref_cdfr%s r& test_uniquezTestSurvival.test_uniquebs/jj  &)*))Aq/A%WSWW&&.SWW**G4SVV%%u-SVV))62r;cgd}tj|}tjtj|}tj gd}d|z }t |jj|t |jj|t |jj|t |jj|y)N)rr?rr?r@r+)gUUUUUU?gUUUUUU?gUUUUUU?g?rr) rrIrrrrrrMrYrZr!r_s r&test_nonuniquezTestSurvival.test_nonuniquens#jj  &)*((23WSWW&&.SWW**G4SVV%%u-SVV))62r;ctjjd}|j|d\}}}t j |}|j j}|tj||ddzdz z}t|j j||j jt|j j||j jt|j j|ddz dt|j jtj tjgddgt|jj||jjt|jj||jjt|jj|ddz dt|jjtj tjgddgy)NlI)_r r)appendr?r)rr- default_rngr:rrIrMrYdiffrevaluaterZinfr!)rSr5r9r"rUxxrs r&test_evaluate_methodsz"TestSurvival.test_evaluate_methodszsii##$78--c26 1jj  GG   1R57+A- -SWW%%a(#''*?*?@SWW%%b)377+@+@ASWW%%ad1f-q1SWW%%w&781a&ASVV__Q')=)=>SVV__R(#&&*>*>?SVV__QqT!V,a0SVV__rvvgrvv%67!Q@r;) %+/8<>GMPQ) rrrrrrrrrr) rr??rzrzrzrDg?r)  r{ () rrrrrrrrrr) ?gK7?皙?rgHzG?gQ?HzG?rr) !)0rrorrrp) rrrrrrrrrr)rryrzrzrErErE)r@ r r~r?rrr|r r]r^ r)rrrrrrrrrrrrrrrrrrrr)ffffff?rgNbX9?5^I ?rrrrrrgRQ?oʡ?rrrMbX9?r)r@r^r{rr^r^r{r|rfr~r?rrrr|r^r{r)rrrrrrrrrrrrrrrrrr) gh|?5?g r?gv?MbX?rrgv?^I +?rrcasec:|\}}}tjj|tj|}tj |}t |jj|dt|jjtjtj|t|tj|}t|dtjtj|t |d|dy)NMbP?atolrr)rr3r4rrrIrr!rZrrYrrr')rSrrrrefr9rUs r&$test_right_censored_against_examplesz1TestSurvival.test_right_censored_against_exampless tS##225"..:NOjj ,,c=SVV%%rwwryy/?'@A&eR^^D-ABSVRWWRYYu%567A$/r;seed)l-j|Il#}|4IQl>5Gn?le5"ctjj|}|jdd}|j ||\}}}t j |}t||}t|jj|dt|jj|dt j|}tj|}t j |}t|d|jjt|d|j jdt|d|jjdy) Nrdrr) uncensored+=rtolr?)rr-rhr.r:rrIr'rr!rYrZr3r_ecdf_right_censoredrrM) rSrr5r6r9rr rUrs r&4test_right_censored_against_reference_implementationzATestSurvival.test_right_censored_against_reference_implementationsii##D)<<C("&"8"8h"Gxjj %eX6((#a&1,,c!f5##u5,,V4jjSVSVV--.A 5 5EBA 4 45Ar;c|j|j}}tjj |t j |}tj|}gd}|jj}|jj}|jj|jjz }t||dt|jjt j|jj|z ddt|jjt j|jj|zddt|jjt j|jj|z ddt|jjt j|jj|zddgd} gd} |jjd }t|jj| d t|jj| d y) N)~jt?rgHzG?#~j?rrrrrrg1Zd?rh|?rrrm?rrrrr)iU;?rgLƼ?SX?rrrrrrg#?v1)t4d4rr3r4rrrIr!rNrMrZrQrcliprR) rSrrr9rU ref_allowancesf_cicdf_ci allowanceref_lowref_highs r&test_right_censored_ciz#TestSurvival.test_right_censored_cisggtwwt##225"..:NOjj . **,,,.FF((599+B+BB  =t< // 4 4y @!QG I 00 4 4y @!QG I 00 5 5 A1aH J 11 5 5 A1aH JEF**)*< //tD 00(Fr;c>|j|j}}tjj |t j |}tj|}t jgd}t jgd}|jjd}|jjd}t|jj|dt|jj|dt|jjd|z dt|jjd|z dgd} gd } |jjdd }t|jj| t|jj| gd } gd } |jjd }t|jj| t|jj| y)N) g4 S?gn;?g·g 2?oDk?rrgrSr??T1?rr) g!S?gn2d?g|y?U?rrgmēL?^?rrrrAgh㈵>rr) ge?gC?gW0?J|?rrg cav?# ?rr) gx ?g]^L"?gD%V d?Ԓ?rrg[<\+?7ԧx?rrr)rBconfidence_level) g7Aca?g|X?g1?/?rrgRO?rr) ?rg?8ْ`?rrgEy?,˪~O?rr)r)t5d5rr3r4rrrIrr!rNrMrrQrZrR) rSrrr9rUlowerupperrrrQrRs r& test_right_censored_ci_example_5z-TestSurvival.test_right_censored_ci_example_5sggtwwt##225"..:NOjj LMLM**)*<,,I,> //TB 00%dC 00!E'E 111U7F$$**)vv}nmQOvvsC!24ErvvN OOCGG--q 1 \\. 8 .++-B . ,,Q/3SW=--a04c!"g>2*,?"$79L"B0BBB,>"BFF,,,c2--t4\\. 8 >++9+=B >vvrvv24G"$79L"$7A 24F"$68J"$6@ ,,c2--t4e / / . .4 > >s$4O 6O:O& OO#&O/ctjjd}|jddd}tj|}d|tj |<t j|}t jt jj||}t|jj|jjt|jj|jjt|jjdd|jjddt|jj dd|jj ddd y) Nlm"%<rrir,Tr rr)rr-rhr. zeros_likeargmaxrrIr3r4rr!rY_n_dr_sf)rSr5r9r rUrs r&&test_right_censored_against_uncensoredz3TestSurvival.test_right_censored_against_uncensoredksii##$78b#D1==(&*6"#jj jj++::68LMSVV%%svv'7'78SVVYY *SVVYYs^SVVYYs^4 3BCRuEr;ctjjd}|jdd}|j ||\}}}t j |} ddlm}|jjy#ttf$rPd}tjt|5|jjdddYy#1swYYyxYwwxYw)Nlu!u\xDrrrz2matplotlib must be installed to use method `plot`.r=)rr-rhr.r:rrImatplotlib.pyplotpyplotr!plotModuleNotFoundError ImportErrorrFrG)rSr5r6r9r"rUpltrTs r& test_plot_ivzTestSurvival.test_plot_ivwsii##$78<<C(--c8< 1jj   + FFKKM#[1 KG2'B      s* A??,C+CCC CCN)#__name__ __module__ __qualname__ staticmethodr:rWr[rbrdrnrrr1t2d2r2t3d3r3rrr4rrr5rFmark parametrizerrrrrrrr;r&r)r)&s(''$*L1 3 3A& 2B 'B tj|d|d}tj|d|d}tgdD]S\}}tj|||}t |j dz|dt |j ||dUy) Nrr)rright)z two-sidedlessgreater)rly alternativer?g|=r)rr3 enumeratelogrankr statisticpvalue)rSrlrrr rrrUs r& test_log_rankzTestLogRank.test_log_ranksj   !A$ad ;   !A$ad ;'(HI ?NA{--!qkBC CMM1,ie D CJJq  > ?r;cbtjddg}d}tjt|5tj |ddggdddd}tjt|5tj ddgg|dddy#1swYJxYw#1swYyxYw)Nrr?z `y` must ber=)rlrz `x` must be)rr3rFrGrHr)rSr9msgs r& test_raiseszTestLogRank.test_raisess##QF+ ]]:S 1 0 MMF1vh / 0 ]]:S 1 0 MMaVH / 0 0  0 0 0 0sB5B%B"%B.N)rrrrFrrr!r$rr;r&rrs [[!4'89:H .//0D  I(*FH ! 13h ?i3h ? 0r;r) rFnumpyr numpy.testingrrscipyr scipy.statsrr'r)rrr;r&r)s2 7!<]]@ L0L0r;