Dopasowanie modelu Weibulla

Analiza przeżycia w Pythonie

Shae Wang

Senior Data Scientist

Rozkłady prawdopodobieństwa

Rozkład prawdopodobieństwa

Funkcja matematyczna opisująca prawdopodobieństwo różnych wyników zdarzeń.

rozkład normalny

Analiza przeżycia w Pythonie

Rozkłady prawdopodobieństwa

Rozkład prawdopodobieństwa

Funkcja matematyczna opisująca prawdopodobieństwo różnych wyników zdarzeń.

rozkład jednostajny

Analiza przeżycia w Pythonie

Wprowadzenie do rozkładu Weibulla

Rozkład Weibulla

Ciągły rozkład prawdopodobieństwa bardzo dobrze modelujący dane o czasie do zdarzenia (pierwotnie stosowany do modelowania rozkładu wielkości cząstek).

Funkcja gęstości prawdopodobieństwa Weibulla

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

Analiza przeżycia w Pythonie

Wprowadzenie do rozkładu Weibulla

$k$

Określa kształt

zmienne k

$\lambda$

Określa skalę

zmienne lambda

Analiza przeżycia w Pythonie

Dopasowanie rozkładu Weibulla do danych

Firma utrzymuje flotę maszyn podatnych na awarie...

histogram awarii maszyn

Analiza przeżycia w Pythonie

Dopasowanie rozkładu Weibulla do danych

Firma utrzymuje flotę maszyn podatnych na awarie...

awarie maszyn – Weibull

Analiza przeżycia w Pythonie

Od rozkładu Weibulla do funkcji przeżycia

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

od rozkładu Weibulla do funkcji przeżycia

$\rho$ jest równoważne k

Analiza przeżycia w Pythonie

Parametry: k i lambda

k i $\lambda$
  • k (lub $\rho$): określa kształt
  • $\lambda$: określa skalę (wskazuje, kiedy 63,2% populacji doświadczyło zdarzenia)

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

  • Rozkład Weibulla: współczynnik awarii/zdarzeń jest proporcjonalny do potęgi czasu.
Analiza przeżycia w Pythonie

Interpretacja k (lub $\rho$)

k<1, współczynnik zdarzeń maleje

  • Gdy $k<1$, współczynnik awarii/zdarzeń maleje w czasie.
Analiza przeżycia w Pythonie

Interpretacja k (lub $\rho$)

k=1, współczynnik zdarzeń stały

  • Gdy $k=1$, współczynnik awarii/zdarzeń jest stały w czasie.
Analiza przeżycia w Pythonie

Interpretacja k (lub $\rho$)

k>1, współczynnik zdarzeń rośnie

  • Gdy $k>1$, współczynnik awarii/zdarzeń rośnie w czasie.
Analiza przeżycia w Pythonie

Analiza przeżycia z rozkładem Weibulla

  1. Zaimportuj klasę WeibullFitter
    from lifelines import WeibullFitter
    
  2. Utwórz instancję klasy WeibullFitter
    wb = WeibullFitter()
    
  3. Wywołaj .fit(), aby dopasować estymator do danych
    wb.fit(durations, event_observed)
    
  4. Dostęp do .survival_function_, .lambda_, .rho_, .summary, .predict()
Analiza przeżycia w Pythonie

Przykładowy model Weibulla

Nazwa 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"])
Analiza przeżycia w Pythonie

Przykładowy model Weibulla

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

przykładowa krzywa przeżycia Weibulla

print(wb.lambda_, wb.rho_)
6.11  0.94
print(wb.predict(20))
0.05
Analiza przeżycia w Pythonie

Czas na ćwiczenia!

Analiza przeżycia w Pythonie

Preparing Video For Download...