Ajustando o modelo de Weibull

Análise de Sobrevivência em Python

Shae Wang

Senior Data Scientist

Distribuições de probabilidade

Uma distribuição de probabilidade

Uma função matemática que descreve a probabilidade de diferentes resultados de eventos.

distribuição normal

Análise de Sobrevivência em Python

Distribuições de probabilidade

Uma distribuição de probabilidade

Uma função matemática que descreve a probabilidade de diferentes resultados de eventos.

distribuição uniforme

Análise de Sobrevivência em Python

Apresentando a distribuição de Weibull

A distribuição de Weibull

Uma distribuição contínua que modela bem dados de tempo até o evento (originalmente usada para tamanhos de partículas).

A função densidade de probabilidade de 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$$

Análise de Sobrevivência em Python

Apresentando a distribuição de Weibull

$k$

Determina o formato

variando_k

$\lambda$

Determina a escala

variando_lambda

Análise de Sobrevivência em Python

Ajustando a distribuição de Weibull aos dados

Uma empresa mantém uma frota de máquinas sujeitas a falhas...

histograma de falhas de máquina

Análise de Sobrevivência em Python

Ajustando a distribuição de Weibull aos dados

Uma empresa mantém uma frota de máquinas sujeitas a falhas...

weibull em falhas de máquina

Análise de Sobrevivência em Python

Da distribuição de Weibull à função de sobrevivência

$$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 para função de sobrevivência

$\rho$ é o mesmo que k

Análise de Sobrevivência em Python

Os controles: k e lambda

k e $\lambda$
  • k (ou $\rho$): determina o formato
  • $\lambda$: determina a escala (indica quando 63,2% da população teve o evento)

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

  • Distribuição de Weibull: a taxa de falha/evento é proporcional a uma potência do tempo.
Análise de Sobrevivência em Python

Interpretando k (ou $\rho$)

k<1, taxa de evento diminui

  • Quando $k<1$, a taxa de falha/evento diminui ao longo do tempo.
Análise de Sobrevivência em Python

Interpretando k (ou $\rho$)

k=1, taxa de evento constante

  • Quando $k=1$, a taxa de falha/evento é constante no tempo.
Análise de Sobrevivência em Python

Interpretando k (ou $\rho$)

k>1, taxa de evento aumenta

  • Quando $k>1$, a taxa de falha/evento aumenta ao longo do tempo.
Análise de Sobrevivência em Python

Análise de sobrevivência com distribuição de Weibull

  1. Importe a classe WeibullFitter
    from lifelines import WeibullFitter
    
  2. Instancie a classe WeibullFitter
    wb = WeibullFitter()
    
  3. Chame .fit() para ajustar aos dados
    wb.fit(durations, event_observed)
    
  4. Acesse .survival_function_, .lambda_, .rho_, .summary, .predict()
Análise de Sobrevivência em Python

Exemplo de modelo Weibull

Nome do 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"])
Análise de Sobrevivência em Python

Exemplo de modelo Weibull

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

curva de sobrevivência Weibull de exemplo

print(wb.lambda_, wb.rho_)
6.11  0.94
print(wb.predict(20))
0.05
Análise de Sobrevivência em Python

Vamos praticar!

Análise de Sobrevivência em Python

Preparing Video For Download...