Plot a PRISMA http://prisma-statement.org/ flow chart describing the identification, screening, eligibility and inclusion or studies in systematic reviews. The PRISMA statement defines an evidence-based, minimal set of items for reporting in systematic reviews and meta-analyses. PRISMA should be used for the reporting of studies evaluating randomized clinical trials (RCT), and is also for reporting on systematic reviews of other types of research. There is also a function to generate flow charts describing exclusions and inclusions for any kind of study.
The Preferred Reporting Items for Systematic Reviews and Meta-Analyses (PRISMA) Statement (Moher et al. 2009) defines an evidence-based, minimal set of items for reporting in systematic reviews and meta-analyses. PRISMA should be used for the reporting of studies evaluating randomized clinical trials (RCTs), and for reporting of systematic reviews of other types of research.
Meta-analysis is a critical tool in evidence-based medicine, forming the basis of international recommendations and guiding local medical practice. Unfortunately, a large amount of published medical research is likely to be false (Ioannidis 2005). This increases the importance of good meta-analysis of potentially flawed studies in order to reduce bias. An effort has been made to raise the standard of work accepted in major medical journals, for both primary research and systematic reviews. For example, for randomized controlled trials, we have the widely enforced CONSORT statement (Schulz et al. 2010). PRISMA is the analogue of CONSORT for meta-analysis and systematic reviews.
The importance of these efforts to raise standards is so great that the PRISMA Statement has been published in multiple medical journals (e.g., Moher et al. 2010; Liberati et al. 2009), and it is now a requirement for authors to follow its guidelines when submitting meta-analyses and systematic reviews to major journals.
In addition to increasing the standard of research in general, the
movement towards reproducible research continues, with a drive to
publish more data and to automate and publish the statistical analysis.
The “Living Systematic Review” brings the reproducible concept to
systematic reviews and extends it by allowing prompt updates as new
evidence is published (Elliott et al.
2017). With these goals and trends in mind, the
PRISMAstatement
package for the R statistical software
(R Core Team 2018) enables construction of
a correct PRISMA flow diagram which can be generated as part of a
reproducible workflow in R.
The R packages such as ggplot2
(Wickham 2016), rmarkdown
(Allaire, Xie, McPherson, et al. 2018),
rticles
(Allaire, Xie, R Foundation,
et al. 2018) give researchers the tools to produce manuscripts
incorporating their analysis, figures and text, entirely within the R
environment. However, plotting flow charts is not straightforward,
especially not those that confirm to the specific PRISMA statement
requirements. Most researchers are likely to resort to producing their
PRISMA flow diagram in another application then import the resulting
figure. This is a possible source of errors, and a barrier to
reproducible research: with PRISMAstatement
it is now
possible to use a reproducible workflow up-to-date PRISMA flow diagram
of publication quality.
Ideally, you will stick closely to the PRISMA statement, but small
deviations are common. PRISMAstatement
gives the option of
adding a box which simply calculates the number of duplicates
removed.
prisma(found = 750,
found_other = 123,
no_dupes = 776,
screened = 776,
screen_exclusions = 13,
full_text = 763,
full_text_exclusions = 17,
qualitative = 746,
quantitative = 319,
extra_dupes_box = TRUE)
You can also change the labels, but you will have to insert the number for any label you change. E.g.,
There are some hard constraints on the relationships between the
numbers in each box, which are enforced by the prisma
function. There are a couple of warnings given when it seems that
numerically valid, but unlikely numbers are given: studies shouldn’t
just disappear between each step. Arguably this is a hard stop, but
there might be circumstances when additional exclusions are made which
could be annotated in a figure caption.
## [1] "screened <= no_dupes is not TRUE"
## Warning in prisma_graph(found = found, found_other = found_other, no_dupes =
## no_dupes, : After full-text exclusions, a different number of remaining
## articles for qualitative synthesis is stated.
## Warning in prisma_graph(found = found, found_other = found_other, no_dupes =
## no_dupes, : After screening exclusions, a different number of remaining
## full-text articles is stated.
The underlying DiagrammeR
uses htmlwidgets
to render the flow chart, and this can occasionally cause text boxes to
overflow. Varying the font size using the
PRISMAstatement::prisma
argument font_size
may
help prepare a PRISMA flow chart for publication.
For publication quality graphics, a certain number of DPI is often requested. This is difficult to achieve with the chain of tools that PRISMAstatement uses (DiagrammeR, htmlwidgets), and also affected by the output container which may be a PDF vignette, file, browser window, etc..
prisma(found = 750,
found_other = 123,
no_dupes = 776,
screened = 776,
screen_exclusions = 13,
full_text = 763,
full_text_exclusions = 17,
qualitative = 746,
quantitative = 319,
width = 200, height = 200)
prisma(found = 750,
found_other = 123,
no_dupes = 776,
screened = 776,
screen_exclusions = 13,
full_text = 763,
full_text_exclusions = 17,
qualitative = 746,
quantitative = 319,
width = 200, height = 200,
dpi = 300)
prisma(found = 750,
found_other = 123,
no_dupes = 776,
screened = 776,
screen_exclusions = 13,
full_text = 763,
full_text_exclusions = 17,
qualitative = 746,
quantitative = 319,
width = 200, height = 200,
dpi = 36)
My recommendation is to leave DPI at the default (72), and change the canvas size to achieve the correct number of pixels to fit the width of your target document. Tweaking the DPI may help (or cause) clipping.
It may be useful for publications to have a separate high-quality PDF of the PRISMA flow chart. An experimental internal function can do something like this:
prsm <- prisma(found = 750,
found_other = 123,
no_dupes = 776,
screened = 776,
screen_exclusions = 13,
full_text = 763,
full_text_exclusions = 17,
qualitative = 746,
quantitative = 319,
width = 200, height = 200,
dpi = 36)
tmp_pdf <- tempfile()
PRISMAstatement:::prisma_pdf(prsm, tmp_pdf)
knitr::include_graphics(path = tmp_pdf)
unlink(tmp_pdf)