我想使用mice包中的mice函数创建插补策略。问题是我似乎在此包中找不到用于新数据的predict方法(或其表亲)。

我想做这样的事情:

require(mice)
data(boys)

train_boys <- boys[1:400,]
test_boys <- boys[401:nrow(boys),]

mice_object <- mice(train_boys)
train_complete_boys <- compete(train_boys)

# Here comes a hypothetical method
test_complete_boys <- predict(mice_object, test_boys)

我想找到一些可以模仿上面代码的方法。
现在,完全有可能对火车和测试数据集分别进行单独的mice操作,但是从逻辑的角度来看,这似乎是不正确的-您拥有的所有信息都在火车数据集中。来自测试数据集的观察结果不应相互提供信息。当处理数据时,可以根据出现的时间对观察进行排序,这尤其如此。

一种可能的方法是从测试数据集中添加行以迭代地训练数据集,每次都运行插补。但是,这似乎非常微不足道。

所以这是问题:
mice包中是否有一种类似于一般predict方法的方法?如果没有,可能的解决方法是什么?

谢谢!

最佳答案

我认为用另一个估算数据集“预测”缺失值在逻辑上是不正确的,因为MICE算法正在迭代构建模型,以便根据给定数据集中的观测值估算缺失值。

换句话说,当您执行mice_object <- mice(train_boys)时,该算法会根据train_boys中变量之间的关系来估计并估算NA。但是,由于test_boy中的变量之间的关系可能与test_boy中的变量之间的关系不同,因此无法将这种估计应用于train_boy。同样,这两个数据集之间观察到的信息量也不同。

如果您相信train_boystest_boys之间的变量之间的关系是同质的,那么在分割数据集之前进行NA插补怎么样? IE。:

mice_object <- mice(boys)
complete_boys <- compete(mice_object)
train_boys <- complete_boys[1:400,]
test_boys <- complete_boys[401:nrow(complete_boys),]

如果您需要有关MICE的更多信息,可以阅读Multiple imputation by chained equations: What is it and how does it work?

关于r - "mice"包的predict()方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28280416/

10-10 11:44