Ước lượng mô hình Weibull

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

Shae Wang

Senior Data Scientist

Phân phối xác suất

Phân phối xác suất

Hàm mô tả xác suất của các kết quả sự kiện khác nhau.

phân phối chuẩn

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

Phân phối xác suất

Phân phối xác suất

Hàm mô tả xác suất của các kết quả sự kiện khác nhau.

phân phối đều

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

Giới thiệu phân phối Weibull

Phân phối Weibull

Phân phối xác suất liên tục, rất phù hợp mô hình hóa thời gian đến sự kiện (ban đầu dùng cho phân bố kích thước hạt).

Hàm mật độ xác suất Weibull

$$f(x;\lambda,k)=\frac{k}{\lambda}\bigg(\frac{x}{\lambda}\bigg)^{k-1}e^{-(x/\lambda)^k}$$ $$x\geq0,k>0,\lambda>0$$

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

Giới thiệu phân phối Weibull

$k$

Quyết định dạng

thay đổi k

$\lambda$

Quyết định thang

thay đổi lambda

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

Khớp phân phối Weibull với dữ liệu

Một công ty vận hành đội máy dễ hỏng...

biểu đồ tần suất hỏng máy

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

Khớp phân phối Weibull với dữ liệu

Một công ty vận hành đội máy dễ hỏng...

weibull trên dữ liệu hỏng máy

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

Từ phân phối Weibull đến hàm sống sót

$$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}$$

từ Weibull đến hàm sống sót

$\rho$ trùng với k

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

Các nút điều chỉnh: k và lambda

k và $\lambda$
  • k (hay $\rho$): quyết định dạng
  • $\lambda$: quyết định thang (thời điểm 63,2% quần thể đã xảy ra sự kiện)

$$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}$$

  • Phân phối Weibull: tốc độ hỏng/sự kiện tỉ lệ với một lũy thừa của thời gian.
Phân tích sống sót bằng Python

Diễn giải k (hay $\rho$)

k<1, tốc độ sự kiện giảm

  • Khi $k<1$, tốc độ hỏng/sự kiện giảm theo thời gian.
Phân tích sống sót bằng Python

Diễn giải k (hay $\rho$)

k=1, tốc độ sự kiện không đổi

  • Khi $k=1$, tốc độ hỏng/sự kiện không đổi theo thời gian.
Phân tích sống sót bằng Python

Diễn giải k (hay $\rho$)

k>1, tốc độ sự kiện tăng

  • Khi $k>1$, tốc độ hỏng/sự kiện tăng theo thời gian.
Phân tích sống sót bằng Python

Phân tích sống sót với phân phối Weibull

  1. Import lớp WeibullFitter
    from lifelines import WeibullFitter
    
  2. Khởi tạo WeibullFitter
    wb = WeibullFitter()
    
  3. Gọi .fit() để khớp mô hình với dữ liệu
    wb.fit(durations, event_observed)
    
  4. Truy cập .survival_function_, .lambda_, .rho_, .summary, .predict()
Phân tích sống sót bằng Python

Ví dụ mô hình Weibull

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

Ví dụ mô hình Weibull

wb.survival_function_.plot()
plt.show()

đường cong sống sót Weibull ví dụ

print(wb.lambda_, wb.rho_)
6.11  0.94
print(wb.predict(20))
0.05
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...