Strumenti di analisi di sopravvivenza in Python [chiuso]


46

Mi chiedo se ci sono pacchetti per Python in grado di eseguire analisi di sopravvivenza. Ho usato il pacchetto di sopravvivenza in R ma vorrei trasferire il mio lavoro su Python.


11
Usa Rpy per chiamare R da Python ;-)

2
È estremamente dubbio che gli sviluppatori Python per l'analisi della sopravvivenza abbiano intrapreso lo sforzo ovunque vicino a ciò che Terry Therneau e altri hanno messo nel pacchetto di sopravvivenza R negli ultimi 30 anni, inclusi test approfonditi. Il pacchetto di sopravvivenza è sottoposto alle più rigorose procedure di test che ho visto in statistica.
Frank Harrell,

2
Concordato. Il survivalpacchetto di R è sotto stretto controllo da parte di una grande comunità.
Marc Claesen,

RPy (2 ora) è molto doloroso da installare nella mia esperienza.
Zhubarb,

Risposte:


21

AFAIK, non ci sono pacchetti di analisi di sopravvivenza in Python. Come sopra commentato da mbq, l'unica rotta disponibile sarebbe quella di Rpy .

Anche se fosse disponibile un pacchetto Python puro, starei molto attento a usarlo, in particolare guarderei:

  • Con che frequenza viene aggiornato.
  • Ha una vasta base di utenti?
  • Ha tecniche avanzate?

Uno dei vantaggi di R è che questi pacchetti standard ottengono una quantità enorme di test e feedback degli utenti. Quando si ha a che fare con dati reali, possono insinuarsi casi limite imprevisti.


6
Negli ultimi 5 anni molte cose sono cambiate (in meglio) per Python. Vide risposta di Cam.Davidson.Pilon su Lifelines .
Piotr Migdal

69

Dai un'occhiata al progetto delle linee vita ¹ per un'implementazione semplice e pulita dei modelli di sopravvivenza in Python, incluso

  • Stimatori di funzioni di sopravvivenza
  • Stimatori di curve di rischio cumulative
  • Modello di regressione proporzionale del rischio di Cox
  • Modello di regressione variabile nel tempo di Cox
  • modelli parametrici AFT
  • Il modello di regressione additiva di Aalen
  • Test multivariati

Benefici:

  • costruito sulla cima di Panda
  • Python puro e facile da installare
  • funzioni di tracciamento integrate
  • interfaccia semplice

La documentazione è disponibile qui: documentazione ed esempi

Esempio di utilizzo:

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

Grafici di esempio dalla libreria di stampa integrata:

inserisci qui la descrizione dell'immagine

  1. Disclaimer: sono l'autore principale. Ping me (e-mail nel profilo) per domande o feedback sulle linee vita .

14
(+1) Nome abbastanza intelligente per un pacchetto di sopravvivenza.
Marc Claesen,

8

python-asurv è uno sforzo per portare il software asurv per metodi di sopravvivenza in astronomia. Potrebbe valere la pena tenere d'occhio, ma cgillespie è giusto per le cose a cui fare attenzione: ha una lunga strada da percorrere e lo sviluppo non sembra attivo. (AFAICT esiste un solo metodo e persino completato, il pacchetto potrebbe non essere disponibile, diciamo, per i biostatisti.)

Probabilmente stai meglio usando il pacchetto di sopravvivenza in R da Python attraverso qualcosa come RPy o PypeR . Non ho avuto problemi a farlo da solo.


7

PyIMSL contiene una manciata di routine per le analisi di sopravvivenza. È gratuito come nella birra per uso non commerciale, altrimenti completamente supportato. Dalla documentazione nella Guida dell'utente di Statistics ...

Calcola le stime di Kaplan-Meier delle probabilità di sopravvivenza: kaplanMeierEstimates ()

Analizza i dati di sopravvivenza e affidabilità utilizzando il modello di rischi proporzionali di Cox: propHazardsGenLin ()

Analizza i dati di sopravvivenza usando il modello lineare generalizzato: survivalGlm ()

Stime utilizzando varie modalità parametriche: survivalEstimates ()

Stima una funzione di rischio di affidabilità utilizzando un approccio non parametrico: nonparamHazardRate ()

Produce tabelle di vita di popolazioni e coorti: lifeTables ()


4

Ora puoi usare R da IPython , quindi potresti voler esaminare l'utilizzo di IPython con l'estensione R.


2
Puoi fare un esempio di questo? Sono curioso di provarlo!
user603

Credo che ti riferisca all'interfaccia magica R (che usa rpy2). Anche a me piacerebbe vedere un rapido esempio. (Comprendo che i modelli di sopravvivenza non sono ancora completamente disponibili in statsmodels .)
chl

Non sono troppo sicuro di statsmodels, ma puoi ottenere notebook da Github con esempi delle estensioni C, Octave e R. Devi usare il Notebook per usarli ovviamente, ma sono sicuro che puoi usare lo stesso codice in qualsiasi interfaccia.
Carl Smith,

3
@ user603 Ecco una semplice demo: nbviewer.ipython.org/4383682 ; questo si basa su iPython abbastanza recente, credo.
Shabbychef,

2

Vorrei anche menzionare la sopravvivenza di scikit , che fornisce modelli per l'analisi di sopravvivenza che possono essere facilmente combinati con strumenti di scikit-learn (ad es. Convalida incrociata di KFold).

Al momento della stesura di questo articolo, la sopravvivenza di scikit include implementazioni di

  • Stimatore Nelson-Aalen della funzione di rischio cumulativo.
  • Stimatore di Kaplan-Meier della funzione di sopravvivenza.
  • Modello di rischio proporzionale di Cox con e senza penalità di rete elastica.
  • Modello temporale di errore accelerato.
  • Survival Support Vector Machine.
  • Modello Cox potenziato con gradiente.
  • indice di concordanza per la valutazione delle prestazioni.

scikit-survival è eccellente per le attività legate alla previsione del tempo-evento!
Cam.Davidson.Pilon

1

Oltre a utilizzare Rthrough RPyo equivalenti, ci sono un certo numero di routine di analisi di sopravvivenza nella libreria python statsmodels (precedentemente sicpy.statsmodel). Sono nel pacchetto "sandbox", il che significa che non dovrebbero essere pronti per la produzione in questo momento.

Ad esempio, il modello di rischio proporzionale Cox è codificato qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.