## S3 method for class 'meta':
forest(x, sortvar, studlab=TRUE,
comb.fixed=x$comb.fixed, comb.random=x$comb.random,
overall=TRUE,
text.fixed=if (x$level!=x$level.comb) paste("Fixed effect model (",
round(x$level.comb*100), "%-CI)", sep="") else "Fixed effect model",
text.random=if (x$level!=x$level.comb) paste("Random effects model (",
round(x$level.comb*100), "%-CI)", sep="") else "Random effects model",
lty.fixed=2, lty.random=3,
prediction=x$prediction,
text.predict=if (!(length(x$level.predict)==0) && x$level!=x$level.predict)
paste("Prediction interval (", round(x$level.predict*100), "%)",
sep="") else "Prediction interval",
bylab=x$bylab, print.byvar=x$print.byvar,
text.fixed.w=text.fixed, text.random.w=text.random,
pooled.totals=comb.fixed|comb.random, pooled.events=FALSE,
xlab="", xlab.pos=ref,
smlab=NULL, smlab.pos=ref, xlim="symmetric",
allstudies=TRUE,
weight,
pscale=1,
ref=ifelse(x$sm %in% c("RR", "OR", "HR"), 1, 0),
leftcols=NULL, rightcols=NULL,
leftlabs=NULL, rightlabs=NULL,
lab.e=x$label.e, lab.c=x$label.c,
lab.e.attach.to.col=NULL, lab.c.attach.to.col=NULL,
label.right=x$label.right, label.left=x$label.left,
lab.NA=".",
lwd=1,
at=NULL, label=TRUE,
col.i="black", col.i.inside.square="white",
col.square="gray", col.square.lines=col.square,
col.diamond="gray",
col.diamond.fixed=col.diamond, col.diamond.random=col.diamond,
col.diamond.lines="black",
col.diamond.fixed.lines=col.diamond.lines,
col.diamond.random.lines=col.diamond.lines,
col.predict="red", col.predict.lines="black",
col.by="darkgray",
print.I2=comb.fixed|comb.random, print.tau2=comb.fixed|comb.random,
print.Q=FALSE, print.pval.Q=comb.fixed|comb.random,
hetstat=print.I2|print.tau2|print.Q|print.pval.Q,
overall.hetstat=overall&hetstat,
hetlab="Heterogeneity: ",
fontsize=12,
fs.heading=fontsize,
fs.fixed=fontsize, fs.random=fs.fixed, fs.predict=fs.fixed, fs.study=fontsize,
fs.fixed.labels=fs.fixed, fs.random.labels=fs.random, fs.predict.labels=fs.predict,
fs.study.labels=fs.study, fs.hetstat=fontsize-2,
fs.axis=fontsize,
fs.smlab=fontsize, fs.xlab=fontsize, fs.lr=fontsize,
ff.heading="bold",
ff.fixed="bold", ff.random=ff.fixed, ff.predict=ff.fixed, ff.study="plain",
ff.fixed.labels=ff.fixed, ff.random.labels=ff.random, ff.predict.labels=ff.predict,
ff.study.labels=ff.study, ff.hetstat="bold.italic",
ff.axis="plain",
ff.smlab="bold", ff.xlab="plain", ff.lr="plain",
##
squaresize=0.8,
boxsize=squaresize,
##
plotwidth=unit(6, "cm"),
colgap=unit(2, "mm"),
colgap.left=colgap, colgap.right=colgap,
colgap.forest=colgap,
colgap.forest.left=colgap.forest, colgap.forest.right=colgap.forest,
##
just="center",
just.studlab="left",
##
addspace=TRUE,
##
new=TRUE,
##
digits=2, ...)
meta
.x$TE
).x$TE
then).byvar
if summaries should only be plotted on group
level."same"
, "fixed"
, or
"random"
, can be abbreviated. Plot symbols metaprop
.ref
is equal to NA
.lab.e
should be attached to in table heading.lab.c
should be attached to in table heading.par
.grid.xaxis
.grid.xaxis
.byvar
) if heterogeneity statistics
shgpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.gpar
.print.default
.byvar
is not missing.
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
).
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
.
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
, the following default columns will be plotted.
Argument rightcols
: rightcols=c("effect", "ci")
, i.e.,
estimated treatment effect and its level
-confidence
interval. In addition, weights of the fixed ("w.fixed"
) and/or random effects
model ("w.random"
) will be given, if comb.fixed=TRUE
and/or comb.random=TRUE
. For an object
of class metacum
or metainf
only the estimated treatment
effect with level
-confidence interval are plotted.
Argument leftcols
:
(i) leftcols=c("studlab", "event.e", "n.e", "event.c", "n.c")
for an object of class metabin
,
(ii) leftcols=c("studlab", "n.e", "mean.e", "sd.e", "n.c",
"mean.c", "sd.c")
for an object of class metacont
,
(iii) leftcols=c("studlab", "TE", "seTE")
for an object of class metagen
,
(iv) leftcols=c("studlab", "event", "n")
for an object of class metaprop
,
(v) leftcols=c("studlab", "n")
for an object of class metacor
,
(vi) leftcols=c("studlab")
for an object of class metacum
or metainf
.
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: for columns
c("studlab", "TE", "seTE", "n.e", "n.c", "event.e", "event.c",
"mean.e", "mean.c", "sd.e", "sd.c", "effect", "ci", "w.fixed",
"w.random")
the labels c("Study", "TE", "seTE", "Total",
"Total", "Events", "Events", "Mean", "Mean", "SD", "SD",
summary measure, level for confidence interval, "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 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.
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.
metabin
, metacont
, metagen
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)
##
## Forest plot with 'classic' layout used in
## R package meta, version < 1.6-0
##
forest(meta1, col.square="black", hetstat=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")
Olkin95$studlab <- paste(Olkin95$author, Olkin95$year)
##
## Add variables 'year' and 'author' to meta-analysis object
##
meta1$year <- addvar(meta1, Olkin95, "year")
meta1$author <- addvar(meta1, Olkin95, "author")
##
## Specify column labels only for newly created variables
## 'year' and 'author'
##
forest(meta1,
leftcols=c("studlab", "event.e", "n.e", "event.c", "n.c",
"author", "year"),
leftlabs=c("Author", "Year of Publ"))
##
## 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")
Run the code above in your browser using DataLab