我正在对来自约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")
解决方法
如果我理解正确,那么您正在对这些约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,subset=alloc=="systematic") res.a <- rma(yi,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,slab=labels,psize=1)
其他一些改进:
forest(estimates,psize=1,atransf=exp,xlab="Relative Risk (log scale)",at=log(c(.2,.5,1,2)))
附录
如果您更喜欢估算的多边形形状,则可以执行以下操作.首先绘制如上图,但使用efac = 0隐藏CI上的垂直线.然后用addpoly()绘制摘要多边形:
forest(estimates,2)),efac=0) addpoly(estimates,rows=3:1,col="white",annotate=FALSE)
您还可以在addpoly()中使用efac = 1.5来垂直拉伸多边形.根据您的口味调整因子.