简而言之,我的问题是:有没有什么方法可以改善R MICE(数据插补)的运行时间?
我正在使用一个数据集(30个变量,130万行),该数据集包含(随机)丢失的数据。30个变量中约15个变量中约有8%包含NA。为了估算丢失的数据,我运行了MICE函数,该函数是MICE软件包的一部分。
我使用method =“ fastpmm”和m = 1甚至在一个子集(100,000行)上都经历了非常慢的运行时间,并且运行了大约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")
1
通常:这类问题是否适合交叉验证,或更适合于堆栈溢出?
—
Dendrobates
这可能是一个判断电话。因为(作为一般原则)运行时间的最实质性改善是通过了解底层算法而获得的,所以我希望您可能会在一个社区中(人们可能会建议其他方法)获得真正有效答案的最佳机会。如果您在一两天内没有得到足够的答案,则只需将该帖子标记为可迁移,我们会将其发送给SO(以及在此期间可能收集到的所有答案和评论)。
—
whuber
您可以将'fastppm'选项更改为'norm',它将更快
—
marc1s 2016年
Thx @ marc1s,对于大型数据集确实有很多改进。对于具有10,000行的随机数据帧(如上所述),“规范”方法比“ fastpmm”快约4倍。50,000行的速度甚至快了12倍。因此,运行时间的相对增益随着行数的增加而增加。
—
Dendrobates
根据要运行的模型,使用最大似然(或全信息最大似然)估计可能更快,如果正确指定了模型,则估计在渐近上等同于估算。这是我参与的一篇论文,比较了不同的方法:emeraldinsight.com/doi/abs/10.1108/JCP-02-2015-0007
—
Jeremy Miles