R语言 使用emmeans为数据集中的每个病例拟合值

zpgglvta  于 2023-03-27  发布在  其他
关注(0)|答案(1)|浏览(215)

我尝试使用emmeansmtcars中的每个观测值获得disp预测。我可以使用以下命令获得平均disp预测:

library(emmeans)
mod <- lm(mpg ~ disp + hp, data = mtcars)
emm <- emmeans(mod, "disp", at=list(disp=c(130,135,140)))

但是,是否有可能获得数据集中每个案例的拟合值,类似于我使用predict(mod)得到的值?
编辑:Ben Bolker建议:

nd <- expand.grid(hp = unique(mtcars$hp), disp = 130)
mean(predict(mod, newdata = nd))
23.20037

然而,这与我在emmeans中获得的平均值不匹配:

emmeans(mod, "disp", at=list(disp=130))

disp emmean    SE df lower.CL upper.CL
  130   23.1 0.928 29     21.2       25
baubqpgj

baubqpgj1#

不如

nd <- expand.grid(hp = unique(mtcars$hp), disp = c(130,135,140))
predict(mod, newdata = nd)


(or如果您确实希望对每个观测进行预测,则跳过unique(),即使它们具有非唯一的hp ...)
如果您想要一个平均值与emmeans匹配的预测帧,则需要跳过unique()。如果您只想考虑disp的单个值,则不需要expand.grid

nd <- data.frame(hp = mtcars$hp, disp = 130)
mean(predict(mod, newdata = nd))
## [1] 23.14716

emmeans比较(转换为 Dataframe ,以便我们可以看到全分辨率)

as.data.frame(emmeans(mod, "disp", at=list(disp=130)))
 disp   emmean        SE df lower.CL upper.CL
  130 23.14716 0.9283063 29 21.24856 25.04576

相关问题