Meta-Analysis
Analyze → Meta-Analysis. Combines the results of several studies into one pooled estimate — the standard tool of systematic reviews. Each row of your dataset is one study, not one participant.
The data layout
Two numeric columns, one row per study:
- Effect — each study's effect size, already on a common scale: a log odds ratio, a log risk ratio, a standardized mean difference (Cohen's d / Hedges' g), a correlation after Fisher's z transform, a mean difference in shared units, …
- Std. error — the standard error of that effect. Every included row must have both values, and every standard error must be positive; a missing cell stops the analysis with a message naming the study (silently dropping a study would change the meta-analysis).
An optional study labels column (any type — names, years, IDs) titles the rows in the tables and the forest plot; without it the rows are labelled "Study 1…k".
Ratio measures go in as logs. Pooling odds/risk ratios on their raw scale is not meaningful; enter the log ratio and its SE (as reported by the primary studies or computed from their 2×2 tables), and exponentiate the pooled estimate and its interval afterwards if you want a ratio.
Weighting. The Weight Cases setting does not apply here — the pooling weights are the statistic's own (inverse-variance), and a frequency weight over studies has no meaning. An active weight variable is noted on the output, not applied.
The dialog
Pick the Effect and Std. error variables (and Study labels if you have them). Then:
- Model — Fixed and random (default) reports both pooled estimates side by side; Fixed effect or Random effects reports just one. The fixed-effect model assumes every study estimates the same true effect; the random-effects model lets the true effect vary between studies (with the between-study variance estimated per the τ² estimator below) and widens the pooled interval accordingly. When the studies genuinely differ in populations or protocols — the usual case — read the random-effects row.
- Confidence (%) — the level for the pooled and per-study intervals (default 95).
- τ² estimator — how the between-study variance is estimated: DerSimonian–Laird (the default; the classic closed-form moment estimator) or REML (restricted maximum likelihood, iterative — the modern default of the reference packages, typically a little larger and less biased when heterogeneity is substantial). The choice drives the random-effects pooling, the per-study random weights and the τ² in the Heterogeneity table; Q, its significance and I² do not depend on it. With little heterogeneity the two agree closely — when they disagree noticeably, that itself says the heterogeneity is substantial and worth attention.
- Forest plot / Funnel plot — the two charts, both on by default. The funnel plot brings Egger's test with it; unticking the funnel drops both.
Reading the output
- Per-Study Effects — each study's effect, standard error, confidence interval, and its percentage weight under each model. The weights show who drives the answer: precise (small-SE) studies dominate the fixed-effect weights; random-effects weights are more equal, because between-study variance affects every study alike.
- Pooled Estimates — the combined effect per model with its standard error, z, significance and confidence interval. An interval that excludes the no-effect value (0 on a difference or log scale) is the evidence of an overall effect.
- Heterogeneity — Cochran's Q tests whether the studies share one true effect (a small Sig. says they do not); I² is the percentage of the total variation due to real between-study differences (a rule of thumb: 25% low, 50% moderate, 75% high); τ² is the estimated between-study variance itself, under whichever estimator you chose in the dialog (the note names it; τ² and I² are truncated at zero). Substantial heterogeneity is the signal to prefer the random-effects row — and to ask why the studies differ.
- Egger's Test — a regression test for funnel-plot asymmetry: a significant intercept suggests small-study effects — small, imprecise studies reporting systematically larger effects, the classic signature of publication bias (though not proof of it; genuine heterogeneity can mimic it). With few studies (k ≲ 10) the test has little power — read it, and the funnel, with restraint. It needs at least three studies and is skipped (with a note) when it cannot be computed.
The plots
- Forest plot — the meta-analysis at a glance: one row per study (the square marks the effect, sized by the study's weight; the whiskers span its confidence interval), a vertical no-effect line, and one diamond per pooled model below — the diamond's center is the pooled estimate, its width the pooled interval. Studies whose whiskers cross the line are individually inconclusive; a diamond clear of the line is the pooled conclusion.
- Funnel plot — each study's effect against its standard error, most precise at the top, with a shaded pseudo-95%-CI funnel around the pooled estimate. With no bias, studies scatter symmetrically inside the funnel; a missing lower corner (small studies only on the favourable side) is the visual counterpart of Egger's test.
Both charts export and copy like any other chart — see Working with chart output.
Reproducibility
Like every analysis, a run journals a syntax command, e.g.:
meta_analysis effect=logOR, se=se, study=trial, model=random, tau_method=reml
with forest=false / funnel=false recorded when a chart was unticked — so
re-running the script reproduces the same tables and the same charts. The
same tool is available to the AI assistant, MCP and batch scripts.
Scope: the effects and standard errors are taken as given (computing them from raw 2×2 tables or means/SDs is a recorded follow-up), pooling is fixed-effect and random-effects with a DerSimonian–Laird or REML τ² (REML arrived in 0.11.0), and publication-bias corrections beyond Egger's test (trim-and-fill) are not included. Validated against reference implementations (statsmodels/scipy) — see the validation suite.