Herramientas de análisis de supervivencia en Python [cerrado]


46

Me pregunto si hay paquetes para Python que sean capaces de realizar análisis de supervivencia. He estado usando el paquete de supervivencia en R pero me gustaría portar mi trabajo a Python.


11
Use Rpy para llamar a R desde Python ;-)

2
Es extremadamente dudoso que los desarrolladores de Python para el análisis de supervivencia se hayan esforzado en cualquier lugar cerca de lo que Terry Therneau y otros han puesto en el paquete de supervivencia R en los últimos 30 años, incluidas las pruebas exhaustivas. El paquete de supervivencia se somete a los procedimientos de prueba más rigurosos que he visto en las estadísticas.
Frank Harrell

2
Convenido. El survivalpaquete de R está bajo escrutinio minucioso por parte de una gran comunidad.
Marc Claesen

RPy (2 ahora) es muy doloroso de instalar en mi experiencia.
Zhubarb

Respuestas:


21

AFAIK, no hay paquetes de análisis de supervivencia en python. Como comenta mbq anteriormente, la única ruta disponible sería a Rpy .

Incluso si hubiera un paquete de Python puro disponible, sería muy cuidadoso al usarlo, en particular miraría:

  • ¿Con qué frecuencia se actualiza?
  • ¿Tiene una gran base de usuarios?
  • ¿Tiene técnicas avanzadas?

Uno de los beneficios de R es que estos paquetes estándar reciben una gran cantidad de pruebas y comentarios de los usuarios. Cuando se trata de datos reales, pueden aparecer casos inesperados.


66
En los últimos 5 años, muchas cosas cambiaron (para mejor) para Python. Vide la respuesta de Cam.Davidson.Pilon en Lifelines .
Piotr Migdal

69

Echa un vistazo a las líneas de vida del proyecto ¹ para una implementación sencilla y limpia de los modelos de supervivencia en Python, incluyendo

  • Estimadores de funciones de supervivencia.
  • Estimadores de curvas de riesgo acumulativo
  • Modelo de regresión de riesgos proporcionales de Cox
  • Modelo de regresión variable en el tiempo de Cox
  • modelos AFT paramétricos
  • Modelo de regresión aditiva de Aalen
  • Prueba multivariante

Beneficios:

  • construido sobre pandas
  • Python puro y fácil de instalar
  • construido en funciones de trazado
  • interfaz simple

La documentación está disponible aquí: documentación y ejemplos.

Ejemplo de uso:

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

Gráficos de ejemplo de la biblioteca de trazado integrada:

ingrese la descripción de la imagen aquí

  1. Descargo de responsabilidad: soy el autor principal. Envíame un correo electrónico (perfil de correo electrónico) para preguntas o comentarios sobre líneas de vida .

14
(+1) Nombre bastante inteligente para un paquete de supervivencia.
Marc Claesen

8

python-asurv es un esfuerzo para portar el software asurv para métodos de supervivencia en astronomía. Puede valer la pena vigilar, pero cgillespie tiene razón sobre las cosas a tener en cuenta: tiene un largo camino por recorrer y el desarrollo no parece estar activo. (AFAICT solo existe un método e incluso completado, el paquete puede faltar para, por ejemplo, bioestadísticos)

Probablemente sea mejor usar el paquete de supervivencia en R de Python a través de algo como RPy o PypeR . No he tenido ningún problema para hacer esto yo mismo.


7

PyIMSL contiene un puñado de rutinas para análisis de supervivencia. Es gratis como en cerveza para uso no comercial, totalmente compatible de lo contrario. De la documentación en la Guía del usuario de estadísticas ...

Calcula las estimaciones de Kaplan-Meier de las probabilidades de supervivencia: kaplanMeierEstimates ()

Analiza los datos de supervivencia y confiabilidad utilizando el modelo de riesgos proporcionales de Cox: propHazardsGenLin ()

Analiza los datos de supervivencia utilizando el modelo lineal generalizado: survivalGlm ()

Estimaciones utilizando varios modos paramétricos: survivalEstimates ()

Estima una función de riesgo de confiabilidad utilizando un enfoque no paramétrico: nonparamHazardRate ()

Produce tablas de vida de poblaciones y cohortes: lifeTables ()


4

Ahora puede usar R desde IPython , por lo que puede considerar usar IPython con la extensión R.


2
¿Puedes dar un ejemplo de esto? Tengo curiosidad por probarlo!
user603

Creo que te refieres a la interfaz mágica R (que usa rpy2). A mí también me encantaría ver un ejemplo rápido. (Tengo entendido que los modelos de supervivencia aún no están completamente disponibles en modelos de estadísticas .)
CHL

No estoy muy seguro acerca de statsmodels, pero puedes obtener cuadernos de github con ejemplos de las extensiones C, Octave y R. Necesitas ejecutar el Notebook para usarlos obviamente, pero estoy seguro de que puedes usar el mismo código en cualquier interfaz.
Carl Smith

3
@ user603 Aquí hay una demostración simple: nbviewer.ipython.org/4383682 ; Esto se basa en iPython bastante reciente, creo.
shabbychef

2

También quiero mencionar scikit-survival , que proporciona modelos para el análisis de supervivencia que se pueden combinar fácilmente con herramientas de scikit-learn (por ejemplo, KFold validación cruzada).

Al momento de escribir este artículo, scikit-survival incluye implementaciones de

  • Estimador de Nelson-Aalen de la función de riesgo acumulativo.
  • Estimador de Kaplan-Meier de la función de supervivencia.
  • Modelo de riesgo proporcional de Cox con y sin penalización neta elástica.
  • Modelo de tiempo de falla acelerado.
  • Máquina de vectores de soporte de supervivencia.
  • Modelo de Cox potenciado por gradiente.
  • índice de concordancia para la evaluación del desempeño.

¡scikit-survival es excelente para tareas relacionadas con la predicción del tiempo hasta el evento!
Cam.Davidson.Pilon

1

Además de usar a Rtravés RPyo equivalente, hay una serie de rutinas de análisis de supervivencia en la biblioteca python de statsmodels (anteriormente sicpy.statsmodel). Sin embargo, están en el paquete "sandbox", lo que significa que no se supone que estén listos para la producción en este momento.

Por ejemplo, tiene el modelo Cox de riesgo proporcional codificado aquí .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.