Single-arm: continuous outcomes
Pooled means, such as operative time, without a comparison group.
What it is
When the studies have no comparison group, a continuous outcome is summarized by its average: the mean operative time, the mean length of stay after a procedure. Each study contributes its mean, its standard deviation and its number of patients.
The study means are pooled with more weight for larger and less variable series. Times, volumes and lengths of stay are positive and usually skewed to the right, so they are often pooled on the log scale and transformed back, which gives asymmetric intervals.
The result is a pooled mean with its 95% confidence interval. As with proportions, heterogeneity between case series is usually high.
| Mean | SD | Patients | |
|---|---|---|---|
| One series | 12.0 days | 3.8 | 48 |
Length of hospital stay after the Deloyers procedure, from one of my reviews.
When to use it
Use it when
- The studies are case series or single-arm cohorts, with no comparison group.
- The outcome is a measurement: operative time, blood loss, length of stay, a functional score.
- Each study reports mean and SD, or values that can be converted to them (section 3).
Choose another tool when
- Some studies compare two interventions: use pairwise continuous outcomes with those studies.
- You want to compare two techniques using separate case series: their means are confounded by everything else that differs between the series.
- The outcome is an event: use single-arm binary outcomes.
Preparing the data: mean and SD
metamean() needs the mean, the standard deviation (SD) and the number of patients of each study. Many studies report something else; convert it before the analysis, in the extraction sheet, so every number can be traced back.
Mark every converted value in a separate column. Medians are a sign of skewed data, so the result should be checked in a sensitivity analysis without the converted studies.
| The study reports | What to do | Method |
|---|---|---|
| Mean and SD | Use directly. | - |
| Mean and standard error (SE) | SD = SE × √n | Cochrane Handbook 6.5.2.2 |
| Mean and 95% confidence interval | SD = √n × (upper − lower) ÷ 3.92; with fewer than about 60 patients per arm, replace 3.92 by 2 × the t value for n − 1 degrees of freedom | Cochrane Handbook 6.5.2.2 |
| Only the mean (no SD, SE or CI) | Impute the SD from the other studies of the meta-analysis (for example, the mean or the largest SD of similar studies) and check the result without the imputed studies | Cochrane Handbook 6.5.2.7; Furukawa |
| Median and interquartile range (IQR) | Estimate the mean and the SD | Mean: Wan or Luo. SD: Wan or Shi |
| Median and range (minimum-maximum) | Estimate the mean and the SD | Mean: Hozo (older), Wan or Luo. SD: Wan or Shi |
| Median, IQR and range | Use all five numbers together | Mean: Luo. SD: Shi |
| Medians from clearly skewed data | Methods that do not assume a normal distribution | McGrath (quantile estimation, Box-Cox) |
| Change from baseline without its SD | Impute the SD from the baseline and final SDs and a correlation coefficient taken from similar studies | Cochrane Handbook 6.5.2.8 |
| Several groups that form one arm (e.g., two doses) | Combine their means and SDs into one group | Cochrane Handbook 6.5.2.10, Table 6.5.a |
In R, the estmeansd package and the median, quartile and range arguments of metamean() apply these estimators; online calculators based on the same papers give identical results.
The template, parameter by parameter
Click a highlighted argument to see what it does and which values to use. Picking a value updates the code.
p <- metamean(n = total, mean = mean, sd = sd,
studlab = study, data = dat,
= "MRAW",
= "REML",
= FALSE, = TRUE)
# forest plot: see section 5
The forest plot, parameter by parameter
These arguments change only how the result is shown, not the result itself. Click one to see the options.
png("forest.png", width = 5500, height = 1100 + 170 * p$k, res = 500)
forest(p,
= studlab,
= "navyblue",
= "black",
= 2, = 2,
xlab = "Length of stay, days")
dev.off()
In my work
Figures from my published single-arm review, next to the metamean() call behind them. Click a figure to enlarge it.
p <- metamean(
n = n, mean = mean, sd = sd, # one arm
data = dat, # one row per study
studlab = Study, # study names
sm = "MLN" # log scale: skewed outcome
)
p <- metamean(
n = n, mean = mean, sd = sd, # one arm
data = dat, # one row per study
studlab = Study, # study names
sm = "MLN" # log scale: skewed outcome
)
References
- Higgins JPT, Thomas J, Chandler J, et al. Cochrane Handbook for Systematic Reviews of Interventions, version 6.5. Cochrane; 2024. Chapter 6 (effect measures) and Chapter 10 (analysing data).
- Wan X, Wang W, Liu J, Tong T. Estimating the sample mean and standard deviation from the sample size, median, range and/or interquartile range. BMC Med Res Methodol. 2014;14:135.
- Luo D, Wan X, Liu J, Tong T. Optimally estimating the sample mean from the sample size, median, mid-range, and/or mid-quartile range. Stat Methods Med Res. 2018;27:1785-1805.
- Shi J, Luo D, Weng H, et al. Optimally estimating the sample standard deviation from the five-number summary. Res Synth Methods. 2020;11:641-654.
- McGrath S, Zhao X, Steele R, et al. Estimating the sample mean and standard deviation from commonly reported quantiles in meta-analysis. Stat Methods Med Res. 2020;29:2520-2537.
- Balduzzi S, Rücker G, Schwarzer G. How to perform a meta-analysis with R: a practical tutorial. Evid Based Ment Health. 2019;22:153-160.