Análisis de supervivencia Cuando nadie muere: un enfoque basado en el valor

Se utiliza un enfoque estadístico para responder a la pregunta: “¿Cuánto durará algo?” Ese “algo” podría variar desde la vida útil de un paciente hasta la durabilidad de un componente de la máquina o la duración de la suscripción de un usuario.

Una de las herramientas más utilizadas en esta área es la Estimador de Kaplan-Meier.

Nacido en el mundo de la biología, Kaplan-Meier hizo su debut rastreando la vida y la muerte. Pero como cualquier algoritmo de celebridades verdadero, no se quedó en su carril. En estos días, aparece en los paneles de negocios, los equipos de marketing y los análisis de rotación en todas partes.

Pero aquí está la captura: los negocios no son biología. Es desordenado, impredecible y lleno de giros de la trama. Es por eso que hay un par de problemas que dificultan nuestras vidas cuando tratamos de usar el análisis de supervivencia en el mundo de los negocios.

En primer lugar, generalmente no solo estamos interesados ​​en si un cliente ha “sobrevivido” (lo que sea que la supervivencia pueda significar en este contexto), sino más bien en cuánto del valor económico de ese individuo ha sobrevivido.

En segundo lugar, contrario a la biología, Es muy posible que los clientes “mueran” y “resuciten” varias veces (Piense en cuándo se da de baja/vuelve a suscribirse a un servicio en línea).

En este artículo, veremos cómo extender el enfoque clásico de Kaplan-Meier para que se adapte mejor a nuestras necesidades: modelar un valor continuo (económico) en lugar de uno binario (vida/muerte) y permitir “resurrecciones”.

Un repaso sobre el estimador de Kaplan-Meier

Hagamos una pausa y rebobinemos por un segundo. Antes de comenzar a personalizar Kaplan-Meier para que se ajusten a nuestras necesidades comerciales, necesitamos una actualización rápida sobre cómo funciona la versión clásica.

Supongamos que tenía 3 sujetos (digamos ratones de laboratorio) y les dio un medicamento que necesita probar. El medicamento se dio en diferentes momentos en el tiempo: sujeto a lo recibió en enero, sujeto b en abril y sujeto do En Mayo.

Entonces, mides cuánto tiempo sobreviven. Sujeto a murió después de 6 meses, sujeto do después de 4 meses y sujeto b sigue vivo en el momento del análisis (noviembre).

Gráficamente, podemos representar los 3 sujetos de la siguiente manera:

[Image by Author]

Ahora, Incluso si quisiéramos medir una métrica simple, como la supervivencia promedio, enfrentaríamos un problema. De hecho, no sabemos cuánto tiempo sujeto b Sobrevivirá, ya que todavía está vivo hoy.

Este es un problema clásico en estadísticas, y se llama “Censura correcta“.

La censura correcta es el disco de estadísticas para “No sabemos qué sucedió después de cierto punto” y es un gran problema en el análisis de supervivencia. Tan grande que es condujo al desarrollo de uno de los estimadores más emblemáticos en la historia estadística: el estimador de Kaplan-Meierllamado así por el dúo que lo presentó en la década de 1950.

Entonces, ¿cómo maneja Kaplan-Meier nuestro problema?

Primero, alineamos los relojes. Incluso si nuestros ratones fueron tratados en diferentes momentos, Lo que importa es tiempo desde el tratamiento. Entonces reiniciamos el incógnita-Axis a cero para todos: el día cero es el día en que obtuvieron la droga.

[Image by Author]

Ahora que todos estamos en la misma línea de tiempo, queremos construir algo útil: un curva de supervivencia agregada. Esta curva nos dice la probabilidad de que un típico El ratón en nuestro grupo sobrevivirá al menos incógnita meses después del tratamiento.

Sigamos juntos la lógica.

  • Hasta el tiempo 3? Todos todavía están vivos. Entonces supervivencia = 100%. Fácil.
  • En el momento 4, mouse do muere. Esto significa que de los 3 ratones, solo 2 de ellos sobrevivieron después del tiempo 4. Eso nos da una tasa de supervivencia del 67% en el tiempo 4.
  • Luego en el momento 6, mouse a comprobe. De los 2 ratones que habían llegado al tiempo 6, solo 1 sobrevivió, por lo que la tasa de supervivencia del tiempo 5 al 6 es del 50%. Multiplique eso por el 67% anterior, y obtenemos el 33% de supervivencia hasta el tiempo 6.
  • Después del tiempo 7, no tenemos otros sujetos que sean observados vivos, por lo que la curva tiene que detenerse aquí.

Entriquemos estos resultados:

[Image by Author]

Dado que el código a menudo es más fácil de entender que las palabras, traduzcamos esto a Python. Tenemos las siguientes variables:

  • kaplan_meieruna matriz que contiene las estimaciones de Kaplan-Meier para cada punto en el tiempo, por ejemplo, la probabilidad de supervivencia hasta el tiempo T.
  • obs_tuna matriz que nos dice si se observa un individuo (por ejemplo, no censurado a la derecha) en el momento T.
  • surv_tmatriz booleana que nos dice si cada individuo está vivo a la vez T.
  • surv_t_minus_1matriz booleana que nos dice si cada individuo está vivo a la vez T-1.

Todo lo que tenemos que hacer es llevar a todas las personas observadas Tcalcule su tasa de supervivencia de T-1 a T (survival_rate_t), y multiplíquelo por la tasa de supervivencia hasta el tiempo T-1 (km[t-1]) para obtener la tasa de supervivencia hasta el tiempo T (km[t]). En otras palabras,

survival_rate_t = surv_t[obs_t].sum() / surv_t_minus_1[obs_t].sum()

kaplan_meier[t] = kaplan_meier[t-1] * survival_rate_t

donde, por supuesto, el punto de partida es kaplan_meier[0] = 1.

Si no desea codificar esto desde cero, el algoritmo Kaplan-Meier está disponible en la biblioteca de Python lifelinesy se puede usar de la siguiente manera:

from lifelines import KaplanMeierFitter

KaplanMeierFitter().fit(
    durations=[6,7,4],
    event_observed=[1,0,1],
).survival_function_["KM_estimate"]

Si usa este código, obtendrá el mismo resultado que hemos obtenido manualmente con el fragmento anterior.

Hasta ahora, hemos estado pasando el rato en la tierra de ratones, medicina y mortalidad. No es exactamente su revisión promedio de KPI trimestral, ¿verdad? Entonces, ¿cómo es esto útil en los negocios?

Pasar a un entorno comercial

Hasta ahora, hemos tratado la “muerte” como si fuera obvio. En la tierra de Kaplan-Meier, alguien vive o muere, y podemos registrar fácilmente el momento de la muerte. Pero ahora revuelvamos un desorden comercial del mundo real.

Que incluso es “Muerte” en un contexto comercial?

Resulta que no es fácil responder a esta pregunta, al menos por un par de razones:

  1. “Muerte” no es fácil de definir. Digamos que está trabajando en una compañía de comercio electrónico. Desea saber cuándo un usuario ha “muerto”. ¿Deberías contarlos como muertos cuando eliminan su cuenta? Eso es fácil de rastrear … pero demasiado raro para ser útil. ¿Qué pasa si simplemente comienzan a comprar menos? Pero cómo ¿Mucho menos está muerto? Una semana de silencio? ¿Un mes? ¿Dos? Ves el problema. La definición de “muerte” es arbitraria, y dependiendo de dónde traiga la línea, su análisis podría contar historias muy diferentes.
  2. “La muerte” no es permanente. Kaplan-Meier ha sido concebido para aplicaciones biológicas en las que una vez que un individuo está muerto no hay retorno. Pero en las aplicaciones comerciales, la resurrección no solo es posible sino frecuente. Imagine un servicio de transmisión por el cual las personas pagan una suscripción mensual. Es fácil definir la “muerte” en este caso: es cuando los usuarios cancelan sus suscripciones. Sin embargo, es bastante frecuente que, en algún momento después de cancelar, vuelven a suscribirse.

Entonces, ¿cómo se desarrolla todo esto en los datos?

Caminemos por un ejemplo de juguete. Digamos que tenemos un usuario en nuestra plataforma de comercio electrónico. En los últimos 10 meses, aquí está cuánto han gastado:

[Image by Author]

Para exprimir esto en el marco de Kaplan-Meier, necesitamos Traducir ese comportamiento de gasto en una decisión de vida o muerte.

Entonces hacemos una regla: si un usuario deja de gastar durante 2 meses consecutivos, los declaramos “inactivos”.

Gráficamente, esta regla se parece a la siguiente:

[Image by Author]

Dado que el usuario gastó $ 0 por dos meses seguidos (mes 4 y 5) consideraremos a este usuario inactivo a partir del mes 4. Y lo haremos a pesar de que el usuario comenzó a gastar nuevamente en el mes 7. Esto se debe a que, en Kaplan-Meier, se supone que las resurrecciones son imposibles.

Ahora agregemos dos usuarios más a nuestro ejemplo. Dado que hemos decidido una regla convertir su curva de valor en una curva de supervivencia, también podemos calcular la curva de supervivencia de Kaplan-Meier:

[Image by Author]

A estas alturas, probablemente hayas notado ¿Cuántos matices (y datos) hemos tirado solo para que esto funcione?. Usuario a Volvió de los muertos, pero lo ignoramos. Usuario doEl gasto disminuyó significativamente, pero a Kaplan-Meier no le importa, porque todo lo que ve es 1s y 0s. Forzamos un valor continuo (gasto) en una caja binaria (viva/muerta), y en el camino, perdimos mucha información.

Entonces la pregunta es: ¿podemos extender Kaplan-Meier de una manera que:

  • Mantiene los datos originales y continuos intactos,
  • Evita los límites binarios arbitrarios,
  • Permite resurrecciones?

Sí, podemos. En la siguiente sección, te mostraré cómo.

Introducción de “Valor Kaplan-Meier”

Comencemos con la simple fórmula de Kaplan-Meier que hemos visto antes.

# kaplan_meier: array containing the Kaplan-Meier estimates,
#               e.g. the probability of survival up to time t
# obs_t: array, whether a subject has been observed at time t
# surv_t: array, whether a subject was alive at time t
# surv_t_minus_1: array, whether a subject was alive at time t−1

survival_rate_t = surv_t[obs_t].sum() / surv_t_minus_1[obs_t].sum()

kaplan_meier[t] = kaplan_meier[t-1] * survival_rate_t

El primer cambio que debemos hacer es reemplazar surv_t y surv_t_minus_1que son matrices booleanas que nos dicen si un sujeto está vivo (1) o muerto (0) con matrices que nos dicen el valor (económico) de cada sujeto en un momento dado. Para este propósito, podemos usar dos matrices nombradas val_t y val_t_minus_1.

Pero esto no es suficiente, porque dado que estamos lidiando con un valor continuo, Cada usuario está en una escala diferente y, por lo tanto, suponiendo que queremos sopesarlo por igual, necesitamos rescalarlos en función de algún valor individual. Pero, ¿qué valor debemos usar? La opción más razonable es usar su valor inicial en el momento 0, antes de que estuvieran influenciados por cualquier tratamiento que seamos aplicando a ellos.

Por lo tanto, también necesitamos usar otro vector, llamado val_t_0 Eso representa el valor del individuo en el momento 0.

# value_kaplan_meier: array containing the Value Kaplan-Meier estimates
# obs_t: array, whether a subject has been observed at time t
# val_t_0: array, user value at time 0
# val_t: array, user value at time t
# val_t_minus_1: array, user value at time t−1

value_rate_t = (
    (val_t[obs_t] / val_t_0[obs_t]).sum()
    / (val_t_minus_1[obs_t] / val_t_0[obs_t]).sum()
)

value_kaplan_meier[t] = value_kaplan_meier[t-1] * value_rate_t

Lo que hemos construido es un Generalización directa de Kaplan-Meier. De hecho, si te configuras val_t = surv_t, val_t_minus_1 = surv_t_minus_1y val_t_0 Como una variedad de 1s, esta fórmula se derrumba perfectamente a nuestro estimador de supervivencia original. Entonces sí, es legítimo.

Y aquí está la curva que obtendríamos cuando se aplicara a estos 3 usuarios.

[Image by Author]

Llamemos a esta nueva versión la Valor Estimador de Kaplan-Meier. De hecho, responde a la pregunta:

Cuánto porcentaje de valor sigue sobreviviendo, en promedio, después de incógnita ¿tiempo?

Tenemos la teoría. ¿Pero funciona en la naturaleza?

Usando el valor Kaplan-Meier en la práctica

Si toma el valor de Kaplan-Meier Estimador para dar un giro a los datos del mundo real y lo compara con la buena curva de Kaplan-Meier, probablemente notará algo reconfortante, A menudo tienen la misma forma. Esa es una buena señal. Significa que no hemos roto nada fundamental mientras actualizamos de binario a continuo.

Pero aquí es donde las cosas se ponen interesantes: Valor Kaplan-Meier generalmente se sienta un poco arriba su primo tradicional. ¿Por qué? Porque en este nuevo mundo, los usuarios pueden “resucitar”. Kaplan-Meier, siendo el más rígido de los dos, los habría escrito en el momento en que se callaron.

Entonces, ¿cómo usamos esto en uso?

Imagina que estás ejecutando un experimento. En el momento cero, comienza un nuevo tratamiento en un grupo de usuarios. Sea lo que sea, puede rastrear cuánto valor “sobrevive” tanto en los grupos de tratamiento como en los grupos de control a lo largo del tiempo.

Y así es como se verá su salida:

[Image by Author]

Conclusión

Kaplan-Meier es un método ampliamente utilizado e intuitivo para estimar las funciones de supervivencia, especialmente cuando el resultado es un evento binario como la muerte o el fracaso. Sin embargo, muchos escenarios comerciales del mundo real implican una mayor complejidad: las resurrecciones son posibles y los resultados están mejor representados por valores continuos en lugar de un estado binario.

En tales casos, el valor Kaplan-Meier ofrece una extensión natural. Al incorporar el valor económico de las personas a lo largo del tiempo, permite una comprensión más matizada de la retención de valor y la descomposición. Este método conserva la simplicidad e interpretabilidad del estimador original de Kaplan-Meier mientras lo adapta para reflejar mejor la dinámica del comportamiento del cliente.

Valor Kaplan-Meier tiende a proporcionar una estimación más alta del valor retenido en comparación con Kaplan-Meier, debido a su capacidad para tener en cuenta las recuperaciones. Esto lo hace particularmente útil para evaluar experimentos o rastrear el valor del cliente con el tiempo.