Meta-analysis: forest graph of total assessment using metafor package

I meta-analyze data from ~ 90 studies. This creates some problems in how to display the data in a format that is available for publication. I would like to display only general estimates of the effect size for different meta-analyzes and exclude estimates related to specific studies. I can do this in Stata using the metan package and adding the summaryonly command. Is it possible to suppress the dimensions of the study level effect at the outputs of a forest plot using the metafor package (or any other R meta-analysis package)?

I used the addpoly command to add effect size estimates for the subsample, as described in the package documentation, for example:

 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") 
+6
source share
1 answer

If I understand you correctly, you are conducting several analyzes with these 90 studies (for example, based on different subsets), and your goal is to show only the final estimates (based on these analyzes) in the forest area. Then the simplest approach would be to simply collect the estimates and the corresponding variances of the various analyzes in the vector, and then pass this to the forest() function. Let me give you a simple example:

 ### 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) 

If you don’t like that the sizes of the points differ (by default they are drawn inversely with the deviations), you can use:

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

A couple of other improvements:

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

ADDITION

If you prefer polygon shapes for grades, you can do the following. First draw the graph as above, but use efac=0 to hide the vertical lines on the CI. Then just draw summary polygons with 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) 

You can also use efac=1.5 in addpoly() to stretch the polygons vertically. Adjust the ratio to your taste.

+8
source

Source: https://habr.com/ru/post/971016/


All Articles