Weibull modelini uydurma

Python ile Survival Analysis

Shae Wang

Senior Data Scientist

Olasılık dağılımları

Bir olasılık dağılımı

Farklı olay sonuçlarının olasılığını tanımlayan matematiksel bir fonksiyon.

normal dağılım

Python ile Survival Analysis

Olasılık dağılımları

Bir olasılık dağılımı

Farklı olay sonuçlarının olasılığını tanımlayan matematiksel bir fonksiyon.

uniform dağılım

Python ile Survival Analysis

Weibull dağılımına giriş

Weibull dağılımı

Sürekli bir dağılımdır; olay-zamana (time-to-event) verileri için etkilidir (başta parçacık boyutu dağılımını modellemek için kullanılmıştır).

Weibull olasılık yoğunluk fonksiyonu

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

Python ile Survival Analysis

Weibull dağılımına giriş

$k$

Şekli belirler

k_degisimleri

$\lambda$

Ölçeği belirler

lambda_degisimleri

Python ile Survival Analysis

Veriye Weibull dağılımı uydurma

Bir şirket arızaya yatkın bir makine filosunu işletiyor...

makine_arizasi_histogrami

Python ile Survival Analysis

Veriye Weibull dağılımı uydurma

Bir şirket arızaya yatkın bir makine filosunu işletiyor...

makine_arizasi_weibull

Python ile Survival Analysis

Weibull dağılımından sağkalım fonksiyonuna

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

$\rho$, k ile aynıdır

Python ile Survival Analysis

Ayar düğmeleri: k ve lambda

k ve $\lambda$
  • k (veya $\rho$): şekli belirler
  • $\lambda$: ölçeği belirler (nüfusun %63,2’si olay yaşadığında zamanı gösterir)

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

  • Weibull dağılımı: arıza/olay hızı zamanın bir kuvvetiyle orantılıdır.
Python ile Survival Analysis

k’yı (veya $\rho$’yu) yorumlama

k<1, olay hızı azalır

  • $k<1$ iken arıza/olay hızı zamanla azalır.
Python ile Survival Analysis

k’yı (veya $\rho$’yu) yorumlama

k=1, olay hızı sabit

  • $k=1$ iken arıza/olay hızı zamanla sabittir.
Python ile Survival Analysis

k’yı (veya $\rho$’yu) yorumlama

k>1, olay hızı artar

  • $k>1$ iken arıza/olay hızı zamanla artar.
Python ile Survival Analysis

Weibull ile sağkalım analizi

  1. WeibullFitter sınıfını içe aktarın
    from lifelines import WeibullFitter
    
  2. WeibullFitter sınıfını örnekleyin
    wb = WeibullFitter()
    
  3. Tahminleyiciyi veriye uydurmak için .fit() çağırın
    wb.fit(durations, event_observed)
    
  4. .survival_function_, .lambda_, .rho_, .summary, .predict()’e erişin
Python ile Survival Analysis

Örnek Weibull modeli

DataFrame adı: 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"])
Python ile Survival Analysis

Örnek Weibull modeli

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

örnek weibull sağkalım eğrisi

print(wb.lambda_, wb.rho_)
6.11  0.94
print(wb.predict(20))
0.05
Python ile Survival Analysis

Ayo berlatih!

Python ile Survival Analysis

Preparing Video For Download...