Here is an example. It requires a bit of extra work, but that's the beauty of R 
-- you can essentially customize a graph to your taste with low-level 
functions. I also added the prediction interval using the addcred argument (as 
suggested by Michael), since it gives the same information as that fancy normal 
distribution at the bottom. Essentially, that distribution is just 
window-dressing. I am not sure if I would go as far as calling that 
"chart-junk", but it's certainly somewhat gratuitous. Well, I hope the code 
below gives you enough of an idea so that you can adjust this to your specific 
case.


library(metafor)

### load BCG vaccine data
data(dat.bcg)

### meta-analysis of the log relative risks using a random-effects model
res <- rma(ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg, measure="RR", 
           slab=paste(author, year, sep=", "), method="REML")

### forest plot with extra annotations
forest(res, slab=paste(dat.bcg$author, dat.bcg$year, sep=", "), 
       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=.7, ylim=c(-3,16), addcred=TRUE)
text(c(-9.5,-8,-6,-4.5), 15, c("TB+", "TB-", "TB+", "TB-"), font=2, cex=.70)
text(c(-8.75,-5.25),     16, c("Vaccinated", "Control"), font=2, cex=.70)
text(-16,                15, "Author(s) and Year",     pos=4, font=2, cex=.70)
text(6,                  15, "Relative Risk [95% CI]", pos=2, font=2, cex=.70)
text(-16,              -2.5, "Prediction Distribution", pos=4, cex=.70)

### add prediction distribution
res <- predict(res)
pred.m <- res$pred
pred.s <- (res$cr.ub - res$cr.lb) / (2*1.96)
xs <- seq(-2.5,1,.01)
cords.xs <- c(-2,xs,-2)
cords.ys <- c(0, 1.5*dnorm(xs, pred.m, sd=pred.s), 0) - 3
polygon(cords.xs, cords.ys, col="darkgray", border=NA)
ptext <- paste(round(exp(res$pred),2), " [ ", round(exp(res$cr.lb),2), " , ", 
round(exp(res$cr.ub),2), "]", sep="")
text(6, -2.5, ptext, pos=2, cex=.70)

--   
Wolfgang Viechtbauer, Ph.D., Statistician   
Department of Psychiatry and Psychology   
School for Mental Health and Neuroscience   
Faculty of Health, Medicine, and Life Sciences   
Maastricht University, P.O. Box 616 (VIJV1)   
6200 MD Maastricht, The Netherlands   
+31 (43) 368-5248 | http://www.wvbauer.com   

> -----Original Message-----
> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org]
> On Behalf Of Michael Dewey
> Sent: Monday, December 12, 2011 18:50
> To: Frank Peter; r-help@r-project.org
> Subject: Re: [R] Overlaying density plot on forest plot
> 
> At 15:09 11/12/2011, you wrote:
> >Dear Michael,
> >
> >Thanks for the email. This is the kind of forest plot, I want to
> >replicate
> >
> >http://www.biomedcentral.com/1471-2334/11/122/figure/F2
> 
> It would be helpful to cc to r-help in case someone else there knows
> better.
> 
> If you follow my suggestion you get a similar plot to sub-plot A in your
> example but the credible interval is shown as a dashed line superimposed
> on the summary diamond and not as a normal density as shown in sub-plot A.
> Whether that is what you want is up to you I think.
> 
> >Regards
> >Frank Peter
> >
> >-------- Original Message --------
> >From: Michael Dewey <i...@aghmed.fsnet.co.uk>
> >To: "Frank Peter" <frankpe...@safe-mail.net>, r-help@r-project.org
> >Subject: Re: [R] Overlaying density plot on forest plot
> >Date: Sun, 11 Dec 2011 14:20:13 +0000
> >
> > > At 07:16 10/12/2011, Frank Peter wrote:
> > > >Dear R User,
> > > >
> > > >Please, I am new to R. I want to overlay density plot for
> > > >predictive interval pooled result in meta-analysis.
> > > >http://addictedtor.free.fr/graphiques/graphcode.php?graph=114
> > >
> > > It is hard to be sure from your rather brief question but does the
> > > addcred parameter to forest.rma in package metafor do what you want?
> > >
> > > >
> > > >
> > > >Regards
> > > >Frank Peter
> > >
> > > Michael Dewey
> > > i...@aghmed.fsnet.co.uk
> > > http://www.aghmed.fsnet.co.uk/home.html

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to