Мой вопрос вкратце: есть ли способы улучшить время работы R MICE (вменение данных)?
Я работаю с набором данных (30 переменных, 1,3 миллиона строк), который содержит (совершенно случайно) недостающие данные. Около 8% наблюдений примерно в 15 из 30 переменных содержат НК. Чтобы вложить недостающие данные, я запускаю функцию MICE, часть пакета MICE .
Я испытываю довольно медленное время выполнения, даже на подмножестве (100 000 строк), с method = "fastpmm" и m = 1 и работает около 15 минут.
Есть ли способ улучшить время выполнения без потери производительности? (mice.impute.mean довольно быстрый, но с большой потерей информации!).
Воспроизводимый код:
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
Dendrobates
источник
источник
Ответы:
Вы можете использовать
quickpred()
изmice
пакета, с помощью которого вы можете ограничить предикторы, указав mincor (Минимальная корреляция) и minpuc (пропорция используемых случаев). Также вы можете использовать параметры exclude и include для управления предикторами.источник
Я сделал обертку для
mice
функции, которая включает в себя один дополнительный аргумент,droplist
где вы можете передать символьный вектор переменных-предикторов, которые вы не хотите использовать в правой части формул вменения. Это было для скорости, поскольку я обнаружил, что факторные переменные со многими уровнями значительно замедлили бы вменение . Я не знал оquickpred
функции, на которую ссылается @Aanish, и, возможно, вы могли бы использовать обе концепции вместе.Ниже приведена функция, как она появляется в моем пакете glmmplus . Если вы сочтете это полезным, я могу открыть запрос на получение в текущем
mice
пакете.источник