Ajustarea modelului Weibull

Analiza de supraviețuire în Python

Shae Wang

Senior Data Scientist

Distribuții de probabilitate

O distribuție de probabilitate

O funcție matematică ce descrie probabilitatea diferitelor rezultate ale unui eveniment.

distribuție normală

Analiza de supraviețuire în Python

Distribuții de probabilitate

O distribuție de probabilitate

O funcție matematică ce descrie probabilitatea diferitelor rezultate ale unui eveniment.

distribuție uniformă

Analiza de supraviețuire în Python

Introducere în distribuția Weibull

Distribuția Weibull

O distribuție de probabilitate continuă ce modelează foarte bine datele de tip timp-până-la-eveniment (aplicată inițial distribuției granulometrice a particulelor).

Funcția de densitate de probabilitate 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$$

Analiza de supraviețuire în Python

Introducere în distribuția Weibull

$k$

Determină forma

variația lui k

$\lambda$

Determină scala

variația lui lambda

Analiza de supraviețuire în Python

Ajustarea distribuției Weibull la date

O companie deține o flotă de mașini predispuse la defecțiuni...

histogramă defecțiuni mașini

Analiza de supraviețuire în Python

Ajustarea distribuției Weibull la date

O companie deține o flotă de mașini predispuse la defecțiuni...

distribuție Weibull defecțiuni mașini

Analiza de supraviețuire în Python

De la distribuția Weibull la funcția de supraviețuire

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

de la Weibull la funcția de supraviețuire

$\rho$ este același cu k

Analiza de supraviețuire în Python

Parametrii: k și lambda

k și $\lambda$
  • k (sau $\rho$): determină forma
  • $\lambda$: determină scala (indică momentul în care 63,2% din populație a experimentat evenimentul)

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

  • Distribuția Weibull: rata de defectare/eveniment este proporțională cu o putere a timpului.
Analiza de supraviețuire în Python

Interpretarea lui k (sau $\rho$)

k<1, rata evenimentului scade

  • Când $k<1$, rata de defectare/eveniment scade în timp.
Analiza de supraviețuire în Python

Interpretarea lui k (sau $\rho$)

k=1, rata evenimentului constantă

  • Când $k=1$, rata de defectare/eveniment este constantă în timp.
Analiza de supraviețuire în Python

Interpretarea lui k (sau $\rho$)

k>1, rata evenimentului crește

  • Când $k>1$, rata de defectare/eveniment crește în timp.
Analiza de supraviețuire în Python

Analiza supraviețuirii cu distribuția Weibull

  1. Importați clasa WeibullFitter
    from lifelines import WeibullFitter
    
  2. Instanțiați clasa WeibullFitter
    wb = WeibullFitter()
    
  3. Apelați .fit() pentru a ajusta estimatorul la date
    wb.fit(durations, event_observed)
    
  4. Accesați .survival_function_, .lambda_, .rho_, .summary, .predict()
Analiza de supraviețuire în Python

Exemplu de model Weibull

Numele 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 de supraviețuire în Python

Exemplu de model Weibull

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

exemplu curbă de supraviețuire Weibull

print(wb.lambda_, wb.rho_)
6.11  0.94
print(wb.predict(20))
0.05
Analiza de supraviețuire în Python

Să exersăm!

Analiza de supraviețuire în Python

Preparing Video For Download...