Arte SheetsLearn. Try. Understand.

Statistical & Clinical Analysis

Anscombe-Gart +0.5 Continuity-Corrected Odds Ratio Formula for Zero-Event 2×2 Tables

Prevent #DIV/0! and infinite log-odds collapse in sparse clinical trials with zero events in one arm by adding +0.5 to all four 2×2 cells: OR_corr = ((a + 0.5)*(d + 0.5)) / ((b + 0.5)*(c + 0.5)) and SE(ln OR) = SQRT(1/(a+0.5) + 1/(b+0.5) + 1/(c+0.5) + 1/(d+0.5)).

Rescuing 2×2 clinical-trial Odds Ratios when the control arm records c = 0 events!

In safety surveillance and small randomized trials, observing a = 8 events vs. b = 42 non-events in the exposed arm alongside c = 0 events vs. d = 50 non-events in the control arm causes the naive cross-product Odds Ratio (a * d) / (b * c) = 400 / 0 to blow up with #DIV/0! and Woolf’s standard error SQRT(1/a + 1/b + 1/0 + 1/d) to diverge!

Francis J. Anscombe (1956, Biometrika) and John J. Gart (1966, Journal of the Royal Statistical Society B — standard in Cochrane RevMan and R metafor whenever a 2×2 cell equals zero) proved that adding +1/2 (+0.5) to ALL FOUR cells removes first-order O(1/n) bias in LN(OR): OR_corr = ((a + 0.5) * (d + 0.5)) / ((b + 0.5) * (c + 0.5)) with asymptotic log-SE = SQRT(1/(a + 0.5) + 1/(b + 0.5) + 1/(c + 0.5) + 1/(d + 0.5))! For [a=8, b=42, c=0, d=50], OR_corr = (8.5 * 50.5) / (42.5 * 0.5) = 20.2000 with SE(ln OR) = 1.4700 (moderating to OR_corr = 3.8800 when c = 2, d = 48)!

2×2 Contingency Counts [a, b; c, d]Naive OR = (a*d)/(b*c)Anscombe-Gart +0.5 ORAdjusted SE(ln OR)
Zero Control Events: a=8, b=42, c=0, d=50#DIV/0! (Infinite)20.20001.4700
Two Control Events: a=8, b=42, c=2, d=484.57143.8800 (Bias-reduced)0.7610
Negative Count < 0 or Empty TotalInvalid Contingency Table"Invalid 2x2 Cell Counts"Non-Negative Guard

Anscombe-Gart +0.5 Continuity-Corrected Odds Ratio = ((a+0.5)*(d+0.5)) / ((b+0.5)*(c+0.5))

Evaluates the +0.5 pseudo-count Odds Ratio across 2×2 non-negative counts a (B2), b (B3), c (B4), and d (B5).

=IF(OR(MIN(B2:B5) < 0, SUM(B2:B5) = 0), "Invalid 2x2 Cell Counts", ROUND(((B2 + 0.5) * (B5 + 0.5)) / ((B3 + 0.5) * (B4 + 0.5)), 4))

Continuity-Corrected Log-Odds Standard Error SE(ln OR_corr)

Computes SQRT(1/(a+0.5) + 1/(b+0.5) + 1/(c+0.5) + 1/(d+0.5)) for Wald/RevMan inverse-variance weighting.

=IF(OR(MIN(B2:B5) < 0, SUM(B2:B5) = 0), "Invalid 2x2 Cell Counts", ROUND(SQRT(1 / (B2 + 0.5) + 1 / (B3 + 0.5) + 1 / (B4 + 0.5) + 1 / (B5 + 0.5)), 4))

Try the example

Use the original values or change them to test your understanding.

Further reading