An optional vector used to sort the individual studies
(must be of same length as x$TE).
studlab
A logical indicating whether study labels should be
printed in the graph. A vector with study labels can also be
provided (must be of same length as x$TE then).
level
The level used to calculate confidence intervals for
individual studies.
level.comb
The level used to calculate confidence intervals for
pooled estimates.
comb.fixed
A logical indicating whether fixed effect estimate
should be plotted.
comb.random
A logical indicating whether random effects estimate
should be plotted.
overall
A logical indicating whether overall summaries should
be plotted. This argument is useful in combination with the
argument byvar if summaries should only be plotted on group
level.
text.fixed
A character string used in the plot to label the
pooled fixed effect estimate.
text.random
A character string used in the plot to label the
pooled random effects estimate.
lty.fixed
Line type (pooled fixed effect estimate).
lty.random
Line type (pooled random effects estimate).
prediction
A logical indicating whether a prediction interval
should be printed.
level.predict
The level used to calculate prediction interval
for a new study.
text.predict
A character string used in the plot to label the
prediction interval.
bylab
A character string with a label for the grouping variable.
print.byvar
A logical indicating whether the name of the grouping
variable should be printed in front of the group labels.
text.fixed.w
A character string to label the pooled fixed
effect estimate within subgroups, or a character vector of same
length as number of subgroups with corresponging labels.
text.random.w
A character string to label the pooled random
effect estimate within subgroups, or a character vector of same
length as number of subgroups with corresponging labels.
bysort
A logical indicating whether groups should be ordered
alphabetically.
pooled.totals
A logical indicating whether total number of
observations should be given in the figure.
pooled.events
A logical indicating whether total number of
events should be given in the figure.
xlab
A label for the x-axis.
xlab.pos
A numeric specifying the center of the label
on the x-axis.
smlab
A label for the summary measurex (printed at top of figure).
smlab.pos
A numeric specifying the center of the label
for the summary measure.
xlim
The x limits (min,max) of the plot, or the character "s"
to produce symmetric forest plots.
allstudies
A logical indicating whether studies with inestimable
treatment effects should be plotted.
weight
A character string indicating which type of plotting
symbols is to be used for individual treatment estimates. One of
missing (see Details), "same", "fixed", or
"random", can be abbreviated. Plot symbols have the same size
for all studies or represent study weights from fixed effect or
random effects model.
pscale
A numeric giving scaling factor for probabilities for
objects of class metaprop.
ref
A numerical giving the reference value to be plotted as a
line in the forest plot. No reference line is plotted if argument
ref is equal to NA.
layout
A character string specifying the layout of the forest
plot (see Details).
leftcols
A character vector specifying (additional) columns
to be plotted on the left side of the forest plot or a logical value
(see Details).
rightcols
A character vector specifying (additional) columns
to be plotted on the right side of the forest plot or a logical
value (see Details).
leftlabs
A character vector specifying labels for (additional)
columns on left side of the forest plot (see Details).
rightlabs
A character vector specifying labels for (additional)
columns on right side of the forest plot (see Details).
lab.e
Label to be used for experimental group in table
heading.
lab.c
Label to be used for control group in table
heading.
lab.e.attach.to.col
A character specifying the column name where
label lab.e should be attached to in table heading.
lab.c.attach.to.col
A character specifying the column name where
label lab.c should be attached to in table heading.
label.left
Graph label on left side of forest plot.
label.right
Graph label on right side of forest plot.
lab.NA
A character string to label missing values.
lab.NA.effect
A character string to label missing values in
individual treatment estimates and confidence intervals.
lwd
The line width, see par.
at
The points at which tick-marks are to be drawn, see
grid.xaxis.
label
A logical value indicating whether to draw the
labels on the tick marks, or an expression or character vector which
specify the labels to use. See grid.xaxis.
col.i
The colour for individual study results and confidence limits.
col.i.inside.square
The colour for individual study results and
confidence limits if confidence limits are completely within squares.
col.square
The colour for squares reflecting study's weight in
the meta-analysis.
col.square.lines
The colour for the outer lines of squares
reflecting study's weight in the meta-analysis.
col.diamond
The colour of diamonds representing the results for
fixed effect and random effects models.
col.diamond.fixed
The colour of diamonds for fixed effect estimates.
col.diamond.random
The colour of diamonds for random effects estimates.
col.diamond.lines
The colour of the outer lines of diamonds
representing the results for fixed effect and random effects models.
col.diamond.fixed.lines
The colour of the outer lines of diamond
for fixed effect estimate.
col.diamond.random.lines
The colour of the outer lines of diamond
for random effects estimate.
col.predict
Background colour of prediction interval.
col.predict.lines
Colour of outer lines of prediction interval.
col.by
The colour to print information on subgroups.
print.I2
A logical value indicating whether to print the value
of the I-squared statistic.
print.I2.ci
A logical value indicating whether to print the
confidence interval of the I-squared statistic.
print.tau2
A logical value indicating whether to print the value
of the between-study variance tau-squared.
print.Q
A logical value indicating whether to print the value
of the heterogeneity statistic Q.
print.pval.Q
A logical value indicating whether to print the
p-value of the heterogeneity statistic Q.
hetstat
A logical value indicating whether to print results for
heterogeneity measures at all.
overall.hetstat
A logical value indicating whether to print
results for heterogeneity measures for overall treatment
comparisons. This argument is useful in combination with subgroup
analyses (list object byvar) if heterogeneity statistics
should only be printed on group level.
hetlab
Label printed in front of results for heterogeneity
measures.
text.I2
Label for I-squared statistic.
text.tau2
Label for between-study variance tau-squared.
test.overall
A logical value indicating whether to print
results of test for overall effect.
test.overall.fixed
A logical value indicating whether to
print results of test for overall effect (based on fixed effect
model).
test.overall.random
A logical value indicating whether to
print results of test for overall effect (based on random effects
model).
label.test.overall.fixed
Label printed in front of results of
test for overall effect (based on fixed effect model).
label.test.overall.random
Label printed in front of results
of test for overall effect (based on random effects model).
test.subgroup
A logical value indicating whether to print
results of test for subgroup differences.
test.subgroup.fixed
A logical value indicating whether to
print results of test for subgroup differences (based on fixed
effect model).
test.subgroup.random
A logical value indicating whether to
print results of test for subgroup differences (based on random
effects model).
label.test.subgroup.fixed
Label printed in front of results
of test for subgroup differences (based on fixed effect model).
label.test.subgroup.random
Label printed in front of results
of test for subgroup differences (based on random effects model).
print.Q.subgroup
A logical value indicating whether to print
the value of the heterogeneity statistic Q (test for subgroup
differences).
fontsize
The size of text (in points), see gpar.
fs.heading
The size of text for column headings, see gpar.
fs.fixed
The size of text for results of fixed effect model, see gpar.
fs.random
The size of text for results of random effects model, see gpar.
fs.predict
The size of text for results of prediction interval, see gpar.
fs.study
The size of text for results of individual studies, see gpar.
fs.fixed.labels
The size of text for label of fixed effect model, see gpar.
fs.random.labels
The size of text for label of random effects model, see gpar.
fs.predict.labels
The size of text for label of prediction interval, see gpar.
fs.study.labels
The size of text for labels of individual studies, see gpar.
fs.hetstat
The size of text for heterogeneity measures, see gpar.
fs.test.overall
The size of text of test for overall effect, see gpar.
fs.test.subgroup
The size of text of test of subgroup differences, see gpar.
fs.axis
The size of text on x-axis, see gpar.
fs.smlab
The size of text of label for summary measure, see gpar.
fs.xlab
The size of text of label on x-axis, see gpar.
fs.lr
The size of text of label on left and right side of forest plot, see gpar.
ff.heading
The fontface for column headings, see gpar.
ff.fixed
The fontface of text for results of fixed effect model, see gpar.
ff.random
The fontface of text for results of random effects model, see gpar.
ff.predict
The fontface of text for results of prediction interval, see gpar.
ff.study
The fontface of text for results of individual studies, see gpar.
ff.fixed.labels
The fontface of text for label of fixed effect model, see gpar.
ff.random.labels
The fontface of text for label of random effects model, see gpar.
ff.predict.labels
The fontface of text for label of prediction interval, see gpar.
ff.study.labels
The fontface of text for labels of individual studies, see gpar.
ff.hetstat
The fontface of text for heterogeneity measures, see gpar.
ff.test.overall
The fontface of text of test for overall effect, see gpar.
ff.test.subgroup
The fontface of text for test of subgroup differences, see gpar.
ff.axis
The fontface of text on x-axis, see gpar.
ff.smlab
The fontface of text of label for summary measure, see gpar.
ff.xlab
The fontface of text of label on x-axis, see gpar.
ff.lr
The fontface of text of label on left and right side of forest plot, see gpar.
squaresize
A numeric used to increase or decrease the size of
squares in the forest plot.
plotwidth
A unit object specifying width of the forest plot.
colgap
A unit object specifying gap between columns printed on
left and right side of forest plot.
colgap.left
A unit object specifying gap between columns printed on
left side of forest plot.
colgap.right
A unit object specifying gap between columns printed on
right side of forest plot.
colgap.forest
A unit object specifying gap between column
adjacent to forest plot and the forest plot.
colgap.forest.left
A unit object specifying gap between column
on the left side of forest plot and the forest plot.
colgap.forest.right
A unit object specifying gap between column
on the right side of forest plot and the forest plot.
just
Justification of text in all columns but columns
with study labels and additional variables (possible values:
"left", "right", "center").
just.studlab
Justification of text for study labels (possible
values: "left", "right", "center").
just.addcols
Justification of text for additional columns (possible
values: "left", "right", "center").
addspace
A logical value indicating whether additional space
(i.e. a blank row) is printed above and below study results.
new
A logical value indicating whether a new figure should
be printed in an existing graphics window.
backtransf
A logical indicating whether results should be
back transformed in forest plots. If backtransf=TRUE,
results for sm="OR" are presented as odds ratios rather
than log odds ratios and results for sm="ZCOR" are
presented as correlations rather than Fisher's z transformed
correlations, for example.
digits
Minimal number of significant digits for treatment
effects, see print.default.
digits.se
Minimal number of significant digits for standard
errors, see print.default.
digits.tau2
Minimal number of significant digits for
between-study variance, see print.default.
digits.pval
Minimal number of significant digits for p-value
of overall treatment effect, see print.default.
digits.pval.Q
Minimal number of significant digits for
p-value of heterogeneity test, see print.default.
digits.Q
Minimal number of significant digits for
heterogeneity statistic Q, see print.default.
digits.I2
Minimal number of significant digits for I-squared
statistic, see print.default.
digits.weight
Minimal number of significant digits for
weights, see print.default.
...
Additional graphical arguments (ignored at the moment).
Details
A forest plot, also called confidence interval plot, is drawn in the
active graphics window. Subgroup analyses are conducted and
displayed in the plot if byvar is not missing.
The forest function is based on the grid graphics
system. In order to print the forest plot, (i) resize the graphics
window, (ii) either use dev.copy2eps or
dev.copy2pdf.
Result of a test for overall effect or subgroup differences are
printed if argument test.overall.fixed,
test.overall.random, test.subgroup.fixed, or
test.subgroup.random is TRUE; by default, these
arguments are FALSE. R function settings.meta
can be used to change this default for the entire R session by
setting argument test.overall=TRUE or
test.subgroup=TRUE.
Information from object x is utilised if argument weight
is missing. Weights from the fixed effect model are used
(weight="fixed") if argument x$comb.fixed is
TRUE; weights from the random effects model are used
(weight="random") if argument x$comb.random
is TRUE and x$comb.fixed is FALSE.
The arguments leftcols and rightcols can be used to
specify columns which are plotted on the left and right side of the
forest plot, respectively. If argument rightcols is
FALSE, no columns will be plotted on the right side. By
default, i.e. if arguments leftcols and rightcols are
NULL and layout="meta", the following default columns
will be plotted.
Additional settings
Default for argument rightcols
---
c("effect", "ci")
comb.fixed=TRUE & comb.random=FALSE
c("effect", "ci", "w.fixed")
comb.fixed=FALSE & comb.random=TRUE
c("effect", "ci", "w.random")
comb.fixed=TRUE & comb.random=TRUE
c("effect", "ci", "w.fixed", "w.random")
By default, estimated treatment effect and corresponding confidence
interval will be printed. Depending on arguments comb.fixed
and comb.random, weights of the fixed effect and/or random
effects model will be given too. For an object of class
metacum or metainf only the estimated treatment effect
with confidence interval are plotted.
Depending on the class of the meta-analysis object a different set
of columns is printed on the left side of a forest plot.
The arguments leftlabs and rightlabs can be used to
specify column headings which are plotted on left and right side of
the forest plot, respectively. For certain columns predefined labels
exist. If the arguments leftlabs and rightlabs are
NULL, the following default labels will be used:
Column
studlab
TE
seTE
n.e
n.c
n
Label
"Study"
"TE"
"seTE"
"Total"
"Total"
"Total"
Column
event.e
event.c
event
mean.e
mean.c
Label
"Events"
"Events"
"Events"
"Mean"
"Mean"
Column
sd.e
sd.c
time.e
time.c
Label
"SD"
"SD"
"Time"
"Time"
Column
effect
ci
w.fixed
w.random
Label
x$sm
x$level-CI
"W(fixed)"
"W(random)"
For additional columns the column name will be used
as label. It is possible to only provide labels for new columns (see
Examples). Otherwise the length of leftlabs and
rightlabs must be the same as the number of printed
columns. The value NA can be used to specify columns using
the default labels (see Example).
If argument layout="revman5" (and arguments leftcols
and rightcols are NULL) all columns mentioned above
will be printed on the left side of the forest plot.
If arguments lab.e and lab.c are NULL,
"Experimental" and "Control" are used as labels for experimental and
control group, respectively.
The arguments pscale can be used to rescale proportions
for objects of class metaprop, e.g. pscale=100 means
that proportions are expressed per 100 observations. This is useful in
situations with (very) low proportions. For pscale=100, column
heading and x-axis label are changed to "Prop (in %)" and
"Proportion (in %)", respectively.
A prediction interval for treatment effect of a new study (Higgins
et al., 2009) is given in the forest plot if arguments
prediction and comb.random are TRUE. For
graphical presentation of prediction intervals the approach by
Guddat et al. (2012) is used.
Note, in R package meta, version 3.0-0 the following arguments have
been removed from R function forest.meta: byvar, level, level.comb,
level.predict. This functionality is now provided by R function
update.meta (or directly in R functions
metabin, metacont,
metagen, metacor, and
metaprop).
Guddat C, Grouven U, Bender R, Skipka G 2012), A note on the
graphical presentation of prediction intervals in random-effects
meta-analyses. Systematic Reviews, 1, 34.
Higgins JPT, Thompson SG, Spiegelhalter DJ (2009),
A re-evaluation of random-effects meta-analysis.
Journal of the Royal Statistical Society: Series A,
172, 137-159.
See Also
metabin, metacont, metagen
Examples
data(Olkin95)
meta1 <- metabin(event.e, n.e, event.c, n.c,
data=Olkin95, subset=c(41,47,51,59),
sm="RR", method="I",
studlab=paste(author, year))
#
# Do (symmetric) forest plot
#
forest(meta1)
#
# Forest plot specifying argument xlim
#
forest(meta1, xlim=c(0.01, 10))
#
# Add prediction interval to forest plot
#
forest(meta1, prediction=TRUE)
#
# Print results of test for overall effect
#
forest(meta1, test.overall.fixed=TRUE, test.overall.random=TRUE)
#
# Forest plot with 'classic' layout used in
# R package meta, version < 1.6-0
#
forest(meta1, col.square="black", hetstat=FALSE)
#
# Layout of forest plot similar to RevMan 5
#
forest(meta1, layout="revman5", comb.random=FALSE)
#
# Change set of columns printed on left side
# of forest plot
#
forest(meta1, comb.random=FALSE,
leftcols="studlab")
#
# Do not print columns on right side of forest plot
#
forest(meta1, rightcols=FALSE)
#
# Change study label to "Author"
#
forest(meta1, comb.random=FALSE,
leftlabs=c("Author", NA, NA, NA, NA))
#
# Just give effect estimate and 95% confidence interval
# on right side of forest plot
#
forest(meta1, rightcols=c("effect", "ci"))
#
# 1. Change order of columns on left side
# 2. Attach labels to columns 'event.e' and 'event.c'
# instead of columns 'n.e' and 'n.c'
#
forest(meta1,
leftcols=c("studlab", "n.e", "event.e", "n.c", "event.c"),
lab.e.attach.to.col="event.e",
lab.c.attach.to.col="event.c")
#
# Specify column labels only for newly created variables
# 'year' and 'author' (which are part of dataset Olkin95)
#
forest(meta1,
leftcols=c("studlab", "event.e", "n.e", "event.c", "n.c",
"author", "year"),
leftlabs=c("Author", "Year of Publ"))
#
# Center text in all columns
#
forest(meta1,
leftcols=c("studlab", "event.e", "n.e", "event.c", "n.c",
"author", "year"),
leftlabs=c("Author", "Year of Publ"), hetstat=FALSE,
just="center", just.addcols="center", just.studlab="center")
## Not run:
#
# Same result
#
forest(meta1,
leftcols=c("studlab", "event.e", "n.e", "event.c", "n.c",
"author", "year"),
leftlabs=c("Author", "Year of Publ"), hetstat=FALSE,
just="c", just.addcols="c", just.studlab="c")
## End(Not run)
#
# Change some fontsizes and fontfaces
#
forest(meta1,
fs.study=10, ff.study="italic",
fs.study.label=11, ff.study.label="bold",
fs.axis=5, ff.axis="italic",
ff.smlab="bold.italic",
ff.fixed="plain", ff.hetstat="plain")
#
# Change some colours
#
forest(meta1,
col.diamond="green", col.diamond.lines="red",
col.i=c("green", "blue", "red", "orange"),
col.square="pink", col.square.lines="black")
#
# Sort by weight in fixed effect model
#
forest(meta1, sortvar=1/w.fixed, comb.random=FALSE)
#
# Sort by decreasing weight in fixed effect model
#
forest(meta1, sortvar=-1/w.fixed, comb.random=FALSE)
#
# Sort by size of treatment effect
#
forest(meta1, sortvar=TE, comb.random=FALSE)
#
# Sort by size of treatment effect
#
forest(meta1, sortvar=-TE, comb.random=FALSE)
#
# Sort by decreasing year of publication
#
forest(meta1, sortvar=-year, comb.random=FALSE)
#
# Sort studies by decreasing treatment effect within year subgroups
#
meta2 <- update(meta1, byvar=ifelse(year < 1987, "Before 1987", "1987 and later"),
print.byvar=FALSE)
forest(meta2,
sortvar=-TE, comb.random=FALSE)
#
# Print results of test for subgroup differences (random effects model)
#
forest(meta2,
sortvar=-TE, comb.fixed=FALSE,
test.subgroup.random=TRUE)