4 votos

El mejor método para validar una multiplicar imputado en el modelo de Cox con R?

Esta pregunta es con respecto a la utilización de un conjunto de datos de prueba para la validación de un imputado en el modelo de Cox mediante R. Con un no-imputado en el conjunto de datos que yo usaría val.surv() de rms, pero no estoy seguro de cómo/si lo puedo usar con mi multiplicar imputado conjunto de datos.

Explicación más detallada: He creado una predicción de la Cox PH modelo de 5 años, RFS, y también se utiliza la mice paquete de multiplicar imputar algunos datos que faltan en el conjunto de datos de entrenamiento. Luego usé fit.mult.impute() en el Dr. Frank Harrell excelente Hmisc paquete para obtener el conjunto del modelo. Tengo un conjunto de datos que me gustaría probar el modelo, pero no estoy seguro de cómo es la mejor manera de validar el modelo agrupado.

Varios de imputación es un procedimiento común que muchos investigadores utilizan, por lo que debe haber una manera de que los usuarios de R son la validación de sus modelos con datos imputados. Me gustaría saber qué funciones/opciones están disponibles para mí para poner a prueba este modelo agrupado con mi validación del conjunto de datos? Aquí está el código de ejemplo para trabajar con:

library(rms)
library(survival)
library(mice)

remove(veteran)
data(veteran)
veteran$trt=factor(veteran$trt,levels=c(1,2))
veteran$prior=factor(veteran$prior,levels=c(0,10))

#Set random data to NA 
veteran[sample(137,4),1]=NA
veteran[sample(137,4),2]=NA
veteran[sample(137,4),7]=NA

impvet=mice(veteran)
survmod=with(veteran,Surv(time,status))

#make a CPH for each imputation
for(i in seq(5)){
    assign(paste("mod_",i,sep=""),cph(survmod~celltype+karno,
        data=complete(impvet,i),x=T,y=T))
}

#Now there is a CPH model for mod_1, mod_2, mod_3, mod_4, and mod_5.

pooled_mod=fit.mult.impute(survmod~celltype+karno,cph,impvet,data=veteran,surv=T)

#Here is a test data set.
remove(veteran)
test_dat=data.frame(trt=replicate(500,NA), celltype=replicate(500,NA), time=replicate(500,NA), status=replicate(500,NA), karno=replicate(500,NA), diagtime=replicate(500,NA), age=replicate(500,NA), prior=replicate(500,NA))
for(i in seq(8)){
test_dat[,i]=sample(veteran[,i],500,replace=T)
}

#Now there is a pooled model, "pooled_mod", and a test data set, "test_dat".

Estoy mirando adelante a oír acerca de la R métodos que pueden ayudar en esta situación.

1voto

Stef van Buuren Puntos 1130

Me permito sugerir que usted repita cada paso que de otra manera haría sobre la no-imputados datos para el primer imputado en el conjunto de datos. Por ejemplo:

# fit the model on the multiply imputed data
fit <- with(impvet, cph(survmod ~ celltype + karno, x = T, y = T))

# take out the first imputed data set
data <- complete(fit, 1)

# take out the first fitted cph model
mod <- fit$analyses[[1]]

# use your val.surv() steps here on the first imputed data set
...

Por supuesto, también se puede estudiar la segunda, tercera, ... conjunto de datos.

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