Mencocokkan model Weibull

Analisis Survival dengan Python

Shae Wang

Senior Data Scientist

Distribusi probabilitas

Distribusi probabilitas

Fungsi matematis yang menjelaskan probabilitas berbagai hasil kejadian.

distribusi normal

Analisis Survival dengan Python

Distribusi probabilitas

Distribusi probabilitas

Fungsi matematis yang menjelaskan probabilitas berbagai hasil kejadian.

distribusi seragam

Analisis Survival dengan Python

Pengenalan distribusi Weibull

Distribusi Weibull

Distribusi probabilitas kontinu yang sangat baik untuk memodelkan waktu-kejadian (awalnya untuk sebaran ukuran partikel).

Fungsi kepadatan probabilitas 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$$

Analisis Survival dengan Python

Pengenalan distribusi Weibull

$k$

Menentukan bentuk

variasi_k

$\lambda$

Menentukan skala

variasi_lambda

Analisis Survival dengan Python

Mencocokkan distribusi Weibull ke data

Sebuah perusahaan mengelola armada mesin yang rentan gagal...

histogram kegagalan mesin

Analisis Survival dengan Python

Mencocokkan distribusi Weibull ke data

Sebuah perusahaan mengelola armada mesin yang rentan gagal...

pencocokan weibull pada kegagalan mesin

Analisis Survival dengan Python

Dari distribusi Weibull ke fungsi kelangsungan hidup

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

weibull ke fungsi kelangsungan hidup

$\rho$ sama dengan k

Analisis Survival dengan Python

Pengatur: k dan lambda

k dan $\lambda$
  • k (atau $\rho$): menentukan bentuk
  • $\lambda$: menentukan skala (menunjukkan saat 63,2% populasi mengalami kejadian)

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

  • Distribusi Weibull: laju kegagalan/kejadian sebanding dengan pangkat waktu.
Analisis Survival dengan Python

Menafsirkan k (atau $\rho$)

k<1, laju kejadian menurun

  • Jika $k<1$, laju kegagalan/kejadian menurun seiring waktu.
Analisis Survival dengan Python

Menafsirkan k (atau $\rho$)

k=1, laju kejadian konstan

  • Jika $k=1$, laju kegagalan/kejadian konstan seiring waktu.
Analisis Survival dengan Python

Menafsirkan k (atau $\rho$)

k>1, laju kejadian meningkat

  • Jika $k>1$, laju kegagalan/kejadian meningkat seiring waktu.
Analisis Survival dengan Python

Analisis kelangsungan hidup dengan distribusi Weibull

  1. Impor kelas WeibullFitter
    from lifelines import WeibullFitter
    
  2. Instansiasi kelas WeibullFitter
    wb = WeibullFitter()
    
  3. Panggil .fit() untuk menyesuaikan estimator ke data
    wb.fit(durations, event_observed)
    
  4. Akses .survival_function_, .lambda_, .rho_, .summary, .predict()
Analisis Survival dengan Python

Contoh model Weibull

Nama 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"])
Analisis Survival dengan Python

Contoh model Weibull

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

contoh kurva kelangsungan hidup weibull

print(wb.lambda_, wb.rho_)
6.11  0.94
print(wb.predict(20))
0.05
Analisis Survival dengan Python

Ayo berlatih!

Analisis Survival dengan Python

Preparing Video For Download...