Este artículo proviene de un motor de traducción automática.

C#

Análisis de supervivencia

Zvi Topol

Análisis de supervivencia (SA) es una disciplina de estadísticas que se centra en la estimación de tiempo de eventos. Típicamente aplicaría métodos de análisis de supervivencia en estudios clínicos para ayudar a determinar la eficacia de ciertos medicamentos (tiempo de muerte de pacientes), confiabilidad de sistemas de software (tiempo de falla) y análisis de crédito (tiempo a préstamo por defecto).

Farmacéuticos estudios clínicos que implican a dos grupos de pacientes son un excelente ejemplo de cómo esto puede funcionar. El grupo de control son miembros administró un placebo. Los miembros del grupo de prueba reciben el medicamento experimental contra la enfermedad. Métodos de análisis de supervivencia se aplican para determinar si existe una diferencia estadísticamente significativa en la supervivencia de los pacientes entre los dos grupos. El evento "es hora de" en este caso es el tiempo desde el inicio del estudio hasta los pacientes mueren.

Para exponerlo a usar SA, cubriré conceptos básicos junto con una implementación de C# de un método de estimación usado comúnmente llamado el estimador de Kaplan-Meier. Utilizare un ejemplo real de estimar la probabilidad de supervivencia de las aplicaciones móviles.

Imagina una empresa de desarrollo de software produce dos aplicaciones móviles independientes tituladas X e Y. Cada uno es desarrollado por equipos separados. La firma está deseosa de aprender cómo robusta son las aplicaciones móviles y para determinar si una aplicación es significativamente menos robusta y requiere más esfuerzo para mejorar su confiabilidad.

En un momento dado, puede haber muchas instancias de X e Y vivo y funcionando en dispositivos móviles del cliente. Por lo tanto, una aplicación móvil es lo que es más interesante. Períodos más prolongados para el evento, en este caso, indicará la aplicación es más robusta o tiene mejor capacidad de supervivencia.

En el programa de demostración, primero podrás visualizar los datos de supervivencia para los usos móviles X e Y (ver figura 1). Los datos muestran que ambas aplicaciones son dirigidos por 10 usuarios diferentes con identificaciones que van del cero al nueve. En mi ejemplo, una aplicación puede cualquier accidente (descrito por evento = accidente de app en la captura de pantalla) o haz cerrado por el usuario (descrito por evento = app off). También se registra el día en que se produce el evento.

The Survival Analysis Demo Showing Lifecycle of Mobile Apps
Figura 1 la demostración de análisis de supervivencia con ciclo de vida de aplicaciones móviles

Conceptos básicos de SA

El concepto más básico en SA es la de la función de supervivencia. Esto normalmente se denota por s (t). Si X es una variable aleatoria (una variable cuyos valores son resultados basados en oportunidad) que representa la hora del evento, entonces s (t) = Pr (X > t). En otras palabras, s (t) es la probabilidad de supervivencia después del tiempo t. S(0) se define como 1. La función de supervivencia está relacionada con la función de distribución de toda la vida. Esto normalmente se denota por f (t) y se define como f (t) = Pr (X < = t), en otras palabras, la probabilidad que el evento ocurrió hasta el tiempo t. Por lo tanto, f (t) = 1 – s (t). La función de densidad de evento f (t) se define entonces como dF (t) / dt — la primera derivada de f (t), si f (t) es diferenciable. Por lo tanto, f (t) puede ser considerado como la tasa del evento (por unidad de tiempo).

La función de riesgo, otro concepto básico, es igual a f(t)/S(t) y es el tipo de evento en el tiempo t para las personas que están vivas en el tiempo t.

Puede especificar funciones de supervivencia de forma paramétrica, utilizando una función de explícito o una familia de funciones. Se pueden también deducirlos no paramétrica de los datos existentes, sin tener una forma cerrada parametrizadas. Una especificación de semi-paramétrica, que es una mezcla entre especificación paramétrica y no paramétrica, también es posible. La distribución exponencial es una familia de función parametrizadas simple y popular para describir las funciones de supervivencia debido a sus propiedades matemáticas atractivos.

Por ejemplo, s (t) = exp(-0.05t) es una función de supervivencia de una distribución exponencial de paramterized en figura 2. Las funciones de supervivencia de la forma s (t) = exp(-at) (donde a es un parámetro que controla la tasa de riesgo puede describir esa distribución). La vida útil función de distribución está dada por f (t) = 1 – s (t) = 1 – exp(-at). Figura 2 nos ayuda a visualizar cómo se comportan funciones de supervivencia en el tiempo.

How Survival Functions Behave over Time
Figura 2 Cómo se comportan funciones de supervivencia en el tiempo

Trabajando con un determinado modelo paramétrico, puede utilizar datos reales para estimar los parámetros del modelo. En el caso de la distribución exponencial, es el parámetro de una. Una manera de hacerlo es utilizar métodos de estimación de máxima verosimilitud (MLE), pero eso es otro tema completamente.

Enfocamos sobre la aplicación de un non -­estimación paramétrica para la función de supervivencia. Es decir, no establece un modelo predefinido para la función de supervivencia y estimar los parámetros del modelo. En cambio, podrá derivar la función de supervivencia directamente con los datos observados. Antes de que describo cómo hacer eso, tengo que explicar otro concepto importante de SA llama censura.

Censura ocurre cuando algunas observaciones en el conjunto de datos están incompletos. En algún momento, has perdido la noción del objeto observado. En mi ejemplo, esto significaría que una aplicación móvil terminó su ejecución sin que se caiga (lanzando una excepción fatal). La aplicación fue cerrada con gracia por el usuario. Aunque puede haber otras razones una aplicación terminó sin que se caiga, supondré que una aplicación se bloquea o pone cerrada por el usuario.

Hay dos principales sabores de censura, censura derecha e izquierda censura. Bien censura ocurre cuando se conoce la hora de inicio, pero falta la hora del evento. Censura de izquierda se produce cuando el tiempo del evento está presente, pero falta la hora de salida. Bien censura está ocurriendo en mi ejemplo.

Utilizando el estimador de Kaplan-Meier para estimar la función de supervivencia

El estimador de Kaplan-Meier (KM) es un algoritmo no paramétricas que estima la función de supervivencia. Derivando el estimador KM implica el uso de Matemáticas avanzadas, incluyendo teoría martingala y contando los procesos y está fuera del alcance de este artículo. Implementando el estimador KM, sin embargo, es sencillo y se basa en cuentas.

Considere el estimador KM para la supervivencia de aplicación móvil X de computación. El estimador KM se debe hacer un seguimiento de tres cargos diferentes:

  1. ¿Cuántas instancias de aplicación móvil X están todavía funcionando. Esto se representa mediante la variable riesgo en mi aplicación.
  2. El número de instancias que se han estrellado. Esto se realiza un seguimiento en la variable se estrelló.
  3. El número de casos que terminaron ejecución con gracia. Estos se cuentan utilizando la variable censurada.

Las siguientes líneas de código (para aplicación móvil X) están utilizando la clase CrashMetaData para codificar los datos de supervivencia representados en figura 3:

var appX = new CrashMetaData[] {new CrashMetaData{UserID = 0,
  CrashTime = 1, Crashed = false},
           new CrashMetaData{UserID = 1, 
              CrashTime = 5, Crashed = true}, 
           new CrashMetaData{UserID = 2, 
              CrashTime = 5, Crashed = false},
           new CrashMetaData{UserID = 3, 
              CrashTime = 8, Crashed = false},
           new CrashMetaData{UserID = 4, 
              CrashTime = 10, Crashed = false},
           new CrashMetaData{UserID = 5, 
              CrashTime = 12, Crashed = true},
           new CrashMetaData{UserID = 6, 
              CrashTime = 15, Crashed = false},
           new CrashMetaData{UserID = 7, 
              CrashTime = 18, Crashed = true},
           new CrashMetaData{UserID = 8, 
              CrashTime = 21, Crashed = false},
           new CrashMetaData{UserID = 9, 
              CrashTime = 22, Crashed = true}};

Figura 3 los datos de supervivencia de aplicación móvil X

ID de usuario Días Se estrelló Censurados
0 1   X
1 5 X  
2 5   X
3 8   X
4 10   X
5 12 X  
6 15   X
7 18 X  
8 21   X
9 22 X  

Los datos de supervivencia contienen la hora del evento en días (codificadas por el CrashTime) e información sobre si el evento se refiere a una aplicación de choque o censura. Si Crashed es igual a true, la aplicación se estrelló. De lo contrario, la aplicación cerrada con gracia (en otras palabras, fue censurado). Además, un campo de ID de usuario está siguiendo el ejemplo de la aplicación.

El estimador KM está implementado en el método EstimateKaplanMeier. Esto divide los datos que no se superponen diferentes intervalos de tiempo basados en períodos de tiempo a los acontecimientos (en mi caso es un desplome de aplicación). Realiza un seguimiento de las cuentas en cada intervalo.

Es importante tener en cuenta la cuenta de Cuántas aplicaciones están todavía arriba y corriendo se realiza justo antes del evento (esto es debido a la formulación matemática de contar los procesos). Así en el primer intervalo en mi ejemplo, que cubre de 0 a 5 días, 9 fuera de los 10 casos fueron arriba y corriendo justo antes del día 5 (una instancia terminó corriendo al tiempo 1). En el intervalo hasta e incluyendo el día 5, tuve un accidente (que define el intervalo) y 2 casos de acabado (los días 1 y 5). Consulte la figura 4.

Day Intervals Created by the KM Estimator
Figura 4 día intervalos creados por el estimador KM

La estimación KM para la función de supervivencia es entonces el producto sobre todos los intervalos diferentes de supervivencia derivados de las cuentas en las particiones:

1 – (se estrelló en intervalo) / (aquellos en riesgo justo antes del final del intervalo)

El método EstimateKapalanMeier devuelve un objeto de clase SurvivalCurve. Esto representa la función de supervivencia estimada. La salida es una función escalón. Cada paso es el valor de la función de supervivencia en un intervalo correspondiente (según lo estimado por el estimador KM). Figura 5 incluye parte de la producción de programa de demostración de análisis de supervivencia correspondiente al objeto SurvivalCurve (para ambas aplicaciones X e Y).

Survival Analysis Demo Output for KM Estimates for Applications X and Y
Figura 5 supervivencia análisis Demo salida para las estimaciones KM para aplicaciones de X e Y

Figura 6 incluye una parcela de la función de supervivencia paso estimada para aplicación móvil X. En la trama, cortas líneas verticales en cada paso denotan varias apariciones del evento accidente durante el intervalo correspondiente al paso.

KM Estimate of the Survival Function for Mobile Application X
Figura 6 KM estimación de la función de supervivencia para aplicación móvil X

Entonces puede usar la estimación para inferir el tiempo de supervivencia media, o el tiempo por el cual la mitad de la instancia estará viva. Esto debe ocurrir en algún momento en el tiempo entre los días 12 (donde la estimación de la probabilidad de supervivencia es 0.711 > 0,5) y 18 (donde la probabilidad de supervivencia es 0.474 < 0.5). Existen algunos enfoques en la literatura de SA que describe cómo calcular exactamente esta cantidad, porque normalmente cae entre dos pasos.

Podrá definir el tiempo de supervivencia media como el tiempo de supervivencia mínima para que la función de supervivencia es inferior a 0,5, que para la aplicación móvil X se traduce en un tiempo de supervivencia media de 18 días. La interpretación de esta cantidad es durante el día 18, la mitad de los casos móviles aplicación X caída y la estancia media para arriba y corriendo. Esta aplicación calcula el tiempo de supervivencia mediana en el método GetMedianSurvivalTime.

Otra pregunta que usted puede contestar usando las estimaciones KM es si existe una diferencia en la supervivencia de las diferentes aplicaciones de dos (o más). Una forma de abordar esta cuestión es para representar visualmente las estimaciones KM correspondientes a cada aplicación. Este tipo de trama se describe en figura 7y compara las funciones de supervivencia estimada de aplicaciones X e Y.

KM Estimates for Mobile Applications X and Y
Figura 7 KM estimaciones para aplicaciones móviles X e Y

La curva verde representa la función de aplicación X la supervivencia y la curva azul representa la función de aplicación Y la supervivencia.

De la parcela, puedes ver que la función de supervivencia de aplicación X encabeza la función de aplicación Y de supervivencia. Por lo tanto, se puede inferir tiene mejor capacidad de supervivencia de aplicación Y aplicación X y, por lo tanto, es más robusto.

Mientras que la visualización de funciones de supervivencia puede ayudar en la determinación de las diferencias de supervivencia, algunos casos no son tan claros. Afortunadamente, hay un enfoque estadístico para detectar diferencias de una manera formal y rigurosa, llamado el Log Rank Test. Este es un algoritmo que comprueba si hay una diferencia significativa entre las distribuciones de supervivencia de dos (o más) de una manera no paramétrica. La literatura SA incluye una detallada discusión sobre esto y más bibliotecas estadísticas SA incluyen implementaciones de Log Rank test.

Cabe destacar que hay otro popular algoritmo para calcular la función de supervivencia de forma no paramétrica llamada el estimador de Nelson-Aalen (NA). El NA estima la función de riesgo acumulada desde los datos de supervivencia. Entonces puede derivar la función de supervivencia de esta estimación usando una fórmula matemática que lo une a la función de riesgo acumulada. Puedes encontrar más detalles acerca de este estimador en la literatura de SA.

En resumen

Que he introducido la terminología y conceptos básicos de la rama estadística de análisis de supervivencia. Le mostré cómo implementar el estimador no paramétrico de Kaplan-Meier y había aplicado a un ejemplo comparando la robustez de las aplicaciones móviles. Este estimador puede ayudar a determinar si existe una diferencia en la supervivencia de las dos aplicaciones. También mencioné una rigurosa prueba estadística para buscar las diferencias, llamadas el Log Rank test. Otra cantidad que obtuve utilizando el estimador KM es el tiempo de supervivencia media, que también apunta a diferencias de supervivencia entre aplicaciones X y Y.

Por último, he mencionado el estimador de Nelson-Aalen como método alternativo no paramétrica para la estimación de la función de supervivencia. Aunque directamente no estimar la función de supervivencia como el estimador KM, bastante estima la función de riesgo acumulada. Entonces puede derivar la función de supervivencia de la función de riesgo acumulada.

Esto sólo araña la superficie del campo rico de SA. Las aplicaciones abarcan las áreas de medicina a la ingeniería y cuyos métodos y algoritmos se implementan en muchos paquetes estadísticos. Con la proliferación de aplicaciones móviles y Software como un implementaciones empresariales de servicio, preveo métodos SA pueden desempeñar un papel en la supervisión y mejora de la calidad de esos despliegues.

Zvi Topol funciona como un científico senior en marketing analytics en Nueva York. Diseña y aplica algoritmos de optimización no lineal a gran escala y métodos estadísticos para mejorar la planificación de marketing para las grandes compañías Fortune 500.

Gracias al siguiente experto técnico por su ayuda en la revisión de este artículo: Dr. James McCaffrey (Microsoft Research)