Ajuster le modèle de Weibull

Analyse de survie en Python

Shae Wang

Senior Data Scientist

Lois de probabilité

Une loi de probabilité

Une fonction mathématique qui décrit la probabilité des différents résultats d'un événement.

loi normale

Analyse de survie en Python

Lois de probabilité

Une loi de probabilité

Une fonction mathématique qui décrit la probabilité des différents résultats d'un événement.

loi uniforme

Analyse de survie en Python

Introduction à la loi de Weibull

La loi de Weibull

Une loi de probabilité continue qui modélise très bien les temps jusqu'à événement (initialement utilisée pour les distributions de taille de particules).

La densité de probabilité 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$$

Analyse de survie en Python

Introduction à la loi de Weibull

$k$

Détermine la forme

k variable

$\lambda$

Détermine l'échelle

lambda variable

Analyse de survie en Python

Ajuster la loi de Weibull à des données

Une entreprise gère une flotte de machines sujettes aux pannes…

histogramme des pannes de machines

Analyse de survie en Python

Ajuster la loi de Weibull à des données

Une entreprise gère une flotte de machines sujettes aux pannes…

weibull ajustée aux pannes de machines

Analyse de survie en Python

De la loi de Weibull à la fonction de survie

$$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 Weibull à la fonction de survie

$\rho$ est identique à k

Analyse de survie en Python

Les réglages : k et lambda

k et $\lambda$
  • k (ou $\rho$) : détermine la forme
  • $\lambda$ : détermine l'échelle (indique quand 63,2 % de la population a connu l'événement)

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

  • Loi de Weibull : le taux de défaillance/événement est proportionnel à une puissance du temps.
Analyse de survie en Python

Interpréter k (ou $\rho$)

k<1, taux d'événement en baisse

  • Quand $k<1$, le taux de défaillance/événement diminue avec le temps.
Analyse de survie en Python

Interpréter k (ou $\rho$)

k=1, taux d'événement constant

  • Quand $k=1$, le taux de défaillance/événement est constant dans le temps.
Analyse de survie en Python

Interpréter k (ou $\rho$)

k>1, taux d'événement en hausse

  • Quand $k>1$, le taux de défaillance/événement augmente avec le temps.
Analyse de survie en Python

Analyse de survie avec la loi de Weibull

  1. Importer la classe WeibullFitter
    from lifelines import WeibullFitter
    
  2. Instancier une classe WeibullFitter
    wb = WeibullFitter()
    
  3. Appeler .fit() pour ajuster l'estimateur aux données
    wb.fit(durations, event_observed)
    
  4. Accéder à .survival_function_, .lambda_, .rho_, .summary, .predict()
Analyse de survie en Python

Exemple de modèle de Weibull

Nom du 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"])
Analyse de survie en Python

Exemple de modèle de Weibull

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

exemple de courbe de survie Weibull

print(wb.lambda_, wb.rho_)
6.11  0.94
print(wb.predict(20))
0.05
Analyse de survie en Python

Passons à la pratique !

Analyse de survie en Python

Preparing Video For Download...