ADR 0006: Peto one-step odds ratio¶
- Status: Accepted
- Date: 2026-08-13
- Supersedes: the Peto deferral in ADR 0002
Context¶
Peto's one-step method is a conventional common-effect estimator for binary outcomes and is particularly associated with rare-event meta-analysis. It is not interchangeable with an ordinary inverse-variance odds ratio: it derives both the study contribution and pooled estimate from observed-minus-expected events and hypergeometric information.
The approximation can be biased when treatment and control group sizes differ substantially within studies, effects are large, or events are not rare. Its zero-cell behavior also differs from ordinary log odds ratios, so pooling and display corrections must not be conflated.
Decision¶
PyMetaAnalysis supports measure="OR", method="Peto", model="common" with
ci_method="normal". "peto_one_step" is an accepted alias and the resolved
pooling method is "peto".
For stratum i, let O_i = a_i, m_i = a_i + c_i, treatment and control
totals be n1_i and n0_i, and N_i = n1_i + n0_i. Define:
E_i = m_i n1_i / N_i
V_i = m_i (N_i - m_i) n1_i n0_i / (N_i^2 (N_i - 1))
The individual and pooled model-scale estimates are:
y_i = (O_i - E_i) / V_i
Var(y_i) = 1 / V_i
y_Peto = sum(O_i - E_i) / sum(V_i)
Var(y_Peto) = 1 / sum(V_i)
Pooling always uses raw 2-by-2 tables. The existing
continuity_correction and correction_scope settings affect only displayed
study estimates and variances; there is no Peto pooling correction parameter.
Double-zero and double-all rows are excluded before every synthesis
calculation because they contain no relative-effect information.
Peto heterogeneity uses the fitted pooled coefficient and the same observed-minus-expected contributions:
Q = sum(((O_i - E_i) - y_Peto V_i)^2 / V_i)
Q-based I-squared and H-squared follow the project's common-effect
conventions. Method options record peto_pooling_tables="raw" and
peto_heterogeneity="O-minus-E". Every Peto result carries an approximation
warning naming the rare-outcome, balanced-arm, and modest-effect conditions.
Random-effects Peto and Peto RR/RD are unsupported. Users requesting those estimands must select an implemented inverse-variance or Mantel-Haenszel combination explicitly.
Validation¶
- direct formula tests cover study estimates, pooled estimate, variance, weights, confidence interval, and Peto Q;
- treatment/control swapping reverses and exponentiates the log-OR limits as expected, while row order leaves the fit unchanged;
- count scaling and extreme finite-count tests exercise overflow-safe arithmetic;
- sparse tables verify that study-level correction does not alter raw Peto pooling and that double-zero/double-all rows are excluded; and
- fixed-version
metafor::escalc(measure="PETO")andmetafor::rma.peto()fixtures cover ordinary and sparse datasets.
Consequences¶
- common-effect binary OR now offers MH, Peto, and inverse-variance pooling;
- Peto results remain on the log-OR model scale and use exponentiated display values like other OR results;
- sensitivity, subgroup, provenance, reporting, and plotting workflows reuse the same public result contracts; and
- documentation and reports must preserve the Peto applicability warning rather than presenting it as a general sparse-data default.