Ước lượng Kaplan–Meier

Phân tích sống sót bằng Python

Shae Wang

Senior Data Scientist

Ước lượng Kaplan–Meier là gì?

Một thống kê phi tham số dùng để ước tính hàm sống của dữ liệu thời gian đến sự kiện.

  • Còn gọi là
    • ước lượng giới hạn tích
    • ước lượng K–M
  • Phi tham số: dựng đường cong sống từ dữ liệu thu thập, không giả định phân phối nền.
Phân tích sống sót bằng Python

Trực giác toán học

Định nghĩa:

  • $t_i$: một thời điểm/duration
  • $d_i$: số sự kiện xảy ra tại thời điểm $t_i$
  • $n_i$: số cá thể còn sống đến thời điểm $t_i$

 

Hàm sống $S(t)$ được ước tính bởi: $$S(t)=\prod_{i:t_i\leq t}\bigg(1-\frac{d_i}{n_i}\bigg)$$

Phân tích sống sót bằng Python

Vì sao gọi là ước lượng giới hạn tích?

Giả sử có sự kiện tại 3 thời điểm: 1, 2, 3

Tỷ lệ sống tại $t=2$: $$S(t=2)=\bigg(1-\frac{d_1}{n_1}\bigg)*\bigg(1-\frac{d_2}{n_2}\bigg)$$

Tỷ lệ sống tại $t=3$: $$S(t=3)=S(t=2)*\bigg(1-\frac{d_3}{n_3}\bigg)$$

Tỷ lệ sống tại thời điểm t bằng tích của xác suất sống tại t và mọi thời điểm trước đó.

Phân tích sống sót bằng Python

Các giả định cần lưu ý

  • Sự kiện rõ ràng: sự kiện quan tâm xảy ra tại thời điểm xác định.
  • Xác suất sống so sánh được giữa mọi đối tượng: không phụ thuộc thời điểm vào nghiên cứu.
  • Kiểm duyệt không thông tin: quan sát bị kiểm duyệt có triển vọng sống như nhau với quan sát được theo dõi tiếp.
Phân tích sống sót bằng Python

Ước lượng Kaplan–Meier với lifelines

from lifelines import KaplanMeierFitter

KaplanMeierFitter: một lớp trong thư viện lifelines

kmf = KaplanMeierFitter()
kmf.fit(durations, event_observed)
Phân tích sống sót bằng Python

Ví dụ: bài toán thế chấp

Tên DataFrame: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
Phân tích sống sót bằng Python

Ví dụ: bài toán thế chấp

Tên 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>
Phân tích sống sót bằng Python

Dùng ước lượng Kaplan–Meier

Thời gian trung vị của khoản thế chấp còn nợ là bao lâu?

print(mortgage_kmf.median_survival_time_)
4.0

Xác suất khoản thế chấp còn nợ mỗi năm sau khi khởi tạo là bao nhiêu?

print(mortgage_kmf.survival_function_)
          KM_estimate
timeline             
0.0          1.000000
1.0          0.983267
2.0          0.950933
3.0          0.892328
Phân tích sống sót bằng Python

Dùng ước lượng Kaplan–Meier

Xác suất khoản thế chấp chưa trả hết vào năm 34 sau khi khởi tạo là bao nhiêu?

mortgage_kmf.predict(34)
0.037998
Phân tích sống sót bằng Python

Lợi ích và hạn chế

Lợi ích
  • Dễ diễn giải xác suất sống sót.
  • Linh hoạt với mọi dữ liệu thời gian đến sự kiện.
  • Thường là mô hình đầu tiên áp dụng cho loại dữ liệu này.
Hạn chế
  • Đường cong sống không mượt.
  • Nếu từ 50% dữ liệu trở lên bị kiểm duyệt, không tính được .median_survival_time_.
  • Không hiệu quả để phân tích ảnh hưởng của biến đồng biến đến hàm sống.
Phân tích sống sót bằng Python

Ayo berlatih!

Phân tích sống sót bằng Python

Preparing Video For Download...