我使用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')"
Run Code Online (Sandbox Code Playgroud)
显然,使用合并系数和合并协方差矩阵手动计算预测响应和误差将是直截了当的.然而,真正的问题要大得多,而且模型依赖于一些样条和交互,使计算变得相当复杂.我宁愿使用可以为我做这一切的现有功能.
R中是否有一个简单的解决方案可以输出任何给定(合并)模型对象和任何给定的新观察集的预测响应,而无需进行繁琐的代码修改?
小智 1
实现此目的的一种方法是将所有估算数据堆叠在一起,并在此完整数据集上拟合模型。之后您可以正常使用预测功能。池生成的参数估计实际上是当您分别在每个估算数据上拟合相同模型时参数估计的平均值。当然,在这种情况下,每个协变量的标准误差被低估。