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 jouets avec $n=5$ :

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

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

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

Étape 3 : Pour chaque $t_i$, multiplier $\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 : Ordonner les durées par ordre croissant. En cas d'égalité, placer les données censurées après les non censurées.

durée
2
5+
3
5
2+

Utilisez le signe « + » pour indiquer les données censurées : 2, 5+, 3, 5, 2+

Analyse de survie en Python

Comment construire une courbe de survie de Kaplan-Meier ?

Étape 1 : Ordonner les durées par ordre croissant. En cas d'égalité, placer 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$, calculer $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$, calculer $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$, calculer $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$, calculer $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$, multiplier $\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 à partir du tableau.

Analyse de survie en Python

Interpréter la courbe de survie

Courbe de Kaplan-Meier à partir 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 réelle observée).
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 du 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 du 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 du 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 autour de chaque estimation ponctuelle des probabilités de survie
  • Un large intervalle de confiance signifie moins de certitude, souvent dû à un petit échantillon
  • Un étroit intervalle de confiance signifie plus de certitude, souvent dû à un grand échantillon
Analyse de survie en Python

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

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

Tracer la fonction de survie en ligne en escalier sans intervalle de confiance.

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

Tracé de la fonction de survie en ligne en escalier.

Analyse de survie en Python

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

Tracer la fonction de survie en ligne en escalier avec l'intervalle de confiance.

kmf.plot()
plt.show()

Tracé de la fonction de survie en ligne en escalier avec intervalle de confiance.

Autre option…

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

Passons à la pratique !

Analyse de survie en Python

Preparing Video For Download...