1 votos

Regresión de riesgos proporcionales de Cox: ¿se puede ampliar la "ventana" de observación de covariables?

Me pregunto si alguien ha utilizado el modelo de regresión de riesgos proporcionales de Cox para ver si la exposición previa a una variable está correlacionada con un acontecimiento.

Utilizo la función "coxph" en la aplicación supervivencia en R, y siguiendo el ejemplo de Rossi en Regresión de riesgos proporcionales de Cox para datos de supervivencia en R .

Me interesa la correlación entre la semana de detención (3ª columna) y la situación laboral (última columna) en la imagen siguiente. Sin embargo, me gustaría ampliar la ventana de empleo a la inversa y preguntar si la persona ha estado empleada en una visita anterior determinada.

¿Alguien tiene alguna idea o sugerencia, en términos de funciones de R o de cómo reorganizar los datos? Gracias.

Rossi.2 sample data on https://socserv.socsci.mcmaster.ca/jfox/Books/Companion/appendix/Appendix-Cox-Regression.pdf

1voto

Yuval Sp Puntos 316

Usted pretende lag a covariable dependiente del tiempo . En el enlace que usted suministró el autor da una función que él creó llamada unfold con explicaciones sobre su uso a partir de la página 9 del artículo enlazado. Puedes utilizarlo, como hace él, para retrasar una variable (véase la página 11).

Sin embargo, hasta donde yo sé, ésta no es una función muy genérica y sólo es buena cuando se despliega un formato de datos ancho a largo. si tus datos ya son largos, por ejemplo (ejemplo de la gran viñeta sobre covariables y coeficientes dependientes del tiempo ):

subject time1 time2 status age creatinine . . .
1       0     15    0      25  1.3
1       15    46    0      25  1.5
1       46    73    0      25  1.4
1       73    100   1      25  1.6

puede escribir un pequeño fragmento de código que se encargue del retardo ( nota: Todavía no soy muy buen programador de R. Hay mejores maneras de hacerlo estoy seguro, pero esto funciona ):

# @a is the dataset, @lag_var is the new variable to be 1 spell lagged, 
# @var_to_lag is the base variable
# the 0s and 1s in the lag var is just if it is in a 0 or 1 format. 
# could be TRUE or FALSE or whatever..
# @id is the unique identifier for the multiple rows of each person 

a$lag_var <- 0

for (i in 1:(nrow(a)-1)) {
     if (a[i,]$id == a[i+1,]$id & a[i+1,]$var_to_lag==1) {
         a[i,]$lag_var <- 1
     }
}

Tenga en cuenta que el código anterior hará que una "exposición" desaparezca si no se puede retrasar (lo que significa que la persona sólo tiene un período por alguna razón).

0voto

user2972177 Puntos 11

Estaba buscando un equivalente del "NLAG" en SAS, así que supongo que la solución más sencilla sería generar una nueva columna para la variable retardada.

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