J'ai fait des recherches sur le package de souris et je n'ai pas encore découvert de moyen d'utiliser les multiples imputations pour créer un modèle Cox, puis valider ce modèle avec la fonction du package rmsvalidate()
. Voici un exemple de code de ce que j'ai jusqu'à présent, en utilisant l'ensemble de données 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.
Maintenant, si je travaillais avec un seul modèle CPH, je ferais ceci:
validate(mod_1,B=20)
Le problème que j'ai est de savoir comment prendre les 5 modèles CPH (1 pour chaque imputation) et être capable de créer un modèle groupé que je pourrai ensuite utiliser avec rms
. Je sais que le mice
paquet a des fonctions de mise en commun intégrées mais je ne pense pas qu'elles fonctionnent avec l' cph
objet dans rms
. La clé ici est de pouvoir continuer à utiliser rms
après la mise en commun. J'ai cherché à utiliser la aregImpute()
fonction de Harrell mais j'ai du mal à suivre les exemples et la documentation; mice
semble plus simple à utiliser.
Réponses:
La
fit.mult.impute
fonction dans leHmisc
package tirera des imputations créées à partir de lamice
même manière qu'à partir dearegImpute
.cph
fonctionnera avecfit.mult.impute
. La question la plus difficile est de savoir comment effectuer la validation par le rééchantillonnage lorsque vous effectuez également une imputation multiple. Je pense que personne n'a vraiment résolu cela. Je prends généralement la solution la plus simple et j'utilise l'imputation unique pour valider le modèle, en utilisant laHmisc transcan
fonction, mais en utilisant l'imputation multiple pour ajuster le modèle final et obtenir des erreurs standard.la source
fit.mult.impute()
:: Utilisez-le pour regrouper lescph()
modèles (5 d'entre eux, sur la base de 5 imputations demice
) et obtenir des ratios de risque groupés et des erreurs standard.transcan()
: Utilisez cette option pour créer une imputation unique et la valider. Il semble que cela donne une assez bonne validation. Est-ce que tout cela est correct? J'apprécie vraiment votre aide, Dr Harrell.