Přizpůsobení Weibullova modelu

Survival Analysis in Python

Shae Wang

Senior Data Scientist

Pravděpodobnostní rozdělení

Pravděpodobnostní rozdělení

Matematická funkce popisující pravděpodobnost různých výsledků události.

normální rozdělení

Survival Analysis in Python

Pravděpodobnostní rozdělení

Pravděpodobnostní rozdělení

Matematická funkce popisující pravděpodobnost různých výsledků události.

rovnoměrné rozdělení

Survival Analysis in Python

Úvod do Weibullova rozdělení

Weibullovo rozdělení

Souvislé pravděpodobnostní rozdělení vhodné pro modelování dat o době do události (původně použito pro modelování rozdělení velikosti částic).

Weibullova hustota pravděpodobnosti

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

Survival Analysis in Python

Úvod do Weibullova rozdělení

$k$

Určuje tvar

různé hodnoty k

$\lambda$

Určuje měřítko

různé hodnoty lambda

Survival Analysis in Python

Přizpůsobení Weibullova rozdělení datům

Společnost provozuje flotilu strojů náchylných k poruchám...

histogram poruch strojů

Survival Analysis in Python

Přizpůsobení Weibullova rozdělení datům

Společnost provozuje flotilu strojů náchylných k poruchám...

Weibullovo rozdělení poruch strojů

Survival Analysis in Python

Od Weibullova rozdělení k funkci přežití

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

Weibullovo rozdělení na funkci přežití

$\rho$ je totéž jako k

Survival Analysis in Python

Parametry: k a lambda

k a $\lambda$
  • k (nebo $\rho$): určuje tvar
  • $\lambda$: určuje měřítko (udává, kdy 63,2 % populace zaznamenalo událost)

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

  • Weibullovo rozdělení: míra selhání/události je úměrná mocnině času.
Survival Analysis in Python

Interpretace k (nebo $\rho$)

k<1, míra události klesá

  • Pokud $k<1$, míra selhání/události v čase klesá.
Survival Analysis in Python

Interpretace k (nebo $\rho$)

k=1, míra události konstantní

  • Pokud $k=1$, míra selhání/události je v čase konstantní.
Survival Analysis in Python

Interpretace k (nebo $\rho$)

k>1, míra události roste

  • Pokud $k>1$, míra selhání/události v čase roste.
Survival Analysis in Python

Analýza přežití s Weibullovým rozdělením

  1. Importujte třídu WeibullFitter
    from lifelines import WeibullFitter
    
  2. Vytvořte instanci třídy WeibullFitter
    wb = WeibullFitter()
    
  3. Zavolejte .fit() pro přizpůsobení odhadce datům
    wb.fit(durations, event_observed)
    
  4. Přistupte k .survival_function_, .lambda_, .rho_, .summary, .predict()
Survival Analysis in Python

Příklad Weibullova modelu

Název 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"])
Survival Analysis in Python

Příklad Weibullova modelu

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

příklad Weibullovy křivky přežití

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

Pojďme si procvičit!

Survival Analysis in Python

Preparing Video For Download...