Memvisualisasikan model Kaplan-Meier Anda

Analisis Survival dengan Python

Shae Wang

Senior Data Scientist

Cara membangun kurva kelangsungan hidup Kaplan-Meier

Data mainan dengan $n=5$:

duration observed
2 1
5 0
3 1
5 1
2 0

Langkah 1: Urutkan data menaik. Jika sama, data tersensor ditempatkan setelah yang tidak tersensor.

Langkah 2: Untuk tiap $t_i$, hitung $d_i$, $n_i$, dan $\big(1-\frac{d_i}{n_i}\big)$

Langkah 3: Untuk tiap $t_i$, kalikan $\big(1-\frac{d_i}{n_i}\big)$ dengan $\big(1-\frac{d_{i-1}}{n_{i-1}}\big)$, $\big(1-\frac{d_{i-2}}{n_{i-2}}\big)$, ... , $\big(1-\frac{d_0}{n_0}\big)$

Analisis Survival dengan Python

Cara membangun kurva kelangsungan hidup Kaplan-Meier

Langkah 1: Urutkan durasi menaik. Jika sama, data tersensor ditempatkan setelah yang tidak tersensor.

duration
2
5+
3
5
2+

Gunakan tanda "+" untuk menandai data tersensor: 2, 5+, 3, 5, 2+

Analisis Survival dengan Python

Cara membangun kurva kelangsungan hidup Kaplan-Meier

Langkah 1: Urutkan durasi menaik. Jika sama, data tersensor ditempatkan setelah yang tidak tersensor.

$t_i$
2, 2+
3
5, 5+
Analisis Survival dengan Python

Cara membangun kurva kelangsungan hidup Kaplan-Meier

Langkah 2: Untuk tiap $t_i$, hitung $d_i$, $n_i$, dan $\big(1-\frac{d_i}{n_i}\big)$

$t_i$
2, 2+
3
5, 5+
Analisis Survival dengan Python

Cara membangun kurva kelangsungan hidup Kaplan-Meier

Langkah 2: Untuk tiap $t_i$, hitung $d_i$, $n_i$, dan $\big(1-\frac{d_i}{n_i}\big)$

$t_i$ $d_i$
2, 2+ 1
3 1
5, 5+ 1
Analisis Survival dengan Python

Cara membangun kurva kelangsungan hidup Kaplan-Meier

Langkah 2: Untuk tiap $t_i$, hitung $d_i$, $n_i$, dan $\big(1-\frac{d_i}{n_i}\big)$

$t_i$ $d_i$ $n_i$
2, 2+ 1 5
3 1 3
5, 5+ 1 2
Analisis Survival dengan Python

Cara membangun kurva kelangsungan hidup Kaplan-Meier

Langkah 2: Untuk tiap $t_i$, hitung $d_i$, $n_i$, dan $\big(1-\frac{d_i}{n_i}\big)$

$t_i$ $d_i$ $n_i$ $\big(1-\frac{d_i}{n_i}\big)$
2, 2+ 1 5 $4/5$
3 1 3 $2/3$
5, 5+ 1 2 $1/2$
Analisis Survival dengan Python

Cara membangun kurva kelangsungan hidup Kaplan-Meier

Langkah 3: Untuk tiap $t_i$, kalikan $\big(1-\frac{d_i}{n_i}\big)$ dengan $\big(1-\frac{d_{i-1}}{n_{i-1}}\big)$, $\big(1-\frac{d_{i-2}}{n_{i-2}}\big)$, ... , $\big(1-\frac{d_0}{n_0}\big)$

$t_i$ $d_i$ $n_i$ $\big(1-\frac{d_i}{n_i}\big)$ $S(t_i)$
2, 2+ 1 5 4/5 4/5 = 0,8
3 1 3 2/3 4/5 $\cdot$ 2/3 = 0,53
5, 5+ 1 2 1/2 4/5 $\cdot$ 2/3 $\cdot$ 1/2 = 0,27
Analisis Survival dengan Python

Cara membangun kurva kelangsungan hidup Kaplan-Meier

$t_i$ $d_i$ $n_i$ $\big(1-\frac{d_i}{n_i}\big)$ $S(t_i)$
2, 2+ 1 5 $4/5$ 0,8
3 1 3 $2/3$ 0,53
5, 5+ 1 2 $1/2$ 0,27

Kurva Kaplan-Meier dari tabel.

Analisis Survival dengan Python

Menafsirkan kurva kelangsungan hidup

Kurva Kaplan-Meier dari tabel.

  • Probabilitas bertahan di tiap waktu antara 0 dan 5.

  • Salah kaprah umum: Jika kurva turun ke 0, tidak ada subjek yang bertahan.

  • Kurva turun ke 0 jika observasi terakhir tidak tersensor (durasi kejadian sebenarnya diketahui).
Analisis Survival dengan Python

Memplot kurva kelangsungan hidup Kaplan-Meier

from lifelines import KaplanMeierFitter
import matplotlib.pyplot as plt

kmf = KaplanMeierFitter()
kmf.fit(durations, event_observed)
kmf.survival_function_.plot()
plt.show()
Analisis Survival dengan Python

Contoh masalah hipotek

Nama DataFrame: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
from lifelines import KaplanMeierFitter
from matplotlib import pyplot as plt
mortgage_kmf = KaplanMeierFitter()
mortgage_kmf.fit(duration=mortgage_df["duration"], 
        event_observed=mortgage_df["paid_off"])
mortgage_kmf.survival_function_.plot()
Analisis Survival dengan Python

Contoh masalah hipotek

plt.show()

Visualisasi kurva kelangsungan hidup untuk masalah hipotek.

Analisis Survival dengan Python

Interval kepercayaan kurva kelangsungan hidup

mortgage_kmf.plot_survival_function()
plt.show()

Visualisasi kurva kelangsungan hidup masalah hipotek dengan interval kepercayaan.

Analisis Survival dengan Python

Mengapa interval kepercayaan berguna?

  • Cara mengukur ketidakpastian pada tiap estimasi titik probabilitas bertahan
  • Interval kepercayaan lebar berarti lebih tidak pasti, sering karena ukuran sampel kecil
  • Interval kepercayaan sempit berarti lebih pasti, sering karena ukuran sampel besar
Analisis Survival dengan Python

Cara memplot kurva kelangsungan hidup Kaplan-Meier

Plot estimasi titik fungsi kelangsungan hidup sebagai garis kontinu.

kmf.survival_function_.plot()
plt.show()

Plot fungsi kelangsungan hidup sebagai garis kontinu.

Plot fungsi kelangsungan hidup sebagai garis bertingkat tanpa interval kepercayaan.

kmf.plot(ci_show=False)
plt.show()

Plot fungsi kelangsungan hidup sebagai garis bertingkat.

Analisis Survival dengan Python

Cara memplot kurva kelangsungan hidup Kaplan-Meier

Plot fungsi kelangsungan hidup sebagai garis bertingkat dengan interval kepercayaan.

kmf.plot()
plt.show()

Plot fungsi kelangsungan hidup sebagai garis bertingkat dengan interval kepercayaan.

Cara lain...

kmf.plot_survival_function()
plt.show()
Analisis Survival dengan Python

Ayo berlatih!

Analisis Survival dengan Python

Preparing Video For Download...