13

我想使用包中的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方法?如果没有,可能的解决方法是什么?

谢谢!

4

1 回答 1

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),]

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

于 2018-01-20T17:14:41.243 回答