使用 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/) 解释了如何在散点图上绘制拟合模型的报告值和回归线 ggplot2
和 metafor
。
然而,作者放在网站上的代码本身并没有 运行 正确。似乎我必须以某种方式计算预测,但由于我是新手 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()
的对象。
如果您能教我如何使用 metafor
和 ggplot
重现此类情节,我将不胜感激。谢谢。
已编辑
我觉得最好能提供可以做这道题的数据和代码。以下是我的方法(我知道这不是一个好的模型,结果明智,但这是我正在处理的研究设计)。
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
在包 metafor
的 rma.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))
这是您要找的吗?
我想使用 metafor
.
我发现这个网站 (https://ecologyforacrowdedplanet.wordpress.com/2013/05/30/using-metafor-and-ggplot-togetherpart-2/) 解释了如何在散点图上绘制拟合模型的报告值和回归线 ggplot2
和 metafor
。
然而,作者放在网站上的代码本身并没有 运行 正确。似乎我必须以某种方式计算预测,但由于我是新手 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()
的对象。
如果您能教我如何使用 metafor
和 ggplot
重现此类情节,我将不胜感激。谢谢。
已编辑
我觉得最好能提供可以做这道题的数据和代码。以下是我的方法(我知道这不是一个好的模型,结果明智,但这是我正在处理的研究设计)。
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
在包 metafor
的 rma.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))
这是您要找的吗?