使用 metafor 和 ggplot2 时如何在散点图上绘制拟合元回归线

How to plot fitted meta-regression lines on a scatter plot when using metafor and ggplot2

我想使用 metafor.

用 ggplot(或类似的包)绘制元回归

我发现这个网站 (https://ecologyforacrowdedplanet.wordpress.com/2013/05/30/using-metafor-and-ggplot-togetherpart-2/) 解释了如何在散点图上绘制拟合模型的报告值和回归线 ggplot2metafor

然而,作者放在网站上的代码本身并没有 运行 正确。似乎我必须以某种方式计算预测,但由于我是新手 R 用户,我不确定我该怎么做。我不能像对待 lm() 的结果那样对待 rma() 的结果。

Model2<-rma.uni(yi,vi,mods=~Intensity+Method,method="ML",data=ROM)
summary(Model2)

in.plot<-ggplot(data=ROM,aes(x=Intensity,y=yi,size=1/vi,colour=Method))+geom_point(data=ROM,shape=16)
in.plot2<-in.plot+geom_line(data=ROM,aes(x=Intensity,y=preds,size=1))
in.plot3<-in.plot2+ylab("log response ratio")+xlab("Logging intensity (m-3 ha-1)")
in.plot3+theme(legend.position="none")

请访问该网站查看制作的情节(抱歉,我不确定是否可以将情节复制粘贴到此处,所以我只是引用该网站)。

当我用我的数据尝试与网站示例类似的代码时,我收到一条错误消息,提示没有“preds”。

看来我需要计算预测值,但这实际上是我想知道的,即如何绘制拟合回归线。我了解到我可以使用 predict()confint() 函数,但无法弄清楚如何将这些函数应用于 rma() 的对象。

如果您能教我如何使用 metaforggplot 重现此类情节,我将不胜感激。谢谢。


已编辑

我觉得最好能提供可以做这道题的数据和代码。以下是我的方法(我知道这不是一个好的模型,结果明智,但这是我正在处理的研究设计)。

require(metafor)
require(ggplot2)
dat <- escalc(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg)
res <- rma(yi, vi, mods = ~ alloc*ablat, data=dat)
preds <- predict.rma (res)
ggplot(dat, aes(x = ablat, y = yi, size = 1/vi, col = alloc))+
   geom_point(data = dat, shape = 16) + geom_line(data = dat, y = preds, size = 1)

我想在散点图上绘制每种分配方法的观察结果和拟合回归线。

这是我得到的错误:

Error: Aesthetics must be either length 1 or the same as the data (13): y, size

在包 metaforrma.uni 的文档中说:

"Predicted/fitted values can be obtained with predict.rma and fitted.rma. For best linear unbiased predictions, see blup.rma.uni."

我假设您可以使用这些函数创建矢量 preds 并绘制拟合线。

编辑作为对您编辑的回应:

ggplot(dat, aes(x = ablat, y = yi, size = 1/vi, col = alloc))+
  geom_point(data = dat, shape = 16) + 
  geom_line(data = dat,aes(x = ablat,y = preds$pred, size = 1))

这是您要找的吗?