metafor中的predict.rma()函数,用于跨主持人进行荟萃分析

e4eetjau  于 2023-09-27  发布在  其他
关注(0)|答案(2)|浏览(96)

我正在使用meta for进行多变量荟萃分析。我想预测新主持人的影响,但对于其中一个主持人,我不想输入值本身,但我希望预测函数对该主持人进行荟萃分析(在下面的示例中,这是grade
我在这里使用的是玩具数据集dat.bangertdrowns2004

# load metafor package
library(metafor)
dat <- dat.bangertdrowns2004

# fit model
res <- rma.mv(yi, vi, mods = ~ grade + length + pers - 1, random = ~ 1 | ni,  data=dat)
res

# predict
gridpred <- expand.grid(length=4:10, pers=1)
pred.res <- predict.rma(object = res , newmods = as.matrix(gridpred))

当我运行这段代码时,我得到一个错误,因为它提到我需要输入grade的值。

Error in predict.rma(object = res, newmods = as.matrix(gridpred)) : 
  Argument 'newmods' does not specify values for this variable: grade

有没有一种方法可以使用predict.rma()对length=4:10pers=1的成绩进行荟萃分析?

xriantvc

xriantvc1#

如果你确实在寻找这样的“调整后的均值/估计值”,那么应该将grade的值保持在其均值。所以语法应该是:

gridpred <- expand.grid(length=4:10, pers=1, grade=colMeans(model.matrix(res))["grade"])
pred.res <- predict.rma(object = res , newmods = as.matrix(gridpred))
pred.res

如果你想使用emmeans,你可以用途:

library(emmeans)
sav <- emmprep(res, at=list(pers=1, length=4:10))
emmeans(sav, specs="1", by=c("pers","length"))
j2qf4p5b

j2qf4p5b2#

谢谢你的建议沃尔夫冈我已经根据您发送的链接(https://www.metafor-project.org/doku.php/tips:computing_adjusted_effects)在“附录:使用emmeans包”。

for (l in 4:10){
  sav <- emmprep(res, at=list(length=l, pers=1, grade=c(1:4)))
  emm <- emmeans(sav, specs="1", type="response", weights="proportional")
  print(emm)
}

这是所有年级每个长度值的平均值,这是你的意思吗?

相关问题