12 votos

Eventos de Tiempo discretos de la Historia (de Supervivencia) en el Modelo de R

Estoy tratando de adaptarse a un tiempo discreto modelo en R, pero no estoy seguro de cómo hacerlo.

He leído que se puede organizar la variable dependiente en diferentes filas, una para cada momento de la observación, y el uso de la glm función con un logit o cloglog enlace. En este sentido, tengo tres columnas: ID, Event (1 o 0, en cada tiempo-obs) y Time Elapsed (desde el comienzo de la observación), además de las otras variables.

¿Cómo puedo escribir el código para ajustar el modelo? Cual es la variable dependiente? Supongo que podría usar Event como la variable dependiente, e incluyen la Time Elapsed en las covariables. Pero, ¿qué sucede con la ID? Lo necesito?

Gracias.

8voto

kevinf Puntos 153

Básicamente lo que hace es correcto acerca de la organización de los datos. Si usted tiene casos organizados así:

ID M1 M2 M3 EVENT

Es probable que se desea reorganizar los datos para que se parezca a esto:

ID TIME EVENT
1  1    0
1  2    1
1  3    1
2  1    0
2  2    0
.  .    .
.  .    .

Yo llamo a esto la conversión de gran formato a un formato largo. Esto se hace fácilmente en R usando el reshape() función o incluso más fácilmente con la reshape2 paquete.

Yo personalmente me quedaría con el ID de campo para su uso potencial en la identificación de la fuente de variación en un modelo de efectos mixtos. Pero esto no es necesario (como se ha señalado por @BerndWeiss). El siguiente asume que quisiera hacerlo. Si no, ajuste un modelo similar con glm(...,family=binomial) sin el efecto aleatorio de los términos.

El lme4 paquete en R se ajuste a una de efectos mixtos modelo de regresión logística similar a la que estás hablando, excepto con un efecto aleatorio o dos para dar cuenta de la variabilidad en los coeficientes de todas las materias (ID). El siguiente podría ser un ejemplo de código para el ajuste de un modelo de ejemplo, si los datos son almacenados en una estructura de datos llamada df.

require(lme4)
ans <- glmer(EVENT ~ TIME + (1+TIME|ID), data=df, family=binomial)

Este modelo en particular permite la TIME y intercept coeficientes que varían al azar a través de ID. En otras palabras, este es un jerárquica lineal modelo mixto de medidas anidados en los individuos.

Una forma alternativa de un tiempo discreto historial de eventos del modelo rompe TIME en discretas dummies y se adapta a cada uno como un parámetro. Este es esencialmente el discretos caso de la Cox PH modelo ya que el riesgo de la curva no se limita a ser lineal o cuadrática, o sin embargo usted puede imaginar la transformación de tiempo). Aunque, puede que desee grupo TIME a un conjunto manejable (es decir, pequeños) de discretos períodos de tiempo si hay un montón de ellos.

Más suplentes que implican la transformación de tiempo para obtener su peligro de la curva de la derecha. El anterior método, básicamente, alivia el tener que hacer esto, pero el método anterior es menos parsimonioso que este (y el original lineales caso que me plantea debido a que usted puede tener un montón de puntos en el tiempo y por lo tanto, una gran cantidad de molestias parámetros.

Una excelente referencia sobre este tema es Judith Cantante y John Willet es Aplicado Longitudinal de Análisis de Datos: Modelado de Cambio y la Aparición de Eventos.

7voto

Brett Veenstra Puntos 10238

La cantante y Willett se han publicado mucho sobre este tema. Le recomiendo que lea algunos de sus papeles. Usted también puede obtener su libro "Aplicado Longitudinal de Análisis de Datos: Modelado de Cambio y la Aparición de Eventos". Claramente uno de los mejores libros de texto en este campo.

Para la mayoría de los capítulos del libro no es R código de ejemplo (ver capítulos 11ss) disponible que demuestra cómo sus datos tiene que estar estructurado ("persona-formato del período") y cómo analizar que tipo de datos. Para un estándar de tiempo discreto modelo no necesita el IDENTIFICADOR de la variable y también no es necesario para estimar un modelo de efectos mixtos como sugerido por @ndoogan. Una simple glm(event ~ time + ..., family = "binomial") funciona bien. La cantante y Willett también discutir muchos temas cómo el modelo de la variable de tiempo (lineal, cuadrática, ...)

Para citar dos más referencias que yo recomiendo:

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