Singkatnya pertanyaan saya: apakah ada metode untuk meningkatkan waktu berjalan R MICE (data imputasi)?
Saya bekerja dengan satu set data (30 variabel, 1,3 juta baris) yang berisi (secara acak) data yang hilang. Sekitar 8% dari pengamatan di sekitar 15 dari 30 variabel mengandung NAs. Untuk memasukkan data yang hilang, saya menjalankan fungsi MICE, bagian dari paket MICE .
Saya mengalami waktu berlari yang sangat lambat, bahkan pada subset (100.000 baris), dengan metode = "fastpmm" dan m = 1 dan berjalan selama sekitar 15 menit.
Apakah ada cara untuk meningkatkan waktu berjalan tanpa kehilangan terlalu banyak dalam kinerja? (mice.impute.mean cukup cepat, tetapi disertai dengan hilangnya informasi penting!).
Kode yang dapat direproduksi:
library(mice)
df <- data.frame(replicate(30,sample(c(NA,1:10),1000000,rep=TRUE)))
df <- data.frame(scale(df))
output <- mice(df, m=1, method = "fastpmm")
r
multiple-imputation
mice
Dendrobat
sumber
sumber
Jawaban:
Anda dapat menggunakan
quickpred()
darimice
paket menggunakan mana Anda dapat membatasi prediktor dengan menentukan mincor (korelasi minimum) dan minpuc (proporsi kasus yang dapat digunakan). Anda juga dapat menggunakan mengecualikan dan menyertakan parameter untuk mengontrol prediktor.sumber
Saya membuat pembungkus untuk
mice
fungsi yang mencakup satu argumen tambahandroplist
,, di mana Anda dapat melewatkan vektor karakter dari variabel prediktor yang tidak ingin Anda gunakan di sisi kanan rumus imputasi. Ini untuk kecepatan, karena saya menemukan bahwa variabel faktor dengan banyak level akan memperlambat imputasi secara signifikan . Saya tidak mengetahuiquickpred
fungsi yang dirujuk oleh @Aanish, dan mungkin Anda bisa menggunakan kedua konsep secara bersamaan.Di bawah ini adalah fungsinya seperti yang muncul di paket glmmplus saya . Jika menurut Anda bermanfaat, saya dapat membuka permintaan tarik dalam
mice
paket yang sebenarnya .sumber