Überlebensanalyse-Tools in Python [geschlossen]


46

Ich frage mich, ob es Pakete für Python gibt, die Überlebensanalysen durchführen können. Ich habe das Überlebenspaket in R verwendet, möchte aber meine Arbeit auf Python portieren.


11
Benutze Rpy, um R von Python aus

2
Es ist äußerst zweifelhaft, dass die Python-Entwickler für die Überlebensanalyse in der Nähe dessen gearbeitet haben, was Terry Therneau und andere in den letzten 30 Jahren in das R-Überlebenspaket gesteckt haben, einschließlich umfangreicher Tests. Das Überlebenspaket wird den strengsten Testverfahren unterzogen, die ich in der Statistik gesehen habe.
Frank Harrell

2
Einverstanden. Das survivalPaket von R wird von einer großen Community genauestens geprüft.
Marc Claesen

RPy (2 now) ist meiner Erfahrung nach sehr schmerzhaft zu installieren.
Zhubarb

Antworten:


21

AFAIK, es gibt keine Überlebensanalyse-Pakete in Python. Wie mbq oben ausführt, ist die einzige Route, die verfügbar ist, Rpy .

Selbst wenn ein reines Python-Paket verfügbar wäre, würde ich es sehr vorsichtig verwenden, insbesondere würde ich Folgendes betrachten:

  • Wie oft wird es aktualisiert?
  • Hat es eine große Nutzerbasis?
  • Hat es fortgeschrittene Techniken?

Einer der Vorteile von R ist, dass diese Standardpakete eine enorme Menge an Tests und Benutzerrückmeldungen erhalten. Beim Umgang mit realen Daten können sich unerwartete Randfälle einschleichen.


6
In den letzten 5 Jahren hat sich (zum Besseren) vieles für Python geändert. Vide Antwort von Cam.Davidson.Pilon auf Lifelines .
Piotr Migdal

69

Schauen Sie sich das Projekt Lifelines¹ an , um eine einfache und übersichtliche Implementierung von Überlebensmodellen in Python zu erhalten, einschließlich

  • Schätzer von Überlebensfunktionen
  • Schätzer der kumulativen Gefahrenkurven
  • Cox Proportional Hazard Regressionsmodell
  • Cox 'zeitvariables Regressionsmodell
  • parametrische AFT-Modelle
  • Das additive Regressionsmodell von Aalen
  • Multivariates Testen

Leistungen:

  • auf Pandas gebaut
  • reines Python & einfach zu installieren
  • eingebaute Plotterfunktionen
  • einfache Schnittstelle

Die Dokumentation finden Sie hier: Dokumentation und Beispiele

Anwendungsbeispiel:

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()

Beispieldiagramme aus der integrierten Diagrammbibliothek:

Bildbeschreibung hier eingeben

  1. Haftungsausschluss: Ich bin der Hauptautor. Pingen Sie mich an (E-Mail im Profil), wenn Sie Fragen oder Feedback zu Lebensadern haben .

14
(+1) Ziemlich kluger Name für ein Überlebenspaket.
Marc Claesen

8

python-asurv ist ein Versuch, die asurv- Software für Überlebensmethoden in der Astronomie zu portieren . Es könnte sich lohnen, ein Auge darauf zu werfen, aber cgillespie hat Recht mit den Dingen, auf die man achten muss: Es ist noch ein langer Weg, und die Entwicklung scheint nicht aktiv zu sein. (AFAICT gibt es nur eine Methode, die sogar vollständig ist. Das Paket kann beispielsweise für Biostatisten fehlen.)

Sie sind wahrscheinlich besser dran, das Überlebenspaket in R von Python über RPy oder PypeR zu verwenden . Ich hatte selbst keine Probleme damit.


7

PyIMSL enthält eine Handvoll Routinen für Überlebensanalysen. Es ist kostenlos wie in Beer für nicht-kommerzielle Zwecke, ansonsten wird es voll unterstützt. Aus der Dokumentation im Statistics User Guide ...

Berechnet Kaplan-Meier-Schätzungen der Überlebenswahrscheinlichkeiten: kaplanMeierEstimates ()

Analysiert Überlebens- und Zuverlässigkeitsdaten mit dem proportionalen Gefährdungsmodell von Cox: propHazardsGenLin ()

Analysiert Überlebensdaten mit dem verallgemeinerten linearen Modell: survivalGlm ()

Schätzungen mit verschiedenen parametrischen Modi: survivalEstimates ()

Schätzt eine Zuverlässigkeitsrisiko-Funktion mithilfe eines nichtparametrischen Ansatzes: nonparamHazardRate ()

Produziert Populations- und Kohorten-Lebenstabellen: lifeTables ()


4

Sie können R jetzt in IPython verwenden . Unter Umständen möchten Sie IPython mit der Erweiterung R verwenden.


2
Können Sie ein Beispiel dafür geben? Ich bin gespannt darauf, es auszuprobieren!
User603

Ich glaube, Sie beziehen sich auf R Magic Interface (welches verwendet rpy2). Auch ich würde gerne ein kurzes Beispiel sehen. (Meines Wissens sind Überlebensmodelle in Statistikmodellen noch nicht vollständig verfügbar .)
chl

Ich bin mir bei den Statistikmodellen nicht sicher, aber Sie können Notebooks von Github mit Beispielen für die Erweiterungen C, Octave und R erhalten . Sie müssen das Notizbuch ausführen, um sie offensichtlich zu verwenden, aber ich bin sicher, dass Sie denselben Code in jeder Schnittstelle verwenden können.
Carl Smith

3
@ user603 Hier ist eine einfache Demo: nbviewer.ipython.org/4383682 ; Ich glaube, dies basiert auf relativ neuem iPython.
Shabbychef

2

Ich möchte auch scikit-survival erwähnen , das Modelle für die Überlebensanalyse bereitstellt, die leicht mit Werkzeugen von scikit-learn kombiniert werden können (z. B. KFold-Kreuzvalidierung).

Zum jetzigen Zeitpunkt umfasst Scikit-Survival Implementierungen von

  • Nelson-Aalen-Schätzer der kumulativen Gefahrenfunktion.
  • Kaplan-Meier-Schätzer der Überlebensfunktion.
  • Cox Proportional Hazard-Modell mit und ohne elastische Netzstrafe.
  • Modell der beschleunigten Ausfallzeit.
  • Überlebensunterstützungs-Vektor-Maschine.
  • Steigungsverstärktes Cox-Modell.
  • Konkordanzindex für die Leistungsbewertung.

scikit-survival eignet sich hervorragend für Aufgaben im Zusammenhang mit der Vorhersage von Ereignissen!
Cam.Davidson.Pilon

1

Abgesehen von der Verwendung von RThrough - RPyoder Äquivalenten gibt es in den Statistikmodellen eine Reihe von Überlebensanalyseroutinen (frühersicpy.statsmodel ). Sie befinden sich jedoch im "Sandbox" -Paket, was bedeutet, dass sie derzeit nicht für die Produktion bereit sind.

ZB haben Sie das Cox-Modell der proportionalen Gefahr, das hier kodiert wird .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.