Pregunta ¿Cómo ingresar datos censurados en el modelo de supervivencia de R?


Estoy intentando modelar la vida útil de los clientes en las suscripciones. Como los datos están censurados, utilizaré el paquete de supervivencia de R para crear una curva de supervivencia.

El conjunto de datos de suscripciones original se ve así ..

id  start_date  end_date
1   2013-06-01  2013-08-25
2   2013-06-01  NA
3   2013-08-01  2013-09-12

Que manipulo para que se vea así ..

id  tenure_in_months status(1=cancelled, 0=active)
1   2                1
2   ?                0
3   1                1

..para alimentar el modelo de supervivencia:

obj <- with(subscriptions, Surv(time=tenure_in_months, event=status, type="right"))
fit <- survfit(obj~1, data=subscriptions)
plot(fit)

¿Qué debo poner en la variable tenure_in_months para los casos consorcionados, es decir, los casos en los que la suscripción todavía está activa en la actualidad? ¿Debería ser la permanencia hasta hoy o debería ser NA?


5
2017-09-23 11:56


origen


Respuestas:


Si una fecha de finalización faltante significa que la suscripción aún está activa, entonces debe tomarse el tiempo hasta la fecha actual como fecha de censura.

NA no funciona con el objeto de supervivencia. Creo que esos casos serán omitidos. ¡Eso no es lo que quieres! Porque estos casos contienen información importante sobre la supervivencia.

Código SQL para obtener el evento time till (uso en SELECT parte de la consulta)

DATEDIFF(M,start_date,ISNULL(end_date,GETDATE()) AS tenure_in_months

Por cierto: Usaría la diferencia en días para mi análisis. No tiene sentido redondear el tiempo a meses.


1
2017-09-23 12:04



Primero diré que no estoy de acuerdo con la respuesta anterior. Para una suscripción aún activa hoy, no se debe considerar como tenencia hasta hoy, ni NA. ¿Qué sabemos exactamente acerca de esas suscripciones? Sabemos que permanecieron hasta hoy, lo que equivale a decir tenure_in_months para esas observaciones, aunque no sabemos exactamente cuánto tiempo son, son más largas que su duración de tenencia hasta el día de hoy.

Esta es una situación conocida como censor del derecho en el análisis de supervivencia. Ver: http://en.wikipedia.org/wiki/Censoring_%28statistics%29

Así que sus datos necesitarían traducir de

id  start_date  end_date
1   2013-06-01  2013-08-25
2   2013-06-01  NA
3   2013-08-01  2013-09-12

a:

id  t1   t2    status(3=interval_censored)
1   2    2           3
2   3    NA          3
3   1    1           3

Entonces necesitarás cambiar tu R surv objeto, desde:

Surv(time=tenure_in_months, event=status, type="right")

a:

Surv(t1, t2, event=status, type="interval2")

Ver http://stat.ethz.ch/R-manual/R-devel/library/survival/html/Surv.html para más detalles de sintaxis Un muy buen resumen de detalles computacionales se puede encontrar: http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_lifereg_sect018.htm

Los datos censurados por intervalo se pueden representar de dos maneras. Para el primer uso, escriba = intervalo y los códigos que se muestran arriba. En ese uso, el valor del argumento time2 se ignora a menos que event = 3. El segundo enfoque es pensar en cada observación como un intervalo de tiempo con (-infinito, t) para censurado a la izquierda, (t, infinito) para censurado a la derecha, (t, t) para exacto y (t1, t2) para un intervalo. Este es el enfoque utilizado para type = interval2, con NA tomando el lugar de infinito. Ha demostrado ser el más útil.


8
2017-09-23 15:44



Necesitas saber la fecha en que se recolectó la información. los tenure_in_months para id 2 debería ser esta fecha menos 2013-06-01.

De lo contrario creo que su codificación de los datos es correcta. el status de 0 para id 2 indica que está censurado a la derecha (lo que significa que tenemos un límite inferior en su tiempo de vida, pero no un límite superior).


0
2017-07-22 10:12