Notes · methods

Hedges' g vs Cohen's d: the small-sample correction reviewers forget

2026-07-10

Most meta-analyses of clinical trials pool standardized mean differences, and most software defaults to Hedges’ g. Yet a surprising number of extraction spreadsheets compute Cohen’s d and call it g. That’s a mislabel a statistical reviewer will catch, and at small sample sizes, a real bias.

Why d is biased upward

Cohen’s d divides the mean difference by the pooled SD:

d = (M₁ − M₂) / s_pooled

Because the sample SD underestimates the population SD in small samples, d systematically overstates the effect when trials are small. Hedges & Olkin (1985) derived the correction factor:

J = 1 − 3 / (4·df − 1)        where df = n₁ + n₂ − 2
g = J × d

Worked example

Two arms of 24 (df = 46), and suppose d = 0.170:

J = 1 − 3/(4×46 − 1) = 1 − 3/183 = 0.9836
g = 0.9836 × 0.170 = 0.167

That correction looks small. It isn’t always. At n = 10 per arm (df = 18), J = 0.9577: a 4.2% haircut on every small trial in your pool, all in the same direction. In a meta-analysis whose small trials happen to skew positive (they usually do, since small-study effects are real), skipping J inflates the pooled estimate exactly where it’s most fragile.

The variance follows

The correction has a matching large-sample variance for g:

Var(g) = (n₁ + n₂)/(n₁·n₂) + g²/(2·(n₁ + n₂))

This is the form the standard software (e.g. metafor’s SMD measure) uses. A common hand-rolled mistake is applying J twice (once to the point estimate and again squared to a d-based variance) or not at all. Use the g-based variance with the corrected g, once.

How to report it

One sentence in the methods: “Standardized mean differences were computed as Hedges’ g (small- sample corrected).” And in your extraction records, keep d, J, and g as separate visible steps rather than a single opaque number. The correction is exactly the kind of intermediate a careful reader wants to be able to check.