0

我想使用 ggplot (或类似包)绘制元回归metafor

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

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

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()orconfint()函数,但无法弄清楚如何将这些函数应用于rma()的对象。

metafor如果您能教我如何使用and重现这种类型的情节,我将不胜感激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)

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

这是我得到的错误:

错误:美学必须是长度1或与数据相同(13):y,大小

4

1 回答 1

2

rma.uni在包的文档中metafor它说:

“可以使用 predict.rma 和 fit.rma 获得预测/拟合值。有关最佳线性无偏预测,请参阅 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))

这是你要找的吗?

于 2018-01-19T20:26:29.730 回答