Outils d'analyse de survie en Python [fermé]

46

Je me demande s’il existe des packages pour Python capables d’effectuer une analyse de survie. J'utilisais le paquet de survie dans R mais j'aimerais porter mon travail en python.

MarkSAlen
la source
11
Utilisez Rpy pour appeler R depuis Python ;-)
2
Il est extrêmement douteux que les développeurs Python pour l'analyse de la survie aient déployé des efforts similaires à ce que Terry Therneau et d'autres ont mis dans le programme de survie de R au cours des 30 dernières années, y compris des tests approfondis. Le paquet de survie subit les procédures de test les plus rigoureuses que j'ai vues dans les statistiques.
Frank Harrell
2
D'accord. Le survivalpaquet de R est examiné de près par une grande communauté.
Marc Claesen
RPy (2 maintenant) est très pénible à installer dans mon expérience.
Zhubarb

Réponses:

21

Autant que je sache, il n’existe aucun logiciel d’analyse de survie en python. Comme le commente mbq ci-dessus, le seul itinéraire disponible serait celui de Rpy .

Même si un paquet pur en python était disponible, je le ferais avec une grande prudence, en particulier:

  • À quelle fréquence est-il mis à jour?
  • At-il une base d'utilisateurs importante?
  • At-il des techniques avancées?

L'un des avantages de R est que ces packages standard font l'objet de nombreux tests et commentaires de la part des utilisateurs. Lorsqu’il s’agit de données réelles, des cas inattendus peuvent se glisser.

csgillespie
la source
6
Au cours des 5 dernières années, beaucoup de choses ont changé (pour le meilleur) pour Python. Vide réponse par Cam.Davidson.Pilon sur Lifelines .
Piotr Migdal
69

Découvrez le projet Llines ¹ pour une implémentation simple et propre des modèles de survie en Python, y compris

  • Estimateurs de fonctions de survie
  • Estimateurs de courbes de risque cumulatif
  • Modèle de régression du risque proportionnel de Cox
  • Modèle de régression variable de Cox
  • modèles AFT paramétriques
  • Le modèle de régression additif d'Aalen
  • Test multivarié

Avantages:

  • construit sur le dessus des pandas
  • pur Python & facile à installer
  • fonctions de traçage intégrées
  • interface simple

La documentation est disponible ici: documentation et exemples

Exemple d'utilisation:

from lifelines import KaplanMeierFitter

survival_times = np.array([0., 3., 4.5, 10., 1.])
events = np.array([False, True, True, False, True])

kmf = KaplanMeierFitter()
kmf.fit(survival_times, event_observed=events)

print(kmf.survival_function_)
print(kmf.median_)
kmf.plot()

Exemples de graphiques de la bibliothèque de graphiques intégrée:

entrez la description de l'image ici

  1. Disclaimer: Je suis l'auteur principal. Envoyez-moi une requête ping (email dans le profil) pour des questions ou des commentaires sur les lignes de vie .
Cam.Davidson.Pilon
la source
14
(+1) Nom assez astucieux pour un paquet de survie.
Marc Claesen
8

python-asurv est un effort pour porter le logiciel asurv pour les méthodes de survie en astronomie. Cgillespie a raison sur tous les points à surveiller: le chemin à parcourir est long et le développement ne semble pas être actif. (AFAICT n’existe qu’une seule méthode, elle est même terminée, l’ensemble peut manquer pour les biostatisticiens.)

Vous feriez probablement mieux d'utiliser le package de survie en R de Python via quelque chose comme RPy ou PypeR . Je n'ai eu aucun problème à le faire moi-même.

ars
la source
7

PyIMSL contient une poignée de routines pour les analyses de survie. C'est gratuit comme dans la bière pour une utilisation non commerciale, entièrement pris en charge autrement. De la documentation dans le Guide de l'utilisateur de la statistique ...

Calcule des estimations de Kaplan-Meier des probabilités de survie: kaplanMeierEstimates ()

Analyse les données de survie et de fiabilité à l'aide du modèle des risques proportionnels de Cox: propHazardsGenLin ()

Analyse les données de survie à l'aide du modèle linéaire généralisé: survivalGlm ()

Estimations à l'aide de divers modes paramétriques: survivalEstimates ()

Estime une fonction de risque de fiabilité utilisant une approche non paramétrique: nonparamHazardRate ()

Produit des tables de mortalité des populations et des cohortes: lifeTables ()

Josh Hemann
la source
4

Vous pouvez maintenant utiliser R depuis IPython . Vous voudrez peut-être utiliser IPython avec l'extension R.

Carl Smith
la source
2
Pouvez-vous donner un exemple de cela? Je suis curieux de l'essayer!
user603
Je crois que vous faites référence à l' interface magique R (qui utilise rpy2). Moi aussi j'aimerais voir un exemple rapide. (D'après ce que j'ai compris, les modèles de survie ne sont pas encore totalement disponibles dans les modèles de statistiques .)
chl
Je ne suis pas trop sûr des statsmodels, mais vous pouvez obtenir des cahiers de github avec des exemples d' extensions C, Octave et R. Vous devez évidemment utiliser le Bloc-notes pour les utiliser, mais je suis sûr que vous pouvez utiliser le même code dans n'importe quelle interface.
Carl Smith
3
@ user603 Voici une démonstration simple: nbviewer.ipython.org/4383682 ; cela repose sur un iPython assez récent, je crois.
Shabbychef
2

Je souhaite également mentionner scikit-survival , qui fournit des modèles d'analyse de survie pouvant être facilement combinés avec des outils de scikit-learn (par exemple, la validation croisée KFold).

À la date de rédaction de ce document, scikit-survival inclut des implémentations de

  • Estimateur Nelson-Aalen de la fonction de risque cumulatif.
  • Estimateur de Kaplan-Meier de la fonction de survie.
  • Modèle de risque proportionnel de Cox avec et sans pénalité nette élastique.
  • Modèle de temps de défaillance accéléré.
  • Machine à vecteurs de soutien à la survie.
  • Modèle de Cox renforcé par gradient.
  • indice de concordance pour l'évaluation de la performance.
sebp
la source
La survie de scikit est excellente pour les tâches liées à la prévision du temps avant événement!
Cam.Davidson.Pilon
1

Outre l'utilisation de Rthrough RPyou l'équivalent, il existe un certain nombre de routines d'analyse de survie dans la bibliothèque statsmodels (anciennement sicpy.statsmodel) python. Ils sont cependant dans le paquet "sandbox", ce qui signifie qu'ils ne sont pas censés être prêts pour la production pour le moment.

Par exemple, vous avez le modèle de Cox du risque proportionnel codé ici .

ODDsKooL
la source