He estado investigando el paquete de ratones , y aún no he descubierto una forma de usar las imputaciones múltiples para hacer un modelo de Cox, luego validar ese modelo con la función del paquete rmsvalidate()
. Aquí hay un código de muestra de lo que tengo hasta ahora, usando el conjunto de datos veteran
:
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~trt+celltype+karno+age+prior,
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.
Ahora, si solo estuviera trabajando con un modelo de CPH, haría esto:
validate(mod_1,B=20)
El problema que tengo es cómo tomar los 5 modelos de CPH (1 para cada imputación) y poder crear un modelo agrupado con el que luego pueda usar rms
. Sé que el mice
paquete tiene algunas funciones de agrupación incorporadas, pero no creo que funcionen con el cph
objeto rms
. La clave aquí es poder seguir utilizando rms
después de la agrupación. Estudié el uso de la aregImpute()
función de Harrell, pero tengo problemas para seguir los ejemplos y la documentación; mice
Parece más simple de usar.
Respuestas:
La
fit.mult.impute
función en elHmisc
paquete dibujará imputaciones creadas de lamice
misma manera que lo haráaregImpute
.cph
trabajará confit.mult.impute
. La pregunta más difícil es cómo hacer la validación mediante remuestreo cuando también se realiza una imputación múltiple. No creo que nadie haya resuelto eso realmente. Por lo general, tomo el camino más fácil y uso la imputación única para validar el modelo, usando laHmisc transcan
función, pero usando la imputación múltiple para ajustar el modelo final y obtener errores estándar.fuente
fit.mult.impute()
:: use esto para agrupar loscph()
modelos (5 de ellos, en base a 5 imputaciones demice
) y obtener razones de riesgo agrupadas y errores estándar.transcan()
: Use esto para crear una sola imputación y validarla. Parece que esto da una validación suficientemente buena. ¿Es todo eso correcto? Realmente aprecio su ayuda, Dr. Harrell.