我有一个data.frame
> s1g2
centre Estimate Var n
factor(groupchange)2 1 0.6821912 1.486330e+00 217
factor(groupchange)21 2 0.3535025 1.622455e+00 165
factor(groupchange)22 3 -15.4053858 3.284365e+06 152
factor(groupchange)23 4 -0.2659903 1.837585e+00 137
factor(groupchange)24 5 0.4702335 2.198379e+00 201
factor(groupchange)25 6 1.1657077 9.546860e-01 159
>
我想使用metafor
库
这就是我试过的
res <- rma(Estimate, Var, data=s1g2, method="ML")
sav <- blup(res)
par(family="mono", mar=c(5,4,1,2))
forest(res, refline=res$b, addcred=TRUE, xlim=c(-7,8),alim=c(-3,3), slab=1:6, psize=.8,
ilab=paste0("(n = ", formatC(s1g2[["n"]], width=3, big.mark=","), ")"),
ilab.xpos=-3.5, ilab.pos=2, rows=6:1+.15)
text(-7, 15, "Trial (total n)", pos=4)
text( 8, 15, "Log Odds Ratio [95% CI]", pos=2)
它可以工作但是中心= 3的箭头在左边太长了。
我怎样才能减少它?命令alim
似乎只适用于右侧。
此外,还将接受使用另一个库进行绘图的解决方案。 我希望像:http://mcfromnz.files.wordpress.com/2012/11/forest_plot_2.png
答案 0 :(得分:1)
我不知道估计代表什么,但有一个中心的值为-15.41(和一个巨大的差异)似乎与其余的不同。如果轴限制为-3到3,则估计实际上不会显示,并且CI很宽,它将覆盖整个轴范围。
无论如何,forest
包中的各种metafor
函数会强制执行包含实际数据的绘图/轴限制。这就是绘图/轴限制扩展到-15.41值的原因。
实质上,forest.rma
中的这些行是您不需要的:
if (xlim[1] > min(yi, na.rm = TRUE)) {
xlim[1] <- min(yi, na.rm = TRUE)
}
if (xlim[2] < max(yi, na.rm = TRUE)) {
xlim[2] <- max(yi, na.rm = TRUE)
}
if (alim[1] > min(yi, na.rm = TRUE)) {
alim[1] <- min(yi, na.rm = TRUE)
}
if (alim[2] < max(yi, na.rm = TRUE)) {
alim[2] <- max(yi, na.rm = TRUE)
因此,一种选择是下载源包,注释掉这些行,然后从源代码安装包。
这是一个黑客解决方案:
res <- rma(Estimate, Var, data=s1g2, method="ML")
res$yi.f[3] <- NA
res$vi.f[3] <- NA
options(na.action="na.pass")
par(family="mono", mar=c(5,4,1,2))
forest(res, refline=res$b, addcred=TRUE, xlim=c(-7,8),alim=c(-3,3), slab=1:6, psize=.8,
ilab=paste0("(n = ", formatC(s1g2[["n"]], width=3, big.mark=","), ")"),
ilab.xpos=-3.5, ilab.pos=2, rows=6:1+.15)
text(-7, 15, "Trial (total n)", pos=4)
text( 8, 15, "Log Odds Ratio [95% CI]", pos=2)
library("shape")
Arrows(-3, 4.15, 3, 4.15, code=3, arr.type="triangle", )
rect(4, 3.5, 8, 4.5, col="white", border=NA)
text(4, 4.15, "-15.41 [ see note ]", pos=4)
你必须用箭头长度/高度旋转才能使它看起来像其他的一样(见help(Arrows)
)。而且你将不得不玩弄文本的位置。我不会添加实际的CI边界(-3567.41到3536.60),因为这些基本上没有意义。相反,我会在解释问题的情节中添加一个注释。