R语言 如何将插补数据上的拟合模型组合成一个可用模型以进行新预测?

fykwrbwg  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(128)

我正在执行预测分析,即根据部分数据训练模型,并使用剩余部分测试模型。我熟悉MICE软件包和使用预测平均值匹配的插补程序。
我的理解是,使用插补的正确方法是创建大量插补数据集,对每个插补数据集拟合一个模型,然后将所有这些拟合模型的系数合并到一个单一模型中。我知道如何执行此操作,并查看系数汇总,以便对变量执行推断。但是,这不是我的目标;我需要用一个单一的模型来结束,我可以用它来预测新的值。
简单地说,当我尝试将predict函数用于我使用MICE得到的模型时,它不起作用。
有什么建议吗?我用R写的。
编辑:以airquality数据集为例,我的代码如下所示:

imputed_data <- mice(airquality, method = c(rep("pmm", 6)), m = 5, maxit = 5)
model <- with(imputed_data, lm(Ozone ~ Solar.R + Wind + Temp + Month + Day))
pooled_model <- pool(model)

这为我提供了一个跨5个插补数据集的合并模型。但是,我无法将predict函数用于此模型。当我执行以下命令时:

predict(pooled_model, newdata = airquality)

我得到这个错误:

Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "c('mira', 'matrix')"
s6fujrry

s6fujrry1#

不确定您要查找的内容,但类似以下内容可能有效:

library(mice)
library(mitools)
  
data(mtcars)
mtcars$qsec[c(4,6,8,21)] <- NA
imps <- mice(mtcars, m=10)
comps <- lapply(1:imps$m, function(i)complete(imps, i))
mods <- lapply(comps, function(x)lm(qsec ~hp + drat + wt, data=x))
pmod <- MIcombine(mods)

pmod$coefficients
#> (Intercept)          hp        drat          wt 
#> 18.15389098 -0.02570887  0.11434023  0.92348390

newvals <- data.frame(hp=300, drat=4, wt=2.58)
X <- model.matrix(~hp + drat + wt, data=newvals)
preds <- X %*% pmod$coefficients
preds
#>       [,1]
#> 1 13.28118

reprex package(v2.0.1)于2023年2月1日创建

相关问题