【问题标题】:Meta-analysis: Forest plot of summary estimates using metafor package元分析:使用 metafor 包的汇总估计的森林图
【发布时间】:2014-08-11 03:29:53
【问题描述】:

我正在对大约 90 项研究的数据进行元分析。这在如何以可访问的格式显示数据以供发布方面提出了一些挑战。我想只显示不同荟萃分析的总体效应量估计值,并排除特定研究的估计值。我可以使用 metan 包并添加 summaryonly 命令在 Stata 中执行此操作。是否可以使用 metafor 包(或任何其他元分析 R 包)抑制森林图输出中的研究级效应大小?

我一直在使用 addpoly 命令添加子样本的效应大小估计值,如包文档中所述,例如:

res.a <- rma(n1i = Intervention_n, n2i = Control_n, m1i = intervention_d, m2i = control_d, sd1i = intervention_d_sd, 
         sd2i = control_d_sd, measure="MD", intercept=TRUE, data = Dataset.a, vtype="LS", method="DL", level=95, 
         digits=4, subset = (exclude==0 & child=="No"), slab=paste(Dataset.a$Label, Dataset.a$Year, sep=", "))
addpoly(res.a, row=7.5, cex=.75, font=3, mlab="Random effects model for subgroup")

【问题讨论】:

  • 我也很想这样做,但要使用 meta 包中的 metaprop 命令。当前方法的问题是我会丢失森林图上的所有其他摘要信息,例如,贡献的研究数量、事件数量、总体 n 等。如果能解决这个问题也很好。

标签: r metafor


【解决方案1】:

如果我对您的理解正确,您正在对这 90 项研究进行多项分析(例如,基于不同的子集),您的目标是在森林图中仅显示汇总估计值(基于这些分析)。那么最简单的方法就是在一个向量中收集各种分析的估计值和相应的方差,然后将其传递给forest() 函数。举个简单的例子:

### load metafor package
library(metafor)

### load BCG vaccine dataset
data(dat.bcg)

### calculate log relative risks and corresponding sampling variances
dat <- escalc(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg)

### fit random-effects models to some subsets
res.r <- rma(yi, vi, data=dat, subset=alloc=="random")
res.s <- rma(yi, vi, data=dat, subset=alloc=="systematic")
res.a <- rma(yi, vi, data=dat, subset=alloc=="alternate")

### collect model estimates and corresponding variances
estimates <- c(coef(res.r), coef(res.s), coef(res.a))
variances <- c(vcov(res.r), vcov(res.s), vcov(res.a))

### create vector with labels
labels <- c("Random Allocation", "Systematic Allocation", "Alternate Allocation")

### forest plot
forest(estimates, variances, slab=labels)

如果您不喜欢点大小不同(默认情况下,它们与方差成反比),您可以使用:

forest(estimates, variances, slab=labels, psize=1)

其他一些改进:

forest(estimates, variances, slab=labels, psize=1, atransf=exp, xlab="Relative Risk (log scale)", at=log(c(.2, .5, 1, 2)))

附录

如果您更喜欢多边形形状的估计,您可以执行以下操作。首先绘制如上图,但使用efac=0 隐藏 CI 上的垂直线。然后用addpoly() 绘制汇总多边形:

forest(estimates, variances, slab=labels, psize=1, atransf=exp, xlab="Relative Risk (log scale)", at=log(c(.2, .5, 1, 2)), efac=0)
addpoly(estimates, variances, atransf=exp, rows=3:1, col="white", annotate=FALSE)

您还可以在addpoly() 中使用efac=1.5 来垂直拉伸多边形。根据您的口味调整因素。

【讨论】:

  • 完美 - 我也会从 Stack Overflow 上的问题中链接到这个(抱歉,我没有足够的声誉将其标记为有用)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
相关资源
最近更新 更多