Ich habe das Mäusepaket untersucht und noch keine Möglichkeit gefunden, die mehreren Imputationen zu verwenden, um ein Cox-Modell zu erstellen und dieses Modell dann mit der Funktion des Effektivpakets zu validieren validate()
. Hier ist ein Beispielcode von dem, was ich bisher habe, unter Verwendung des Datensatzes 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.
Wenn ich nur mit einem CPH-Modell arbeiten würde, würde ich Folgendes tun:
validate(mod_1,B=20)
Das Problem, das ich habe, ist, wie ich die 5 CPH-Modelle (1 für jede Imputation) nehme und in der Lage bin, ein gepooltes Modell zu erstellen, mit dem ich dann arbeiten kann rms
. Ich weiß, dass das mice
Paket einige integrierte Pooling-Funktionen hat, aber ich glaube nicht, dass sie mit dem cph
Objekt in funktionieren rms
. Der Schlüssel hier ist, dass er rms
nach dem Pooling noch verwendet werden kann . Ich habe versucht, Harrells aregImpute()
Funktion zu verwenden, aber ich habe Probleme, den Beispielen und der Dokumentation zu folgen. mice
scheint einfacher zu bedienen.
Antworten:
Die
fit.mult.impute
Funktion imHmisc
Paket zeichnet Imputationen, diemice
genauso erstellt wurden wie ausaregImpute
.cph
wird mit arbeitenfit.mult.impute
. Die schwierigere Frage ist, wie die Validierung durch Resampling durchgeführt werden kann, wenn auch mehrere Imputationen durchgeführt werden. Ich glaube nicht, dass jemand das wirklich gelöst hat. Normalerweise nehme ich den einfachen Ausweg und verwende eine einzelne Imputation, um das Modell mithilfe derHmisc transcan
Funktion zu validieren, verwende jedoch mehrere Imputationen, um das endgültige Modell anzupassen und Standardfehler zu erhalten.quelle
fit.mult.impute()
Verwenden Sie diese Option, um diecph()
Modelle (5 davon, basierend auf 5 Imputationen vonmice
) zu bündeln und gepoolte Gefährdungsquoten und Standardfehler zu erhalten.transcan()
: Verwenden Sie diese Option, um eine einzelne Imputation zu erstellen und diese zu validieren. Es klingt so, als ob dies eine ausreichend gute Validierung ergibt. Ist das alles richtig? Ich bin sehr dankbar für Ihre Hilfe, Dr. Harrell.