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.

distribution 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.

distribution 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 durées avant événement (initialement pour la taille des particules).

La fonction de densité 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 aux données

Une entreprise entretient une flotte de machines sujettes aux pannes…

histogramme des pannes de machines

Analyse de survie en Python

Ajuster la loi de Weibull aux données

Une entreprise entretient une flotte de machines sujettes aux pannes…

ajustement Weibull des pannes

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 paramètres : k et lambda

k et $\lambda$
  • k (ou $\rho$) : détermine la forme
  • $\lambda$ : détermine l'échelle (moment où 63,2 % de la population a vécu 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 reste 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 la 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...