Add Polygons to Forest Plots (Method for 'rma' Objects)
Function to add a polygon to a forest plot showing the summary estimate with corresponding confidence interval based on an object of class "rma".
## S3 method for class 'rma'
addpoly(x, row=-2, level=x$level, annotate=TRUE,
addcred=FALSE, digits=2, width, mlab, transf, atransf, targs,
efac=1, col, border, fonts, cex, ...)x |
an object of class |
row |
value specifying the row (or more generally, the horizontal position) for plotting the polygon (the default is |
level |
numerical value between 0 and 100 specifying the confidence interval level (the default is to take the value from the object). |
annotate |
logical specifying whether annotations for the summary estimate should be added to the plot (the default is |
addcred |
logical specifying whether the bounds of the credibility/prediction interval should be added to the plot (the default is |
digits |
integer specifying the number of decimal places to which the annotations should be rounded (the default is 2). |
width |
optional integer to manually adjust the width of the columns for the annotations. |
mlab |
optional character string giving a label for the summary estimate polygon. If unspecified, the function sets a default label. |
transf |
optional argument specifying the name of a function that should be used to transform the summary estimate and confidence interval bound (e.g., |
atransf |
optional argument specifying the name of a function that should be used to transform the annotations (e.g., |
targs |
optional arguments needed by the function specified via |
efac |
vertical expansion factor for the polygon. The default value of 1 should usually work okay. |
col |
optional character string specifying the name of a color to use for the polygon. If unspecified, the function sets a default color. |
border |
optional character string specifying the name of a color to use for the border of the polygon. If unspecified, the function sets a default color. |
fonts |
optional character string specifying the font to use for the label and annotations. If unspecified, the default font is used. |
cex |
optional symbol expansion factor. If unspecified, the function tries to set this to a sensible value. |
... |
other arguments. |
The function can be used to add a polygon to an existing forest plot created with the forest function. The polygon shows the summary estimate based on a fixed- or random-effects model. Using this function, summary estimates based on different types of models can be shown in the same plot. Also, summary estimates based on a subgrouping of the studies can be added to the plot this way. See examples below.
The arguments transf, atransf, efac, and cex should always be set equal to the same values used to create the forest plot.
Wolfgang Viechtbauer wvb@metafor-project.org http://www.metafor-project.org/
Viechtbauer, W. (2010). Conducting meta-analyses in R with the metafor package. Journal of Statistical Software, 36(3), 1–48. https://www.jstatsoft.org/v036/i03.
### meta-analysis of the log risk ratios using the Mantel-Haenszel method
res <- rma.mh(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg,
slab=paste(author, year, sep=", "))
### forest plot of the observed risk ratios with summary estimate
forest(res, atransf=exp, xlim=c(-8,6), ylim=c(-2.5,16), header=TRUE)
### meta-analysis of the log risk ratios using a random-effects model
res <- rma(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg)
### add summary estimate from the random-effects model to forest plot
addpoly(res, atransf=exp)
### forest plot with subgrouping of studies and summaries per subgroup
res <- rma(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg,
slab=paste(author, year, sep=", "))
forest(res, xlim=c(-16, 6), at=log(c(.05, .25, 1, 4)), atransf=exp,
ilab=cbind(dat.bcg$tpos, dat.bcg$tneg, dat.bcg$cpos, dat.bcg$cneg),
ilab.xpos=c(-9.5,-8,-6,-4.5), cex=.75, ylim=c(-1, 27),
order=order(dat.bcg$alloc), rows=c(3:4,9:15,20:23),
mlab="RE Model for All Studies", header="Author(s) and Year")
op <- par(cex=.75, font=4)
text(-16, c(24,16,5), c("Systematic Allocation", "Random Allocation",
"Alternate Allocation"), pos=4)
par(font=2)
text(c(-9.5,-8,-6,-4.5), 26, c("TB+", "TB-", "TB+", "TB-"))
text(c(-8.75,-5.25), 27, c("Vaccinated", "Control"))
par(op)
res <- rma(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg,
subset=(alloc=="systematic"))
addpoly(res, row=18.5, cex=.75, atransf=exp, mlab="RE Model for Subgroup")
res <- rma(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg,
subset=(alloc=="random"))
addpoly(res, row=7.5, cex=.75, atransf=exp, mlab="RE Model for Subgroup")
res <- rma(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg,
subset=(alloc=="alternate"))
addpoly(res, row=1.5, cex=.75, atransf=exp, mlab="RE Model for Subgroup")Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.