Survival Analysis ด้วย Python
Shae Wang
Senior Data Scientist
ฟังก์ชันทางคณิตศาสตร์ที่อธิบายความน่าจะเป็นของผลลัพธ์ต่าง ๆ

ฟังก์ชันทางคณิตศาสตร์ที่อธิบายความน่าจะเป็นของผลลัพธ์ต่าง ๆ

การแจกแจงความน่าจะเป็นแบบต่อเนื่องที่เหมาะกับข้อมูลเวลาถึงเหตุการณ์ (เดิมใช้จำลองการกระจายขนาดอนุภาค)
$$f(x;\lambda,k)=\frac{k}{\lambda}\bigg(\frac{x}{\lambda}\bigg)^{k-1}e^{-(x/\lambda)^k}$$ $$x\geq0,k>0,\lambda>0$$
กำหนดรูปร่างของการแจกแจง

กำหนดสเกลของการแจกแจง

บริษัทแห่งหนึ่งดูแลเครื่องจักรที่มีแนวโน้มจะเกิดความเสียหาย...

บริษัทแห่งหนึ่งดูแลเครื่องจักรที่มีแนวโน้มจะเกิดความเสียหาย...

$$f(x;\lambda,k)=\frac{k}{\lambda}\bigg(\frac{x}{\lambda}\bigg)^{k-1}e^{-(x/\lambda)^k} \quad\rightarrow\quad\qquad\qquad S(t)=e^{-(t/\lambda)^\rho}$$

$\rho$ มีค่าเดียวกับ k
$$f(x;\lambda,k)=\frac{k}{\lambda}\bigg(\frac{x}{\lambda}\bigg)^{k-1}e^{-(x/\lambda)^k} \quad\rightarrow\quad f(x;\lambda,k=3)=\frac{3}{\lambda}\bigg(\frac{x}{\lambda}\bigg)^2e^{-(x/\lambda)^3}$$



WeibullFitterfrom lifelines import WeibullFitter
WeibullFitterwb = WeibullFitter()
.fit() เพื่อ fit ตัวประมาณกับข้อมูลwb.fit(durations, event_observed)
.survival_function_, .lambda_, .rho_, .summary, .predict()ชื่อ DataFrame: mortgage_df
| id | duration | paid_off |
|---|---|---|
| 1 | 25 | 0 |
| 2 | 17 | 1 |
| 3 | 5 | 0 |
| ... | ... | ... |
| 1000 | 30 | 1 |
from lifelines import WeibullFitter
wb = WeibullFitter()
wb.fit(durations=mortgage_df["duration"],
event_observed=mortgage_df["paid_off"])
wb.survival_function_.plot()
plt.show()

print(wb.lambda_, wb.rho_)
6.11 0.94
print(wb.predict(20))
0.05
Survival Analysis ด้วย Python