用于"老鼠"包的predict()方法

Loi*_*sso 11 r r-mice

我想使用包中的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)
Run Code Online (Sandbox Code Playgroud)

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

一种可能的方法是从测试数据集添加行以迭代地训练数据集,每次都运行插补.然而,这似乎非常不优雅.

所以这是一个问题:

是否有mice类似于一般predict方法的包的方法?如果没有,可能的解决方法是什么?

谢谢!

ytu*_*ytu 2

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

换句话说,当您执行 时mice_object <- mice(train_boys)算法会根据 中变量之间的关系来估计和插补 NAtrain_boys。然而,这种估计不能应用于 ,test_boy因为 中变量之间的关系test_boy可能与 中的变量之间的关系不同train_boy。此外,这两个数据集之间观察到的信息量也不同。

如果您认为变量之间的关系在train_boys和 之间是同质的,那么在分割数据集之前test_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),]
Run Code Online (Sandbox Code Playgroud)

您可以阅读链式方程多重插补:它是什么以及它如何工作?如果您需要更多MICE信息。