10 votos

Visualizar el análisis de supervivencia con covariables dependientes del tiempo

Como continuación de Sugerencia de modelo para una regresión de Cox con covariables dependientes del tiempo Aquí se muestra el gráfico de Kaplan Meier que tiene en cuenta la naturaleza dependiente del tiempo de los embarazos. En otras palabras, el conjunto de datos se divide ahora en un largo conjunto de datos con múltiples filas según el número de embarazos. El gráfico de KM, así como el modelo de Cox ampliado, parecen indicar un efecto beneficioso del embarazo sobre el resultado. Sin embargo, al mirar el gráfico de KM me pregunto: ¿debería la línea del primer nacimiento empezar en 1,0? ¿No sería más intuitivo comenzar esta línea en el valor y para los nacimientos 0 en x igual a cuando se da el primer nacimiento?

EDIT: Después de investigar esto más de cerca veo que la KM regular no es buena. Más bien debería utilizar el método de Simon y Makuch que se utiliza en Stata (Simon R, Makuch RW. Una representación gráfica no paramétrica de la relación entre la supervivencia y la ocurrencia de un evento: aplicación al sesgo de responder versus no responder. Estadísticas en medicina , 1984; 3: 35-44. )

¿Alguien ha visto esto implementado para R?

enter image description here

8voto

swmo Puntos 1132

No he podido acceder al artículo de Simon y Makuch mencionado anteriormente, pero tras investigar el tema he encontrado:

Steven M Snapinn, Qi Jiang y Boris Iglewicz (2005) Ilustración del impacto de una covariable temporal con un estimador de Kaplan-Meier ampliado , El Estadístico Americano , 59:4, 301-307.

Ese artículo propone un gráfico de Kaplan-Meier (KM) dependiente del tiempo, simplemente actualizando las cohortes en todos los momentos del evento. También cita el artículo de Simon y Makuch por proponer una idea similar. El KM normal no permite esto, sólo permite una división fija en grupos. El método propuesto realmente divide el tiempo de supervivencia según el estado de la covariable - al igual que se podría hacer al estimar un modelo de Cox con covariables constantes a trozos. Para el modelo de Cox, esta es una idea viable y estándar. Sin embargo, es más complicada cuando se hace un gráfico de KM. Permítame ilustrarlo con un ejemplo de simulación.

Supongamos que no hay censura, sino algún acontecimiento (por ejemplo, dar a luz) que podría ocurrir o no antes del momento de la muerte. Supongamos también que los riesgos son constantes para simplificar. También supondremos que dar a luz no altera el peligro de morir. A continuación, seguiremos el procedimiento prescrito en el artículo anterior. El artículo indica claramente cómo se hace esto en R, simplemente divida sus sujetos en el momento de dar a luz de tal manera que sean constantes en su variable de agrupación. A continuación, utilice la formulación del proceso de recuento en el Surv función. En código

library(survival)
library(ggplot2)
n          <- 10000
data       <- data.frame(id = seq(n), 
                         preg = rexp(n, 1), 
                         death = rexp(n, .5), 
                         enter = 0, 
                         per = NA, 
                         event = 1)
data$exit  <- data$death

data0      <- data
data0$exit <- with(data, pmin(preg, death))
data0$per  <- 0
data0$event[with(data0, preg < death)] <- 0

data1       <- subset(data, preg < death)
data1$enter <- data1$preg
data1$per   <- 1

data <- rbind(data0, data1)
data <- data[order(data$id), ]

Sfit <- survfit(Surv(time = enter, time2 = exit, event = event) ~ per, data = data)
autoplot(Sfit, censSize = 0)$plot

Lo divido más o menos "a mano". Podríamos utilizar survSplit también. El procedimiento realmente me da una estimación muy agradable.

No bias

Obtenemos estimaciones casi idénticas para los dos grupos, como debería ser. Pero, en realidad, mi simulación era quizá un poco irreal. Supongamos que una mujer no puede dar a luz en las dos primeras unidades de tiempo por alguna razón. Esto es al menos razonable en su ejemplo: habrá algún tiempo entre dos embarazos correspondientes a la misma mujer. Haciendo un pequeño añadido al código

data <- data.frame(id = seq(n), 
                   preg = rexp(n, 1) + 2, 
                   death = rexp(n, .5), 
                   enter = 0, 
                   preg = NA, 
                   event = 1)

obtenemos el siguiente gráfico:

Bias

Lo mismo estaría ocurriendo con tus datos. No verás ningún tercer embarazo durante al menos un periodo de tiempo inicial, lo que significa que tu estimación será 1 para ese grupo y ese periodo de tiempo. Esto es, en mi opinión, una representación errónea de sus datos. Considere mi simulación. Los riesgos son idénticos, pero para cada punto de tiempo el per1 estimación es mayor que la per0 estimación.

Podrías considerar diferentes remedios a este problema. Se propone pegarlas en algún momento (dejar que el per1 -La curva parte de un punto determinado de la per0 -curva). Me gusta esta idea. Si lo hago con los datos de la simulación, obtenemos:

enter image description here

En nuestro caso concreto, creo que esto representa mejor los datos, pero no conozco ningún resultado publicado que apoye este enfoque. Heurísticamente, se puede utilizar el argumento que presenté en otra respuesta:

Gráfico de KM con coeficiente variable en el tiempo

0 votos

He editado un poco tu post para hacerlo más legible. Si no te gusta, vuelve a editarlo con mis disculpas.

0voto

Hay un post reciente sobre este tema en CV: ¿Cuál es el mejor gráfico para describir un análisis de supervivencia con una covariable dependiente del tiempo?

Además, ahora existe la posibilidad de calcular la prueba de Mantel-Byar y el gráfico de Simon-Makuch que la acompaña en R, utilizando la función Rcmdr y el RcmdrPlugin.EZR paquetes.

Véase el post de SO relacionado que contiene un código R detallado: https://stackoverflow.com/questions/40431559/mantel-byar-test-and-simon-makuch-plot-for-survival-analysis-with-time-dependent

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X