Fitting Kaplan-Meierova odhadce

Survival Analysis in Python

Shae Wang

Senior Data Scientist

Co je Kaplan-Meierův odhadce?

Neparametrická statistika, která odhaduje funkci přežití dat time-to-event.

  • Také známá jako
    • odhadce součinového limitu
    • K-M odhadce
  • Neparametrická: sestavuje křivku přežití z naměřených dat bez předpokladu o rozdělení
Survival Analysis in Python

Matematická intuice

Definice:

  • $t_i$: čas události
  • $d_i$: počet událostí v čase $t_i$
  • $n_i$: počet jedinců, kteří přežili do času $t_i$

 

Funkce přežití $S(t)$ je odhadována jako: $$S(t)=\prod_{i:t_i\leq t}\bigg(1-\frac{d_i}{n_i}\bigg)$$

Survival Analysis in Python

Proč se nazývá odhadce součinového limitu?

Předpokládejme události ve 3 časech: 1, 2, 3

Míra přežití pro $t=2$: $$S(t=2)=\bigg(1-\frac{d_1}{n_1}\bigg)*\bigg(1-\frac{d_2}{n_2}\bigg)$$

Míra přežití pro $t=3$: $$S(t=3)=S(t=2)*\bigg(1-\frac{d_3}{n_3}\bigg)$$

Míra přežití v čase t je součinem pravděpodobností přežití v čase t a ve všech předchozích časech.

Survival Analysis in Python

Předpoklady, které je třeba mít na paměti

  • Jednoznačné události: sledovaná událost nastane v přesně určeném čase.
  • Srovnatelné pravděpodobnosti přežití: pravděpodobnost přežití jedince nezávisí na tom, kdy vstoupil do studie.
  • Cenzorování je neinformativní: cenzorovaná pozorování mají stejné vyhlídky přežití jako sledovaná pozorování.
Survival Analysis in Python

Kaplan-Meierův odhadce s lifelines

from lifelines import KaplanMeierFitter

KaplanMeierFitter: třída knihovny lifelines

kmf = KaplanMeierFitter()
kmf.fit(durations, event_observed)
Survival Analysis in Python

Příklad: problém s hypotékami

Název DataFrame: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
Survival Analysis in Python

Příklad: problém s hypotékami

Název DataFrame: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
from lifelines import KaplanMeierFitter
mortgage_kmf = KaplanMeierFitter()
mortgage_kmf.fit(duration=mortgage_df["duration"], 
        event_observed=mortgage_df["paid_off"])
<lifelines.KaplanMeierFitter:"KM_estimate", 
fitted with 100 total observations, 
18 right-censored observations>
Survival Analysis in Python

Použití Kaplan-Meierova odhadce

Jaká je střední délka nesplacené hypotéky?

print(mortgage_kmf.median_survival_time_)
4.0

Jaká je pravděpodobnost, že hypotéka zůstane nesplacená každý rok po zahájení?

print(mortgage_kmf.survival_function_)
          KM_estimate
timeline             
0.0          1.000000
1.0          0.983267
2.0          0.950933
3.0          0.892328
Survival Analysis in Python

Použití Kaplan-Meierova odhadce

Jaká je pravděpodobnost, že hypotéka nebude splacena do 34. roku po zahájení?

mortgage_kmf.predict(34)
0.037998
Survival Analysis in Python

Výhody a omezení

Výhody
  • Intuitivní interpretace pravděpodobností přežití.
  • Flexibilní použití pro jakákoli data time-to-event.
  • Obvykle první model k vyzkoušení na datech time-to-event.
Omezení
  • Křivka přežití není hladká.
  • Pokud je 50 % nebo více dat cenzorováno, .median_survival_time_ nelze vypočítat.
  • Není vhodný pro analýzu vlivu kovariátů na funkci přežití.
Survival Analysis in Python

Pojďme si procvičit!

Survival Analysis in Python

Preparing Video For Download...