> Modules non standards > Scikit-Learn > Analyse de survie
Analyse de survie
On peut utiliser pour cela le package scikit-survival
Estimation de Kaplan-Meier :
- on part de données avec censoring (right censoring) :
- statuses : array 1d avec True si l'événement a été observé, False si l'événement n'a pas été observé (c'est à dire avec censoring).
- eventTimes : array 1d avec les valeurs numériques des temps des événements (dans l'unité choisie)
from sksurv.nonparametric import kaplan_meier_estimator
times, survivalProb, confInt = kaplan_meier_estimator(statuses, eventTimes, conf_type = 'log-log', conf_level = 0.95)
plt.step(times, survivalProb, where = "post")
plt.fill_between(times, confInt[0], confInt[1], alpha = 0.25, step = "post")
- times sont les temps des événements pour tracer la courbe.
- survivalProb sont les probabilités de survie aux temps correspondants, pour tracer la courbe de survie.
- confInt sont les intervalles de confiance : array 2d 2 x nombre de temps.
- alpha : juste pour la transparence, rien à voir avec les stats.
log rank test :
- on part de données avec censoring :
- myStatusTimes : une structured array avec pour chaque élément une paire (booléen, numérique) pour les champs censoring et temps, respectivement.
- construction de la structured array à partir de 2 listes séparées pour le censoring status (booléen) et les temps times : data2 = numpy.array([(status[i], times[i]) for i in range(len(status))], dtype = [('status', '?'), ('time', '<f8')])
- myGroups est une array 1d de même taille que myStatusTimes qui contient les groupes à comparer (2 groupes ou plus)
from sksurv.compare import compare_survival
chisq, pvalue, stats, covariance = compare_survival(myStatusTimes, myGroups, return_stats = True)
- pvalue est la p-value de l'hypothèse nulle : pas de différence entre les groupes.
- stats est un résumé des statistiques par groupe.
Modèle de Cox Proportional Hazard :
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert