Mantel-Haenszel 방법

Woodward Ch.4.6 — Mantel-Haenszel Methods

Stratified 자료의 통합 효과 추정 도구인 Mantel-Haenszel 의 RR/OR/Rate Ratio 형태, 가중 메커니즘, 그리고 Breslow-Day 동질성 검정과 effect modification 의 식별을 추상 → 일상어 → 반사실 3 단계 직관으로 풀어낸다. Logistic regression 과의 일관성·차이도 함께 다룬다.

Experimentation
Epidemiology
저자

Kwangmin Kim

공개

2026년 05월 08일

1 Mantel-Haenszel — 통합 효과 추정의 표준

정의: Mantel-Haenszel Estimator

Stratum \(s\) 의 sub-table:

Exposed Unexposed
Cases (Y=1) \(a_s\) \(b_s\)
Controls (Y=0) \(c_s\) \(d_s\)

\(n_s = a_s + b_s + c_s + d_s\).

MH RR (cohort): \[ \hat{\text{RR}}_{\text{MH}} = \frac{\sum_s a_s (c_s + d_s) / n_s}{\sum_s c_s (a_s + b_s) / n_s} \]

MH OR (case-control): \[ \hat{\text{OR}}_{\text{MH}} = \frac{\sum_s a_s d_s / n_s}{\sum_s b_s c_s / n_s} \]

MH Rate Ratio (인-년 자료): \[ \hat{\text{IRR}}_{\text{MH}} = \frac{\sum_s a_s \cdot \text{PT}_{0,s} / \text{PT}_s}{\sum_s c_s \cdot \text{PT}_{1,s} / \text{PT}_s} \]

2 가중 메커니즘 — 정보 기반 가중

직관 3 단계: MH 의 정보 가중
  • 추상: 각 stratum 의 정보량 = 작은 cell 의 함수. MH 가중치는 정보량에 비례.
  • 일상어 비유: 학교별 평균 점수의 가중 평균 — 큰 학교 + 균형 잡힌 분포의 가중치 ↑.
  • 반사실: 단순 평균은 작은 stratum 에 과한 가중. MH 는 정보량 기반 → 더 robust.

구체 가중:

  • \(a_s d_s / n_s\) 가 OR 의 numerator weight.
  • \(b_s c_s / n_s\) 가 OR 의 denominator weight.

큰 stratum 의 weight ↑, 균형 cell 의 weight ↑.

3 MH OR 의 사례 — Confounder 통제

사례: 흡연-폐암 case-control 의 성별 보정
남성 노출 남성 비노출 여성 노출 여성 비노출
Case 80 20 30 70
Control 60 40 50 50

Stratum 1 (남성): OR = (80 × 40) / (20 × 60) = 2.67. Stratum 2 (여성): OR = (30 × 50) / (70 × 50) = 0.43.

두 OR 매우 다름 → effect modification 의심.

MH OR: \[ \frac{\sum a_s d_s / n_s}{\sum b_s c_s / n_s} \] = 단순 가중 평균.

그러나 두 stratum OR 이 매우 다르면 MH 의 단일 추정은 효과 수정 가림. Breslow-Day 검정 필수.

3 단계 직관:

  • 추상: 두 OR 가 동질이면 MH OR 가 두 OR 의 가중 평균 — 의미 있음. 비동질이면 단일 OR 무의미.
  • 일상어 비유: 남녀 학교의 점수 평균이 다른데 통합 평균만 보면 학교 차이 가림.
  • 반사실: Effect modification 인 경우 strata 별 OR 별도 보고가 정직.

4 Breslow-Day Test — 동질성 검정

정의: Breslow-Day Test

\(H_0\): 모든 strata 의 OR 가 동일.

검정 통계량: \[ \chi^2_{BD} = \sum_s \frac{(a_s - \tilde{a}_s)^2}{\text{Var}(\tilde{a}_s)} \]

여기서 \(\tilde{a}_s\) 는 MH OR 가정 하의 expected cell count.

자유도 = (strata 수 - 1).

직관: Breslow-Day 의 의미
  • 추상: 각 stratum 의 observed 가 MH OR 가정 하의 expected 에서 얼마나 벗어나는지의 합산.
  • 일상어 비유: 학교별 평균 점수의 분산 — 동질이라면 분산 작음.
  • 반사실: \(p < 0.05\) 면 effect modification 의심. Strata 별 OR 별도 분석.

5 MH 의 신뢰구간

정의: MH OR 의 95% CI (Robins-Breslow-Greenland)

\[ \widehat{\text{Var}}(\log \hat{\text{OR}}_{\text{MH}}) = \frac{\sum_s (a_s + d_s) (a_s d_s) / n_s^2}{2 \left( \sum_s a_s d_s / n_s \right)^2} + \cdots \]

(자세한 수식은 Greenland & Robins, 1985.)

대표본 95% CI: \[ \exp\left( \log \hat{\text{OR}}_{\text{MH}} \pm 1.96 \cdot \text{SE} \right) \]

6 MH vs Logistic Regression

직관 3 단계: 두 도구의 분업
  • 추상: MH = 비모수 stratification, logistic = 모수 회귀. 단일 binary confounder + 큰 표본이면 거의 동일.
  • 일상어 비유: MH = 학교별 가중 평균, logistic = 다중 변수 회귀. 학교만 보정한다면 비슷한 결과.
  • 반사실: 다중 confounder + 연속 변수 + 상호작용은 logistic 우선. MH 는 strata 셀이 비면 작동 어려움.

선택 기준:

상황 우선
단일 binary confounder MH (단순, robust)
다중 confounder Logistic
연속 confounder Logistic
상호작용 항 Logistic
작은 표본 MH (모형 가정 적음)

7 코드 — MH OR + Breslow-Day

import numpy as np
import pandas as pd
from scipy.stats import chi2

# 두 stratum case-control
strata = [
    {"name": "남성", "a": 80, "b": 20, "c": 60, "d": 40},
    {"name": "여성", "a": 30, "b": 70, "c": 50, "d": 50},
]

mh_num, mh_den = 0, 0
for s in strata:
    n_s = sum(s[k] for k in ["a", "b", "c", "d"])
    mh_num += (s["a"] * s["d"]) / n_s
    mh_den += (s["b"] * s["c"]) / n_s
    OR_s = (s["a"] * s["d"]) / (s["b"] * s["c"])
    print(f"{s['name']}: OR = {OR_s:.2f}")

MH_OR = mh_num / mh_den
print(f"\nMH OR = {MH_OR:.2f}")

# Breslow-Day (간단 형태)
BD_stat = 0
for s in strata:
    a, b, c, d = s["a"], s["b"], s["c"], s["d"]
    n_s = a + b + c + d
    # Expected a_s under MH OR
    R1 = a + b
    C1 = a + c
    Quad_a = MH_OR - 1
    Quad_b = -(MH_OR * (R1 + C1) + n_s - R1 - C1)
    Quad_c = MH_OR * R1 * C1
    if Quad_a == 0:
        a_exp = R1 * C1 / n_s
    else:
        disc = np.sqrt(Quad_b**2 - 4 * Quad_a * Quad_c)
        a_exp = (-Quad_b - disc) / (2 * Quad_a)
    var_a = 1 / (1/a_exp + 1/(R1 - a_exp) + 1/(C1 - a_exp) + 1/(n_s - R1 - C1 + a_exp))
    BD_stat += (a - a_exp)**2 / var_a

p_BD = 1 - chi2.cdf(BD_stat, df=len(strata) - 1)
print(f"Breslow-Day χ² = {BD_stat:.2f}, p = {p_BD:.4f}")

해석: MH OR 와 Breslow-Day p-value 동시 산출. p < 0.05 면 effect modification → strata 별 OR 별도 분석.

8 결론 — Phase B WOO Ch.4 시리즈 마무리

WOO Ch.4.5~4.6 시리즈 (4 편 마무리)
│
├── B43: Standardisation + MH overview
├── B44: Direct Standardisation
├── B45: Indirect + SMR
└── B46: Mantel-Haenszel (이 글)

다음 글 (B47, Phase B 마지막) 은 Hill 의 인과 9 기준 — 관찰 연구에서 인과를 추론할 때의 표준 가이드라인.

9 관련 주제

Subscribe

Enjoy this blog? Get notified of new posts by email: