Dopasowanie estymatora Kaplana-Meiera

Analiza przeżycia w Pythonie

Shae Wang

Senior Data Scientist

Czym jest estymator Kaplana-Meiera?

Nieparametryczna statystyka szacująca funkcję przeżycia danych czas-do-zdarzenia.

  • Znany również jako
    • estymator granicy iloczynu
    • estymator K-M
  • Nieparametryczny: buduje krzywą przeżycia na podstawie danych, bez zakładania rozkładu
Analiza przeżycia w Pythonie

Intuicja matematyczna

Definicje:

  • $t_i$: czas trwania
  • $d_i$: liczba zdarzeń w czasie $t_i$
  • $n_i$: liczba osób, które przeżyły do czasu $t_i$

 

Funkcja przeżycia $S(t)$ jest szacowana wzorem: $$S(t)=\prod_{i:t_i\leq t}\bigg(1-\frac{d_i}{n_i}\bigg)$$

Analiza przeżycia w Pythonie

Dlaczego nazywa się go estymatorem granicy iloczynu?

Załóżmy, że zdarzenia wystąpiły w 3 momentach: 1, 2, 3

Współczynnik przeżycia dla $t=2$: $$S(t=2)=\bigg(1-\frac{d_1}{n_1}\bigg)*\bigg(1-\frac{d_2}{n_2}\bigg)$$

Współczynnik przeżycia dla $t=3$: $$S(t=3)=S(t=2)*\bigg(1-\frac{d_3}{n_3}\bigg)$$

Współczynnik przeżycia w czasie t jest iloczynem szans przeżycia w czasie t i wszystkich wcześniejszych momentach.

Analiza przeżycia w Pythonie

Założenia do uwzględnienia

  • Jednoznaczne zdarzenia: zdarzenie następuje w wyraźnie określonym czasie.
  • Porównywalne prawdopodobieństwa przeżycia: nie zależą od momentu wejścia do badania.
  • Cenzurowanie nieinformatywne: obserwacje ocenzurowane mają takie same rokowania jak obserwacje nadal śledzone.
Analiza przeżycia w Pythonie

Estymator Kaplana-Meiera w bibliotece lifelines

from lifelines import KaplanMeierFitter

KaplanMeierFitter: klasa biblioteki lifelines

kmf = KaplanMeierFitter()
kmf.fit(durations, event_observed)
Analiza przeżycia w Pythonie

Przykład: problem hipoteczny

Nazwa DataFrame: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
Analiza przeżycia w Pythonie

Przykład: problem hipoteczny

Nazwa 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>
Analiza przeżycia w Pythonie

Zastosowanie estymatora Kaplana-Meiera

Jaka jest mediana czasu trwania aktywnej hipoteki?

print(mortgage_kmf.median_survival_time_)
4.0

Jakie jest prawdopodobieństwo, że hipoteka pozostaje aktywna w kolejnych latach?

print(mortgage_kmf.survival_function_)
          KM_estimate
timeline             
0.0          1.000000
1.0          0.983267
2.0          0.950933
3.0          0.892328
Analiza przeżycia w Pythonie

Zastosowanie estymatora Kaplana-Meiera

Jakie jest prawdopodobieństwo, że hipoteka nie została spłacona do 34. roku od zawarcia?

mortgage_kmf.predict(34)
0.037998
Analiza przeżycia w Pythonie

Zalety i ograniczenia

Zalety
  • Intuicyjna interpretacja prawdopodobieństw przeżycia.
  • Elastyczny – można stosować do dowolnych danych czas-do-zdarzenia.
  • Zwykle pierwszy model stosowany do takich danych.
Ograniczenia
  • Krzywa przeżycia nie jest gładka.
  • Jeśli co najmniej 50% danych jest ocenzurowanych, .median_survival_time_ nie może być obliczone.
  • Nieskuteczny do analizy wpływu współzmiennych na funkcję przeżycia.
Analiza przeżycia w Pythonie

Ćwiczenia!

Analiza przeżycia w Pythonie

Preparing Video For Download...