Evidence synthesis — meta-analysis forest and funnel plots
Random-effects meta-analysis of twelve randomised trials drawn twice from one set of study rows: a forest plot with subgroups, pooled diamonds and the prediction interval, and a funnel plot with Egger's test and trim-and-fill. Typed FlowScript for clinical trials. Keywords: CONSORT, randomised, randomized, trial, RCT, flow diagram, PRISMA, cohort.
Make it your own.
// Random-effects meta-analysis of twelve randomised trials drawn twice from one set of study rows: a forest plot with subgroups, pooled diamonds and the prediction interval, and a funnel plot with Egger's test and trim-and-fill.
//
// Every string below is EXAMPLE text from a fictional review: replace it.
//
// Each study is a contrast row carrying its own 2×2 table: events_a / n_a
// in the exercise-based cardiac rehabilitation arm, events_b / n_b under
// usual care, for all-cause hospital admission at 12 months. The risk
// ratio and its interval for every row, the inverse-variance weights,
// tau², I², Q, the subgroup diamonds, the test for subgroup differences,
// the prediction interval, Egger's regression and the funnel's pseudo-
// confidence contours are all computed from those counts. Change one
// count and both figures, and every statistic on them, move together;
// there is no pooled number typed anywhere in this document.
//
// Pooling: random effects, DerSimonian–Laird tau² with the
// Hartung–Knapp–Sidik–Jonkman interval, which Cochrane recommends when
// the number of studies is small. Subgroups (centre-based versus
// home-based programmes) were specified in the protocol before any data
// were extracted.
meta rehab_admission {
title: "Cardiac rehabilitation versus usual care: admission at 12 months"
measure: rr
scale: log
model: hksj
level: 0.95
k: 12
n: 2406
subgroup centre_based {
variable: "Programme setting"
category: "Centre-based"
prespecified: true
contrast okafor {
label: "Okafor 2012"
events_a: 12
n_a: 60
events_b: 25
n_b: 60
}
contrast lindqvist {
label: "Lindqvist 2013"
events_a: 37
n_a: 155
events_b: 53
n_b: 155
}
contrast moreau {
label: "Moreau 2015"
events_a: 58
n_a: 210
events_b: 80
n_b: 210
}
contrast silva {
label: "Silva 2017"
events_a: 6
n_a: 32
events_b: 13
n_b: 32
}
contrast abdi {
label: "Abdi 2019"
events_a: 29
n_a: 91
events_b: 21
n_b: 91
}
contrast haddad {
label: "Haddad 2021"
events_a: 45
n_a: 270
events_b: 69
n_b: 270
}
contrast ito {
label: "Ito 2023"
events_a: 9
n_a: 38
events_b: 8
n_b: 38
}
}
subgroup home_based {
variable: "Programme setting"
category: "Home-based"
prespecified: true
contrast hartmann {
label: "Hartmann 2014"
events_a: 10
n_a: 48
events_b: 13
n_b: 48
}
contrast tanaka {
label: "Tanaka 2016"
events_a: 26
n_a: 75
events_b: 28
n_b: 75
}
contrast novak {
label: "Novak 2018"
events_a: 28
n_a: 114
events_b: 35
n_b: 114
}
contrast kowalczyk {
label: "Kowalczyk 2020"
events_a: 11
n_a: 44
events_b: 8
n_b: 44
}
contrast brennan {
label: "Brennan 2022"
events_a: 20
n_a: 66
events_b: 31
n_b: 66
}
}
}
view forest_plot: forest(rehab_admission)
view small_study_effects: funnel_plot(rehab_admission)