我想使用metafor
使用ggplot(或类似的包)绘制元回归。
我找到了这个网站(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()
或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)
我想绘制观察结果并在散点图上为每种分配方法拟合回归线。
这就是我得到的错误:
错误:美学必须是长度1或与数据相同 (13):y,大小
答案 0 :(得分:2)
在包rma.uni
的{{1}}文档中,它说:
“预测/拟合值可以通过predict.rma和fitted.rma获得。有关最佳线性无偏预测,请参阅blup.rma.uni。”
我假设使用这些函数,您可以创建一个向量metafor
并绘制拟合的线条。
编辑为对您的修改的回复:
preds
这是你在找什么?