Pesquisei o pacote de mouses e ainda não descobri uma maneira de usar as várias imputações para criar um modelo de Cox e validá-lo com a função do pacote rmsvalidate()
. Aqui está um código de amostra do que tenho até agora, usando o conjunto de dados 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.
Agora, se eu estivesse trabalhando apenas com um modelo de CPH, faria o seguinte:
validate(mod_1,B=20)
O problema que estou enfrentando é como usar os 5 modelos de CPH (1 para cada imputação) e poder criar um modelo em pool com o qual eu possa usar rms
. Eu sei que o mice
pacote tem alguns built-in pooling funções, mas eu não acredito que eles trabalham com o cph
objeto rms
. A chave aqui é poder ainda usar rms
após o pool. Procurei usar a aregImpute()
função de Harrell, mas estou tendo problemas para seguir os exemplos e a documentação; mice
parece mais simples de usar.