我正在尝试在 R 中创建一个轮廓增强的漏斗图以进行荟萃分析。等高线增强漏斗图还显示了对应于不同 p 值的图区域(参见 Peters 等人,2008,等高线增强荟萃分析漏斗图有助于区分发表偏倚与其他不对称原因)。
我在网上找到了这个非常有用的元分析程序指南(https://bookdown.org/MathiasHarrer/Doing_Meta_Analysis_in_R/smallstudyeffects.html),建议使用以下代码来创建这样的图:
funnel(m.hksj, xlab="Hedges' g",
contour = c(.95,.975,.99),
col.contour=c("darkblue","blue","lightblue"))+
legend(1.4, 0, c("p < 0.05", "p<0.025", "< 0.01"),bty = "n",
fill=c("darkblue","blue","lightblue"))
执行此代码时,会生成绘图,但没有图例。该错误表示二元运算符有一个非数字参数。我还确保专门使用包中的funnel()
函数meta
,正如它在指南中所说的metafor
那样,在我的环境中也是如此。有人知道如何解决这个问题并创造一个美好的传说吗?
另外,我尝试了包的创建者建议的以下代码metafor
(http://www.metafor-project.org/doku.php/plots:contour_enhanced_funnel_plot):
funnel(res, level=c(.90, .95, .99),shade=c("white", "gray55", "gray75"), refline=0, legend=TRUE)
关于这个level
论点有很多警告,它甚至没有产生一个有效的漏斗图,更不用说一个图例了。在这种情况下,我假设这是由于我提交的不是 rma 对象,而是来自 meta 包的元对象。另一方面,它应该与上面的第一个代码一起工作,但事实并非如此。
感谢所有建议!
编辑:这是一个基于上述指南中提供的代码的示例
data = data.frame("Author" = c("Jones", "Goldman", "Townsend", "Martin", "Rose"),
"TE" = c(0.23, 0.56, 0.78, 0.23, 0.33),
"seTE" = c(0.324, 0.235, 0.394, 0.275, 0.348),
"subgroup" = c("one", "one", "two", "two", "three"))
m.data <- metagen(TE,
seTE,
data = data,
studlab = paste(Author),
comb.fixed = FALSE,
comb.random = TRUE,
method.tau = "SJ",
hakn = TRUE,
prediction = TRUE,
sm = "SMD")
funnel(m.data, xlab="Hedges' g",
contour = c(.95,.975,.99),
col.contour=c("darkblue","blue","lightblue"))+
legend(1.4, 0, c("p < 0.05", "p<0.025", "< 0.01"),bty = "n",
fill=c("darkblue","blue","lightblue"))