Ajuster un estimateur de Kaplan-Meier

Analyse de survie en Python

Shae Wang

Senior Data Scientist

Qu'est‑ce que l'estimateur de Kaplan-Meier ?

Une statistique non paramétrique qui estime la fonction de survie pour des données de temps jusqu'à l'événement.

  • Aussi appelé
    • estimateur à produit limite
    • estimateur K‑M
  • Non paramétrique : construit une courbe de survie à partir des données collectées sans supposer de distribution sous-jacente
Analyse de survie en Python

L'intuition mathématique

Définitions :

  • $t_i$ : un temps de durée
  • $d_i$ : nombre d'événements survenus au temps $t_i$
  • $n_i$ : nombre d'individus connus pour avoir survécu jusqu'au temps $t_i$

 

La fonction de survie $S(t)$ est estimée par : $$S(t)=\prod_{i:t_i\leq t}\bigg(1-\frac{d_i}{n_i}\bigg)$$

Analyse de survie en Python

Pourquoi « estimateur à produit limite » ?

Supposons des événements aux 3 temps : 1, 2, 3

Taux de survie pour $t=2$ : $$S(t=2)=\bigg(1-\frac{d_1}{n_1}\bigg)*\bigg(1-\frac{d_2}{n_2}\bigg)$$

Taux de survie pour $t=3$ : $$S(t=3)=S(t=2)*\bigg(1-\frac{d_3}{n_3}\bigg)$$

Le taux de survie au temps t est le produit des probabilités de survivre à t et à chaque temps antérieur.

Analyse de survie en Python

Hypothèses à garder en tête

  • Événements non ambigus : l'événement d'intérêt survient à un moment clairement défini.
  • Probabilités de survie comparables pour tous : elles ne dépendent pas du moment d'entrée dans l'étude.
  • Censure non informative : les observations censurées ont les mêmes perspectives de survie que celles poursuivies.
Analyse de survie en Python

Estimateur de Kaplan-Meier avec lifelines

from lifelines import KaplanMeierFitter

KaplanMeierFitter : une classe de la bibliothèque lifelines

kmf = KaplanMeierFitter()
kmf.fit(durations, event_observed)
Analyse de survie en Python

Exemple : problème d'hypothèque

Nom du DataFrame : mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
Analyse de survie en Python

Exemple : problème d'hypothèque

Nom du DataFrame : mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
from lifelines import KaplanMeierFitter
mortgage_kmf = KaplanMeierFitter()
mortgage_kmf.fit(duration=mortgage_df["duration"], 
        event_observed=mortgage_df["paid_off"])
<lifelines.KaplanMeierFitter:"KM_estimate", 
fitted with 100 total observations, 
18 right-censored observations>
Analyse de survie en Python

Utiliser l'estimateur de Kaplan-Meier

Quelle est la durée médiane d'une hypothèque en cours ?

print(mortgage_kmf.median_survival_time_)
4.0

Quelle est la probabilité qu'une hypothèque reste en cours chaque année après l'ouverture ?

print(mortgage_kmf.survival_function_)
          KM_estimate
timeline             
0.0          1.000000
1.0          0.983267
2.0          0.950933
3.0          0.892328
Analyse de survie en Python

Utiliser l'estimateur de Kaplan-Meier

Quelle est la probabilité qu'une hypothèque ne soit pas remboursée à l'année 34 après l'ouverture ?

mortgage_kmf.predict(34)
0.037998
Analyse de survie en Python

Avantages et limites

Avantages
  • Interprétation intuitive des probabilités de survie.
  • Souple : s'applique à tout temps jusqu'à l'événement.
  • Souvent le premier modèle à essayer pour ce type de données.
Limites
  • La courbe de survie n'est pas lisse.
  • Si 50 % ou plus des données sont censurées, .median_survival_time_ ne peut pas être calculée.
  • Peu efficace pour analyser l'effet des covariables sur la fonction de survie.
Analyse de survie en Python

Passons à la pratique !

Analyse de survie en Python

Preparing Video For Download...