Saya telah meneliti paket tikus , dan saya belum menemukan cara untuk menggunakan beberapa imputasi untuk membuat model Cox, kemudian memvalidasi model itu dengan fungsi paket rmsvalidate()
. Berikut adalah beberapa contoh kode dari apa yang saya miliki sejauh ini, menggunakan kumpulan data 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.
Sekarang, jika saya hanya bekerja dengan satu model CPH, saya akan melakukan ini:
validate(mod_1,B=20)
Masalah yang saya alami adalah bagaimana mengambil 5 model CPH (1 untuk setiap imputasi), dan dapat membuat model gabungan yang kemudian dapat saya gunakan rms
. Saya tahu bahwa mice
paket tersebut memiliki beberapa fungsi penyatuan bawaan tetapi saya tidak percaya mereka bekerja dengan cph
objek tersebut rms
. Kuncinya di sini adalah masih bisa digunakan rms
setelah pooling. Saya melihat ke dalam menggunakan aregImpute()
fungsi Harrell tapi saya mengalami kesulitan mengikuti contoh dan dokumentasi; mice
tampaknya lebih mudah digunakan.
Jawaban:
The
fit.mult.impute
fungsi dalamHmisc
paket akan menarik imputations dibuat darimice
seperti itu akan dariaregImpute
.cph
akan bekerja denganfit.mult.impute
. Pertanyaan yang lebih sulit adalah bagaimana melakukan validasi melalui resampling ketika juga melakukan beberapa imputasi. Saya tidak berpikir ada orang yang benar-benar menyelesaikannya. Saya biasanya mengambil jalan keluar yang mudah dan menggunakan imputasi tunggal untuk memvalidasi model, menggunakanHmisc transcan
fungsi, tetapi menggunakan beberapa imputasi agar sesuai dengan model akhir dan untuk mendapatkan kesalahan standar.sumber
fit.mult.impute()
:: Gunakan ini untuk menyatukancph()
model (5 dari mereka, berdasarkan 5 imputasi darimice
) dan dapatkan rasio bahaya yang dikumpulkan dan kesalahan standar.transcan()
: Gunakan ini untuk membuat satu imputasi dan memvalidasinya. Sepertinya ini memberikan validasi yang cukup baik. Apakah semua itu benar? Saya sangat menghargai bantuan Anda, Dr. Harrell.