Visualiser votre modèle de Kaplan-Meier

Analyse de survie en Python

Shae Wang

Senior Data Scientist

Comment construire une courbe de survie de Kaplan-Meier ?

Données jouet avec $n=5$ :

durée observé
2 1
5 0
3 1
5 1
2 0

Étape 1 : Triez par ordre croissant. En cas d'égalité, placez les données censurées après les non censurées.

Étape 2 : Pour chaque $t_i$, calculez $d_i$, $n_i$ et $\big(1-\frac{d_i}{n_i}\big)$

Étape 3 : Pour chaque $t_i$, multipliez $\big(1-\frac{d_i}{n_i}\big)$ par $\big(1-\frac{d_{i-1}}{n_{i-1}}\big)$, $\big(1-\frac{d_{i-2}}{n_{i-2}}\big)$, …, $\big(1-\frac{d_0}{n_0}\big)$

Analyse de survie en Python

Comment construire une courbe de survie de Kaplan-Meier ?

Étape 1 : Triez les durées par ordre croissant. En cas d'égalité, placez les données censurées après les non censurées.

durée
2
5+
3
5
2+

Utilisez le signe « + » pour indiquer la censure : 2, 5+, 3, 5, 2+

Analyse de survie en Python

Comment construire une courbe de survie de Kaplan-Meier ?

Étape 1 : Triez les durées par ordre croissant. En cas d'égalité, placez les données censurées après les non censurées.

$t_i$
2, 2+
3
5, 5+
Analyse de survie en Python

Comment construire une courbe de survie de Kaplan-Meier ?

Étape 2 : Pour chaque $t_i$, calculez $d_i$, $n_i$ et $\big(1-\frac{d_i}{n_i}\big)$

$t_i$
2, 2+
3
5, 5+
Analyse de survie en Python

Comment construire une courbe de survie de Kaplan-Meier ?

Étape 2 : Pour chaque $t_i$, calculez $d_i$, $n_i$ et $\big(1-\frac{d_i}{n_i}\big)$

$t_i$ $d_i$
2, 2+ 1
3 1
5, 5+ 1
Analyse de survie en Python

Comment construire une courbe de survie de Kaplan-Meier ?

Étape 2 : Pour chaque $t_i$, calculez $d_i$, $n_i$ et $\big(1-\frac{d_i}{n_i}\big)$

$t_i$ $d_i$ $n_i$
2, 2+ 1 5
3 1 3
5, 5+ 1 2
Analyse de survie en Python

Comment construire une courbe de survie de Kaplan-Meier ?

Étape 2 : Pour chaque $t_i$, calculez $d_i$, $n_i$ et $\big(1-\frac{d_i}{n_i}\big)$

$t_i$ $d_i$ $n_i$ $\big(1-\frac{d_i}{n_i}\big)$
2, 2+ 1 5 $4/5$
3 1 3 $2/3$
5, 5+ 1 2 $1/2$
Analyse de survie en Python

Comment construire une courbe de survie de Kaplan-Meier ?

Étape 3 : Pour chaque $t_i$, multipliez $\big(1-\frac{d_i}{n_i}\big)$ par $\big(1-\frac{d_{i-1}}{n_{i-1}}\big)$, $\big(1-\frac{d_{i-2}}{n_{i-2}}\big)$, …, $\big(1-\frac{d_0}{n_0}\big)$

$t_i$ $d_i$ $n_i$ $\big(1-\frac{d_i}{n_i}\big)$ $S(t_i)$
2, 2+ 1 5 4/5 4/5 = 0,8
3 1 3 2/3 4/5 $\cdot$ 2/3 = 0,53
5, 5+ 1 2 1/2 4/5 $\cdot$ 2/3 $\cdot$ 1/2 = 0,27
Analyse de survie en Python

Comment construire une courbe de survie de Kaplan-Meier ?

$t_i$ $d_i$ $n_i$ $\big(1-\frac{d_i}{n_i}\big)$ $S(t_i)$
2, 2+ 1 5 $4/5$ 0,8
3 1 3 $2/3$ 0,53
5, 5+ 1 2 $1/2$ 0,27

Courbe de Kaplan-Meier issue du tableau.

Analyse de survie en Python

Interpréter la courbe de survie

Courbe de Kaplan-Meier issue du tableau.

  • Les probabilités de survie à chaque instant entre 0 et 5.

  • Idée reçue : si la courbe atteint 0, aucun sujet n'a survécu.

  • La courbe tombe à zéro si la dernière observation n'est pas censurée (durée d'événement connue).
Analyse de survie en Python

Tracer la courbe de survie de Kaplan-Meier

from lifelines import KaplanMeierFitter
import matplotlib.pyplot as plt

kmf = KaplanMeierFitter()
kmf.fit(durations, event_observed)
kmf.survival_function_.plot()
plt.show()
Analyse de survie en Python

Exemple : le problème d'hypothèque

Nom du DataFrame : mortgage_df

id durée remboursé
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
from lifelines import KaplanMeierFitter
from matplotlib import pyplot as plt
mortgage_kmf = KaplanMeierFitter()
mortgage_kmf.fit(duration=mortgage_df["duration"], 
        event_observed=mortgage_df["paid_off"])
mortgage_kmf.survival_function_.plot()
Analyse de survie en Python

Exemple : le problème d'hypothèque

plt.show()

Visualisation de la courbe de survie pour le problème d'hypothèque.

Analyse de survie en Python

Intervalle de confiance de la courbe de survie

mortgage_kmf.plot_survival_function()
plt.show()

Visualisation de la courbe de survie pour le problème d'hypothèque avec intervalle de confiance.

Analyse de survie en Python

Pourquoi l'intervalle de confiance est-il utile ?

  • Un moyen de quantifier l'incertitude de chaque estimation ponctuelle des probabilités de survie
  • Un large intervalle de confiance signifie moins de certitude, souvent dû à un faible effectif
  • Un étroit intervalle de confiance signifie plus de certitude, souvent dû à un effectif important
Analyse de survie en Python

Façons de tracer la courbe de survie de Kaplan-Meier

Tracez les estimations ponctuelles de la fonction de survie en ligne continue.

kmf.survival_function_.plot()
plt.show()

Tracé de la fonction de survie en ligne continue.

Tracez la fonction de survie en marche d'escalier, sans intervalle de confiance.

kmf.plot(ci_show=False)
plt.show()

Tracé de la fonction de survie en marche d'escalier.

Analyse de survie en Python

Façons de tracer la courbe de survie de Kaplan-Meier

Tracez la fonction de survie en marche d'escalier avec l'intervalle de confiance.

kmf.plot()
plt.show()

Tracé de la fonction de survie en marche d'escalier avec intervalle de confiance.

Autre possibilité…

kmf.plot_survival_function()
plt.show()
Analyse de survie en Python

Passons à la pratique !

Analyse de survie en Python

Preparing Video For Download...