Verwenden Sie die Mehrfachzuschreibung für Cox-Proportional-Gefahren und validieren Sie sie dann mit dem Effektivwertpaket?

8

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 micePaket einige integrierte Pooling-Funktionen hat, aber ich glaube nicht, dass sie mit dem cphObjekt in funktionieren rms. Der Schlüssel hier ist, dass er rmsnach 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. micescheint einfacher zu bedienen.

JJM
quelle
Übrigens: Moderatoren, wenn Sie der Meinung sind, dass dieses Q zu Stack Overflow gehört, können Sie es gerne migrieren.
JJM
Hallo @JJM. Ich bin in einer ähnlichen Situation, in der ich meine Cox-Modelle aus den verschiedenen unterstellten Datensätzen zusammenfassen und dann validieren muss. Wie sollten die kumulativen Grundrisiken kombiniert werden, um das eine gepoolte Modell zu generieren? Die Protokolle der Gefahrenquoten (Koeffizienten) können leicht zusammengefasst werden, da sie eine asymptotische Normalität aufweisen. Zur Berechnung der Überlebenswahrscheinlichkeiten benötigen Sie jedoch auch eine Schätzung des (kumulativen) Grundrisikos. Soweit mir bekannt ist, hat dies keine asymptotische Normalität, daher bin ich mir nicht sicher, wie ich mehrere Coxph-Modelle in einem einzigen Modell zusammenfassen soll. Vielen Dank, wenn Sie dies sehen.
AP30

Antworten:

12

Die fit.mult.imputeFunktion im HmiscPaket zeichnet Imputationen, die micegenauso erstellt wurden wie aus aregImpute. cphwird mit arbeiten fit.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 der Hmisc transcanFunktion zu validieren, verwende jedoch mehrere Imputationen, um das endgültige Modell anzupassen und Standardfehler zu erhalten.

Frank Harrell
quelle
1
Vielen Dank für Ihre hilfreiche Antwort, Dr. Harrell. Ich möchte nur mein Verständnis dessen zusammenfassen, was Sie gesagt haben. Bitte korrigieren Sie mich, wenn ich es falsch verstehe :: fit.mult.impute()Verwenden Sie diese Option, um die cph()Modelle (5 davon, basierend auf 5 Imputationen von mice) 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.
JJM
1
Das ist richtig. Die Einzelimputationsvalidierung ist ein vorübergehender Ersatz für die Mehrfachimputationsanpassung.
Frank Harrell