使用通过MICE多次插补开发的模型预测新观察的响应

时间:2015-09-14 16:44:06

标签: r predict r-mice

我使用MICE通过多次插补开发了一个模型。我想使用这个模型来预测新观察的响应(不包含缺失数据),包括标准误差。将在MICE中创建的模型对象传递给predict()函数不起作用

使用内置nhanes数据集的简单示例。假设我想开发一个形式为age==3 ~ bmi + hyp + chl的逻辑回归模型,并使用此模型预测,例如,prob(年龄= 3 | bmi = 20,hyp = 2和chl = 190)

#impute missing data on bmi, hyp, chl
library('mice')
imp<-mice(nhanes, seed=1)

#create model on each imputed dataset
model <- with(imp, glm(age==3 ~ bmi + hyp + chl, family=binomial))

#pool models into one
poolmodel <- pool(model)

#new data
newdata <- data.frame(bmi=20, hyp=2, chl=190)

#attempt to predict response using predict() function
pred <- predict(object=model, newdata=newdata, type='link', se.fit=TRUE)
#Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "c('mira', 'matrix')"

pred <- predict(object=poolmodel, newdata=newdata, type='link', se.fit=TRUE)
#Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "c('mipo', 'mira', 'matrix')"

显然,使用合并系数和合并协方差矩阵手动计算预测响应和误差将是直截了当的。然而,真正的问题要大得多,而且模型依赖于一些样条和交互,使计算变得相当复杂。我宁愿使用可以为我做这一切的现有功能。

R中是否有一个简单的解决方案可以输出任何给定(合并)模型对象和任何给定的新观察集的预测响应,而不必进行繁琐的代码修改?

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是将所有插补数据堆叠在一起,并在此完整数据集上拟合模型。之后,您可以使用预测正常功能。池生成的参数估计实际上是分别在每个插补数据上拟合相同模型时参数估计的平均值。当然,在这种情况下,每个协变量的标准误差都被低估了。