Anpassa en Kaplan-Meier-skattare

Överlevnadsanalys i Python

Shae Wang

Senior Data Scientist

Vad är Kaplan-Meier-skattaren?

En icke-parametrisk statistik som skattar överlevnadsfunktionen för tid-till-händelse-data.

  • Kallas också
    • produktgräns-skattaren
    • K-M-skattaren
  • Icke-parametrisk: konstruerar en överlevnadskurva från insamlad data utan att anta någon underliggande fördelning
Överlevnadsanalys i Python

Den matematiska intuitionen

Definitioner:

  • $t_i$: en tidpunkt
  • $d_i$: antal händelser vid tid $t_i$
  • $n_i$: antal individer som är kända att ha överlevt till tid $t_i$

 

Överlevnadsfunktionen $S(t)$ skattas med: $$S(t)=\prod_{i:t_i\leq t}\bigg(1-\frac{d_i}{n_i}\bigg)$$

Överlevnadsanalys i Python

Varför kallas den produktgräns-skattaren?

Anta att vi har händelser vid 3 tidpunkter: 1, 2, 3

Överlevnadsgrad för $t=2$: $$S(t=2)=\bigg(1-\frac{d_1}{n_1}\bigg)*\bigg(1-\frac{d_2}{n_2}\bigg)$$

Överlevnadsgrad för $t=3$: $$S(t=3)=S(t=2)*\bigg(1-\frac{d_3}{n_3}\bigg)$$

Överlevnadsgraden vid tid t är lika med produkten av sannolikheten att överleva vid tid t och varje tidigare tidpunkt.

Överlevnadsanalys i Python

Antaganden att ha i åtanke

  • Entydiga händelser: den intressanta händelsen inträffar vid en tydligt angiven tidpunkt.
  • Jämförbara överlevnadssannolikheter: individers överlevnadssannolikheter beror inte på när de gick in i studien.
  • Censurering är icke-informativ: censurerade observationer har samma överlevnadsutsikter som observationer som fortsätter att följas.
Överlevnadsanalys i Python

Kaplan-Meier-skattaren med lifelines

from lifelines import KaplanMeierFitter

KaplanMeierFitter: en klass i biblioteket lifelines

kmf = KaplanMeierFitter()
kmf.fit(durations, event_observed)
Överlevnadsanalys i Python

Exempel: bolåneproblemet

DataFrame-namn: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
Överlevnadsanalys i Python

Exempel: bolåneproblemet

DataFrame-namn: 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>
Överlevnadsanalys i Python

Använda Kaplan-Meier-skattaren

Vad är mediantiden för ett utestående bolån?

print(mortgage_kmf.median_survival_time_)
4.0

Vilken är sannolikheten att ett bolån är utestående varje år efter att det tecknades?

print(mortgage_kmf.survival_function_)
          KM_estimate
timeline             
0.0          1.000000
1.0          0.983267
2.0          0.950933
3.0          0.892328
Överlevnadsanalys i Python

Använda Kaplan-Meier-skattaren

Vad är sannolikheten att ett bolån inte är avbetalt efter 34 år?

mortgage_kmf.predict(34)
0.037998
Överlevnadsanalys i Python

Fördelar och begränsningar

Fördelar
  • Intuitiv tolkning av överlevnadssannolikheter.
  • Flexibel och användbar för alla typer av tid-till-händelse-data.
  • Vanligtvis den första modellen att pröva på tid-till-händelse-data.
Begränsningar
  • Överlevnadskurvan är inte slät.
  • Om 50 % eller mer av datan är censurerad kan .median_survival_time_ inte beräknas.
  • Inte effektiv för att analysera kovariaters påverkan på överlevnadsfunktionen.
Överlevnadsanalys i Python

Nu kör vi en övning!

Överlevnadsanalys i Python

Preparing Video For Download...