Introduction à l’analyse de survie : l’estimateur de Kaplan-Meier | par Eryk Lewinson
Apprenez l’une des techniques les plus populaires utilisées pour l’analyse de survie et comment l’implémenter en Python !
Dans mon article précédent, j’ai décrit les cas d’utilisation potentiels de l’analyse de survie et présenté tous les éléments de base nécessaires pour comprendre les techniques utilisées pour analyser les données de temps jusqu’à l’événement.
Je continue la série en expliquant peut-être l’approche la plus simple mais la plus perspicace de l’analyse de survie – l’estimateur de Kaplan-Meier. Après une introduction théorique, je vais vous montrer comment effectuer l’analyse en Python en utilisant le populaire lifetimes
bibliothèque.
le Estimateur de Kaplan-Meier (Also connu sous le nom d’estimateur de limite de produit, vous verrez pourquoi plus tard) est une technique non paramétrique d’estimation et de tracé de la probabilité de survie en fonction du temps. C’est souvent la première étape de la réalisation de l’analyse de survie, car c’est l’approche la plus simple et celle qui nécessite le moins d’hypothèses. Pour effectuer l’analyse à l’aide de l’approche de Kaplan-Meier, nous supposons ce qui suit :
- L’événement d’intérêt est sans ambiguïté et se produit à un moment clairement spécifié.
- La probabilité de survie de toutes les observations est la même, peu importe quand elles sont entrées dans l’étude.
- Les observations censurées ont les mêmes perspectives de survie que les observations qui continuent d’être suivies.
Dans des cas réels, nous ne connaissons jamais la véritable fonction de survie. C’est pourquoi avec l’estimateur de Kaplan-Meier, nous approchons la vraie fonction de survie à partir des données collectées. L’estimateur est défini comme la fraction d’observations qui ont survécu pendant un certain temps dans les mêmes circonstances et est donné par la formule suivante :
où:
- t_i est un moment où au moins un événement s’est produit,
- d_i est le nombre d’événements qui se sont produits à l’instant t_i,
- n_i représente le nombre d’individus connus pour avoir survécu jusqu’au temps t_i (ils n’ont pas encore eu l’événement de décès ou ont été censurés). Ou, pour le dire autrement, le nombre d’observations à risque à l’instant t_i.
À partir du symbole du produit dans la formule, nous pouvons voir le lien avec l’autre nom de la méthode, l’estimateur de la limite du produit. La probabilité de survie au moment t est égal au produit du pourcentage de chance de survie au moment t et chaque fois avant.
Ce que nous associons le plus souvent à cette approche de l’analyse de survie et ce que nous voyons généralement dans la pratique, ce sont les Courbes de Kaplan-Meier — un tracé de l’estimateur de Kaplan-Meier dans le temps. Nous pouvons utiliser ces courbes comme un outil exploratoire – pour comparer la fonction de survie entre les cohortes, les groupes qui ont reçu un type de traitement ou non, les clusters comportementaux, etc.
La ligne de survie est en fait une série d’étapes horizontales décroissantes, qui se rapprochent de la forme de la véritable fonction de survie de la population étant donné une taille d’échantillon suffisamment grande. En pratique, le graphique est souvent accompagné d’intervalles de confiance, pour montrer à quel point nous sommes incertains des estimations ponctuelles – de larges intervalles de confiance indiquent une incertitude élevée, probablement due au fait que l’étude ne contient que quelques participants – causée à la fois par les observations qui meurent et qui sont censurées. Pour plus de détails sur le calcul des intervalles de confiance avec la méthode de Greenwood, veuillez consulter [2].
L’interprétation de la courbe de survie est assez simple, l’axe des y représente la probabilité que le sujet n’ait toujours pas vécu l’événement d’intérêt après avoir survécu jusqu’à temps t, représenté sur l’axe des abscisses. Chaque baisse de la fonction de survie (approchée par l’estimateur de Kaplan-Meier) est causée par l’événement d’intérêt qui se produit pour au moins une observation.
La longueur réelle de la ligne verticale représente la fraction des observations à risque qui ont subi l’événement au moment t. Cela signifie qu’une seule observation (pas réellement la même, mais simplement singulière) connaissant l’événement à deux moments différents peut entraîner une diminution de la taille de la différence – en fonction du nombre d’observations à risque. De cette façon, la hauteur de la chute peut également nous informer sur le nombre d’observations à risque (même lorsqu’elles ne sont pas signalées et/ou qu’il n’y a pas d’intervalles de confiance).
Lorsqu’aucune observation n’a connu l’événement d’intérêt ou que certaines observations ont été censurées, il n’y a pas de baisse de la courbe de survie.
Nous avons appris à utiliser l’estimateur de Kaplan-Meier pour approximer la véritable fonction de survie d’une population. Et nous savons que nous pouvons tracer plusieurs courbes pour comparer leurs formes, par exemple, selon le système d’exploitation utilisé par les utilisateurs de notre application mobile. Cependant, nous n’avons toujours pas d’outil qui permette réellement la comparaison. Eh bien, au moins un plus rigoureux que de regarder les courbes.
C’est alors que le test du log-rank entre en jeu. Il s’agit d’un test statistique qui compare les probabilités de survie entre deux groupes (ou plus, pour cela veuillez consulter l’implémentation Python). L’hypothèse nulle du test indique qu’il n’y a pas de différence entre les fonctions de survie des groupes considérés.
Le test du log-rank utilise les mêmes hypothèses que l’estimateur de Kaplan-Meier. De plus, il y a le hypothèse des risques proportionnels — le rapport de risque (voir l’article précédent pour un rappel sur le taux de risque) doit être constant tout au long de la période d’étude. En pratique, cela signifie que le test du log-rank pourrait ne pas être un test approprié si les courbes de survie se croisent. Cependant, c’est toujours un sujet de débat actif, s’il vous plaît voir [4] et [5].
Par souci de brièveté, nous ne couvrons pas les mathématiques derrière le test. Si vous êtes intéressé, veuillez consulter Cet article ou [3].
Dans cette partie, je voulais mentionner certaines des erreurs courantes qui peuvent survenir lors de l’utilisation de l’estimateur de Kaplan-Meier.
Suppression des données censurées
Il peut être tentant de supprimer les données censurées car elles peuvent modifier considérablement la forme de la courbe de Kaplan-Meier, cependant, cela peut entraîner de graves biais, nous devons donc toujours les inclure lors de l’ajustement du modèle.
Interpréter les extrémités des courbes
Portez une attention particulière lors de l’interprétation de la fin des courbes de survie, car toute baisse importante vers la fin de l’étude peut s’expliquer par seulement quelques observations atteignant ce moment (cela devrait également être indiqué par des intervalles de confiance plus larges)
Dichotomisation des variables continues
Par dichotomique Je veux dire utiliser le point de coupure médian ou « optimal » pour créer des groupes tels que « bas » et « élevé » concernant toute mesure continue. Cette approche peut créer plusieurs problèmes :
- Trouver un seuil « optimal » peut être très dépendant de l’ensemble de données et impossible à reproduire dans différentes études. De plus, en faisant des comparaisons multiples, nous risquons d’augmenter les chances de faux positifs (trouver une différence dans les fonctions de survie, alors qu’en réalité il n’y en a pas).
- La dichotomie diminue la puissance du test statistique en forçant toutes les mesures à une valeur binaire, ce qui peut à son tour conduire à la nécessité d’une taille d’échantillon beaucoup plus grande nécessaire pour détecter un effet. Il convient également de mentionner qu’avec l’analyse de survie, la taille d’échantillon requise fait référence au nombre d’observations avec l’événement d’intérêt.
- Lors de la dichotomie, nous faisons de mauvaises hypothèses sur la distribution du risque entre les observations. Supposons que nous utilisons l’âge de 50 ans comme la répartition entre Jeune et vieille les patients. Si nous le faisons, nous supposons qu’un jeune de 18 ans est dans le même groupe à risque qu’un jeune de 49 ans, ce qui n’est pas vrai dans la plupart des cas.
Prise en compte d’un seul prédicteur
L’estimateur de Kaplan-Meier est une méthode univariée, car il se rapproche de la fonction de survie en utilisant au plus une variable/prédicteur. En conséquence, les résultats peuvent être facilement biaisés, soit en exagérant, soit en manquant le signal. Cela est causé par le soi-disant biais de variable omise, ce qui amène l’analyse à supposer que les effets potentiels de plusieurs prédicteurs ne doivent être attribués qu’à un seul, que nous prenons en compte. À cause de ça, des méthodes multivariables telles que la régression de Cox doivent être utilisées à la place.
Il est temps de mettre en pratique ce que nous avons appris. Nous commençons par importer toutes les bibliothèques requises.
Ensuite, nous chargeons le jeu de données et effectuons quelques petites querelles pour le faire fonctionner correctement avec la bibliothèque lifelines. Pour l’analyse, nous utilisons le populaire Taux de désabonnement des clients des télécommunications jeu de données (disponible ici ou sur mon GitHub). L’ensemble de données contient des informations sur les clients d’un fournisseur de services téléphoniques/Internet, y compris leur mandat, le type de services qu’ils utilisent, certaines données démographiques et, finalement, le drapeau indiquant le taux de désabonnement.
Pour cette analyse, nous utilisons les colonnes suivantes :
tenure
— le nombre de mois pendant lesquels le client est resté dans l’entreprise,churn
— informations indiquant si le client s’est retourné (en code binaire : 1 si l’événement s’est produit, 0 sinon),PaymentMethod
— quel type de mode de paiement les clients ont utilisé.
Pour le scénario le plus basique, nous n’avons en fait besoin que du délai d’événement et de l’indicateur indiquant si l’événement qui nous intéresse s’est produit.
le KaplanMeierFitter
fonctionne de manière similaire aux classes connues de scikit-learn
: on instancie d’abord l’objet de la classe puis on utilise le fit
méthode pour ajuster le modèle à nos données. En traçant, on précise at_risk_counts=True
pour afficher en plus des informations sur le nombre d’observations à risque à certains moments.
Normalement, nous serions intéressés par le temps de survie médian, c’est-à-dire le moment où en moyenne 50% de la population est déjà décédée, ou dans ce cas, s’est retournée. Nous pouvons y accéder en utilisant la ligne suivante :
kmf.median_survival_time_
Cependant, dans ce cas, la commande renvoie inf
, comme nous pouvons le voir sur la courbe de survie, nous n’observons en fait pas ce point dans nos données.
Nous avons vu le cas d’utilisation de base, compliquons maintenant l’analyse et traçons les courbes de survie pour chaque variante du mode de paiement. Nous pouvons le faire en exécutant le code suivant :
L’exécution du bloc de code génère le tracé suivant :
On constate que la probabilité de survie est certainement la plus faible pour le chèque électronique, alors que les courbes virement automatique/carte bancaire sont très similaires. C’est le moment idéal pour utiliser le test du log-rank pour voir s’ils sont réellement différents.
Le tableau suivant présente les résultats.
En regardant la valeur p de 0,35, nous pouvons voir qu’il n’y a aucune raison de rejeter l’hypothèse nulle indiquant que les fonctions de survie sont identiques. Pour cet exemple, nous n’avons comparé que deux modes de paiement. Cependant, il y a certainement plus de combinaisons que nous pourrions tester. Il existe une fonction pratique appelée pairwise_logrank_test
, ce qui rend la comparaison très facile.
Dans le tableau, nous voyons la comparaison précédente que nous avons faite, ainsi que toutes les autres combinaisons. Le virement bancaire vs carte bancaire est le seul cas dans lequel il ne faut pas rejeter l’hypothèse nulle. De plus, nous devons être prudents quant à l’interprétation des résultats du test du log-rank, car nous pouvons voir dans le graphique ci-dessus que les courbes des virements bancaires et des paiements par carte de crédit se croisent en fait, de sorte que l’hypothèse des risques proportionnels est violée.
Il y a deux autres choses que nous pouvons facilement tester en utilisant la bibliothèque lifelines. Le premier est le test du log-rank multivarié, dans lequel l’hypothèse nulle stipule que tous les groupes ont le même processus générateur de « mort », donc leurs courbes de survie sont identiques.
Les résultats du test indiquent que nous devrions rejeter l’hypothèse nulle, donc les courbes de survie ne sont pas identiques, ce que nous avons déjà vu dans le graphique.
Enfin, nous pouvons tester la différence de survie à un moment précis. Pour en revenir à l’exemple, dans le graphique, nous pouvons voir que les courbes sont les plus éloignées autour de t = 60. Voyons si cette différence est statistiquement significative.
En regardant la valeur p du test, il n’y a aucune raison de rejeter l’hypothèse nulle indiquant qu’il n’y a pas de différence entre la survie à ce moment-là.
Dans cet article, j’ai décrit un outil très populaire pour effectuer une analyse de survie – l’estimateur de Kaplan-Meier. Nous avons également couvert le test du log-rank pour comparer les fonctions de survie à deux/multiples. L’approche décrite est très populaire, cependant, non sans défauts. Avant de conclure, examinons les avantages et les inconvénients de l’estimateur/des courbes de Kaplan-Meier.
Avantages :
- Donne la vue moyenne de la population, également par groupes.
- Ne nécessite pas beaucoup de fonctionnalités – seulement les informations sur l’heure de l’événement et si l’événement s’est réellement produit. De plus, nous pouvons utiliser toutes les caractéristiques catégorielles décrivant des groupes.
- Gère automatiquement le déséquilibre des classes, car pratiquement n’importe quelle proportion de décès par rapport aux événements censurés est acceptable.
- Comme il s’agit d’une méthode non paramétrique, peu d’hypothèses sont faites sur la distribution sous-jacente des données.
Désavantages:
- Nous ne pouvons pas évaluer l’ampleur de l’impact du prédicteur sur la probabilité de survie.
- Nous ne pouvons pas tenir compte simultanément de plusieurs facteurs pour les observations, par exemple, le pays d’origine et le système d’exploitation du téléphone.
- L’hypothèse d’indépendance entre la censure et la survie (au moment t, les observations censurées doivent avoir le même pronostic que celles sans censure) peuvent être inapplicables/irréalistes.
- Lorsque la distribution sous-jacente des données est (dans une certaine mesure) connue, l’approche n’est pas aussi précise que certaines techniques concurrentes.
En résumé, même avec quelques inconvénients, les courbes de survie de Kaplan-Meier sont un excellent point de départ pour effectuer une analyse de survie. Ce faisant, nous pouvons obtenir des informations précieuses sur les prédicteurs potentiels de la survie et accélérer nos progrès avec des techniques plus avancées (que je décrirai dans de futurs articles).
Vous pouvez trouver le code utilisé pour cet article sur mon GitHub. Comme toujours, tout commentaire constructif est le bienvenu. Vous pouvez me contacter sur Twitter ou dans les commentaires.
Si vous avez trouvé cet article intéressant, vous aimerez peut-être aussi les autres de la série :
[1] Kaplan, E.L., & Meier, P. (1958). estimation non paramétrique des observations incomplètes. Journal de l’association statistique américaine, 53(282), 457–481. – disponible ici
[2] S. Sawyer (2003). Intervalles de confiance Greenwood et Exponential Greenwood dans l’analyse de survie – disponible ici
[3] Courbes de survie de Kaplan-Meier et test du Log-Rank — disponibles ici
[4] Risques non proportionnels — et alors ? – disponible ici
[5] Bouliotis, G., & Billingham, L. (2011). Croisement des courbes de survie : alternatives au test du log-rank. Essais, 12(S1), A137.