R - "mice"包的 predict() 方法



我想使用包中的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 <- complete(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插补怎么样?

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

你可以阅读 多重插补 通过链式方程:它是什么,它是如何工作的? 如果您需要更多关于MICE的信息。

相关内容

  • 没有找到相关文章

最新更新