8

我已经通过多重插补开发了一个模型,使用mice. 我想使用这个模型来预测新观察(不包含缺失数据)的响应,包括标准错误。将创建的模型对象传递micepredict不起作用

使用内置nhanes数据集的简单示例。假设我想开发一个形式为 的逻辑回归模型age == 3 ~ bmi + hyp + chl,并使用该模型来预测 prob(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 中是否有一个简单的解决方案可以输出任何给定(池化)模型对象和任何给定新观察集的预测响应,而无需进行繁琐的代码修改?

4

1 回答 1

1

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

于 2017-01-15T15:00:17.270 回答