Phân tích sống sót bằng Python
Shae Wang
Senior Data Scientist
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.
Định nghĩa:
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)$$
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 đó.
from lifelines import KaplanMeierFitter
KaplanMeierFitter: một lớp trong thư viện lifelines
kmf = KaplanMeierFitter()
kmf.fit(durations, event_observed)
Tên DataFrame: mortgage_df
| id | duration | paid_off |
|---|---|---|
| 1 | 25 | 0 |
| 2 | 17 | 1 |
| 3 | 5 | 0 |
| ... | ... | ... |
| 100 | 30 | 1 |
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>
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
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
.median_survival_time_.Phân tích sống sót bằng Python