使用通过 MICE 进行多重插补开发的模型预测新观察结果的响应
Posted
技术标签:
【中文标题】使用通过 MICE 进行多重插补开发的模型预测新观察结果的响应【英文标题】:Predicting responses for new observations using a model developed with multiple imputation via MICE 【发布时间】:2015-12-10 17:59:33 【问题描述】:我使用mice
通过多重插补开发了一个模型。我想使用这个模型来预测新观察(不包含缺失数据)的响应,包括标准误差。将mice
中创建的模型对象传递给predict
不起作用
使用内置 nhanes
数据集的简单示例。假设我想开发一个 age == 3 ~ bmi + hyp + chl
形式的逻辑回归模型,并使用该模型来预测概率(age = 3 | bmi = 20, hyp = 2 and chl = 190)
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)
UseMethod("predict") 中的错误:没有适用于 'predict' 的方法应用于“c('mira', 'matrix')”类的对象
pred <- predict(object = poolmodel, newdata = newdata, type = 'link', se.fit = TRUE)
UseMethod("predict") 中的错误:没有适用于 'predict' 的方法应用于“c('mipo', 'mira', 'matrix')”类的对象
显然,使用池化系数和池化协方差矩阵手动计算预测响应和误差是很简单的。然而,真正的问题要大得多,并且模型依赖于一些样条曲线和相互作用,使计算变得相当复杂。我宁愿使用可以为我完成所有这些工作的现有函数。
R 中是否有一个简单的解决方案可以输出任何给定(池化)模型对象和任何给定新观察集的预测响应,而无需进行繁琐的代码修改?
【问题讨论】:
【参考方案1】:执行此操作的一种方法是将所有估算数据堆叠在一起,并将模型拟合到这个完整的数据集上。之后,您可以正常使用函数 predict 。池生成的参数估计值实际上是当您分别对每个插补数据拟合相同模型时的参数估计值的平均值。当然,在这种情况下,每个协变量的标准误都被低估了。
【讨论】:
谢谢。当我不需要标准错误但通常我确实需要它们时,我会使用这种方法。以上是关于使用通过 MICE 进行多重插补开发的模型预测新观察结果的响应的主要内容,如果未能解决你的问题,请参考以下文章