1 도입 — 검정 한 번 vs 여러 번
A-MAX4-* 시리즈에서 개별 비교 를 다뤘다. 그런데 실무에서는 여러 비교 를 동시에 수행한다. 4 그룹 사례에서 가능한 쌍별 비교는 \(\binom{4}{2} = 6\) 개. 각각을 \(\alpha = 0.05\) 로 검정하면 적어도 한 개의 거짓 양성 확률이 매우 커진다.
이 문제를 다루는 것이 다중 비교 문제 (multiple comparison problem) 이며, Maxwell Ch.5 의 주제다.
여러 가설 검정을 동시에 수행할 때, 적어도 한 개의 거짓 양성 확률 (experimentwise error rate) 이 사전 설정 \(\alpha\) 보다 커지는 현상이다.
\(C\) 개의 독립 검정에서:
\[ \Pr(\text{적어도 한 개 거짓 양성}) = 1 - (1 - \alpha)^C \]
예시: \(\alpha = 0.05\), \(C = 3\) → 약 14.3 %. \(C = 10\) → 약 40.1 %. \(C = 20\) → 약 64.2 %.
이 글은 Ch.5 의 5 단계 흐름을 압축한다.
2 Ch.5 의 5 단계 — 후속 글 안내
Ch.5.1 3 종류 오류율 (αPC, αEW, ENEPE) + 동시 CI
↓
Ch.5.2 Hsu 5 추론 강도 + Bonferroni
↓
Ch.5.3 주요 절차 (Tukey HSD, Scheffé, Dunnett)
↓
Ch.5.4 FDR + 등분산 위반 / 균등 표본 조정
3 시나리오 — 고혈압 4 그룹
Maxwell 의 예시:
4 그룹 (drug, biofeedback, diet, combined) 에 대해 3 개의 직교 대비 를 검정한다고 하자 (Maxwell Ch.5).
\(\psi_1 = \mu_1 - \mu_2\)
\(\psi_2 = \frac{1}{2}(\mu_1 + \mu_2) - \mu_3\)
\(\psi_3 = \frac{1}{3}(\mu_1 + \mu_2 + \mu_3) - \mu_4\)
각 대비를 \(\alpha = 0.05\) 로 검정하면, 4 그룹이 모두 같은 효과를 가진다 는 가정 하에 적어도 한 개가 거짓 양성일 확률은?
답: 직교 대비 + 독립성 가정 하에 \(1 - (1 - 0.05)^3 \approx 0.143\). 사전 설정한 \(0.05\) 보다 거의 3 배 큼.
4 3 종류의 오류율
특정 한 개의 비교 가 거짓으로 유의해질 확률.
\[ \alpha_{PC} = \Pr(\text{한 비교가 거짓 양성}) \]
한 실험 내의 어떤 비교 라도 거짓 양성일 확률.
\[ \alpha_{EW} = \Pr(\text{적어도 한 비교가 거짓 양성}) \]
\(C\) 개의 독립 비교 + 각 \(\alpha_{PC} = \alpha\) 일 때:
\[ \alpha_{EW} = 1 - (1 - \alpha)^C \]
한 실험에서 기대되는 거짓 양성 수.
\[ \text{ENEPE} = C \cdot \alpha_{PC} \]
\(C = 3\), \(\alpha_{PC} = 0.05\) → ENEPE \(= 0.15\).
4.1 세 오류율의 비교
| 오류율 | 의미 | 4 그룹 3 비교 사례 (\(\alpha_{PC} = 0.05\)) |
|---|---|---|
| \(\alpha_{PC}\) | 한 비교의 거짓 양성 확률 | 0.05 |
| ENEPE | 기대 거짓 양성 수 | 0.15 |
| \(\alpha_{EW}\) | 한 실험 내 거짓 양성 발생 확률 | 0.143 |
세 오류율의 차이가 왜 중요한가?
만약 \(\alpha_{PC}\) 만 통제하면, 비교 수가 많은 연구가 상대적으로 발견을 더 잘 한다 는 부정직한 인센티브가 생긴다 (cherry picking). 발견을 늘리려면 비교를 늘리면 된다.
만약 \(\alpha_{EW}\) 를 통제하면, 비교 수에 무관하게 연구 단위 에서 거짓 양성이 5 % 로 제한된다. 이는 공평한 발견 기준 을 만들지만, 비교가 많아질수록 각 비교의 검정력은 떨어진다.
학계의 합의는 일반적으로 \(\alpha_{EW}\) 통제를 선호한다. 의학 임상시험과 신약 승인은 모두 \(\alpha_{EW}\) 기준이다. IT A/B 테스트에서도 동시에 여러 메트릭이나 변형을 검정 할 때 \(\alpha_{EW}\) 통제가 표준이다 (Kohavi, Tang, Xu 2020 도 권장).
ENEPE 는 발견 수의 기대값 으로 직관적이지만 확률 통제 도구로는 약하다. 주로 분석 보조 지표.
5 보정 방법 — 골격 비교
5.1 Bonferroni
가장 단순. \(C\) 개 비교에서 각 비교를 \(\alpha / C\) 로 검정.
\[ \alpha_{PC, \text{Bonf}} = \frac{\alpha}{C} \]
이때 \(\alpha_{EW} \leq \alpha\) 가 불평등으로 보장된다 (보수적, 비교가 많을수록 더 보수적).
5.2 Šidák
독립성 가정 하의 정확한 보정.
\[ \alpha_{PC, \text{Šidák}} = 1 - (1 - \alpha)^{1/C} \]
Bonferroni 보다 약간 덜 보수적이지만, 차이가 작다.
5.3 Tukey HSD
쌍별 비교에 특화. 모든 쌍을 동시 검정할 때 가장 효율적.
5.4 Scheffé
모든 가능한 대비 에 동시 적용 가능. 가장 일반적이지만 가장 보수적.
5.5 Dunnett
하나의 대조군 과 여러 처치군 비교에 특화 (예: 위약 vs 신약 1, 2, 3).
5.6 FDR (Benjamini-Hochberg)
거짓 발견 비율 (false discovery rate) 통제. 여러 가설 중 기각된 것 중 거짓이 많지 않도록 통제. \(\alpha_{EW}\) 통제보다 검정력이 높음.
6 절차 비교 표
| 절차 | 통제 대상 | 적용 범위 | 보수성 |
|---|---|---|---|
| Bonferroni | \(\alpha_{EW}\) (불평등 상한) | 임의 \(C\) 비교 | 매우 보수적 |
| Šidák | \(\alpha_{EW}\) (독립 가정 하 정확) | 독립 비교 | 약간 덜 보수적 |
| Tukey HSD | \(\alpha_{EW}\) (쌍별) | 모든 쌍 비교 | 효율적 |
| Scheffé | \(\alpha_{EW}\) | 모든 가능한 대비 | 가장 보수적 |
| Dunnett | \(\alpha_{EW}\) | 1 대조군 vs 처치군들 | 효율적 |
| FDR (BH) | E[FDR] | 임의 비교 | 덜 보수적 (검정력 높음) |
7 Hsu 의 5 추론 강도
Hsu (1996) 는 다중 비교 절차를 추론의 강도 로 분류했다.
| 수준 | 추론 | 절차 |
|---|---|---|
| 0 | 옴니버스 검정만 (어디 차이 있는지 모름) | F 검정 |
| 1 | 어느 그룹이 baseline 보다 다른가 | Dunnett |
| 2 | 모든 쌍이 다른가 (한 방향 또는 양방향) | Tukey HSD |
| 3 | 모든 쌍 + 효과 크기 신뢰 구간 | Tukey HSD + CI |
| 4 | 모든 가능한 대비 동시 추론 | Scheffé |
수준이 높을수록 더 정밀한 결론 을 주지만 더 큰 표본 이 필요하다.
8 동시 신뢰 구간
다중 비교 보정은 p 값 보정 이지만, 동등하게 신뢰 구간 보정 으로 표현된다.
여러 대비 \(\psi_1, \psi_2, \ldots, \psi_C\) 의 신뢰 구간 모두가 동시에 참 모수를 포함할 확률이 \(1 - \alpha\) 인 구간.
표준 (개별) 95 % CI:
\[ \widehat{\psi}_k \pm t_{0.025, n-J} \cdot \text{SE}(\widehat{\psi}_k) \]
동시 95 % CI (Bonferroni):
\[ \widehat{\psi}_k \pm t_{0.025/C, n-J} \cdot \text{SE}(\widehat{\psi}_k) \]
즉 임계값을 \(t_{0.025/C}\) 로 더 보수적 으로 사용한다.
동시 CI 가 더 넓다 — 추정의 불확실성을 더 보수적으로 표현한다.
9 검정력의 트레이드오프
다중 비교 보정은 검정력 손실 을 동반한다.
| 절차 | 평균적 검정력 손실 (vs 무보정) |
|---|---|
| 무보정 | 0 % |
| FDR (BH) | 5~10 % |
| Tukey HSD | 10~15 % |
| Šidák | 약간 |
| Bonferroni | 보통 (특히 큰 \(C\)) |
| Scheffé | 가장 큼 |
따라서 적절한 절차 선택 이 중요하다. 모든 상황에 Bonferroni 를 쓰는 것은 검정력 손실이 크다.
10 보정 절차 선택 가이드
다중 비교 시나리오?
↓
사전 등록된 비교?
Yes → 비교 수 적음 (≤ 3)?
Yes → 직교 대비 + Bonferroni
No → Šidák 또는 FDR
↓
사후 모든 쌍 비교?
Yes → Tukey HSD
↓
대조군 vs 처치군들?
Yes → Dunnett
↓
임의 가능한 모든 대비?
Yes → Scheffé
↓
탐색적 분석 (많은 가설)?
Yes → FDR (BH)
11 A/B 테스트 실무 사례
11.1 단일 메트릭, 다중 변형
A/B/C/D 테스트 (대조군 + 신규 3 개) 에서 각 신규 변형을 대조군과 비교 → Dunnett 권장.
11.2 다중 메트릭, 두 변형
A vs B 테스트에서 클릭률, 매출, 체류시간 검정 → Bonferroni 또는 FDR. guardrail metric 과 primary metric 분리하여 가족화 가능.
11.3 여러 변형 + 여러 메트릭
A/B/C 테스트 + 5 개 메트릭 → 비교 수 폭증 (\(3 \times 5 = 15\)). FDR (BH) 추천 (검정력 보존).
11.4 Sequential Testing
매일 결과 확인 → 시간 다중성. alpha spending (Pocock, O’Brien-Fleming) 또는 always-valid inference (mSPRT).
12 코드 예시 — 보정 절차 비교
import numpy as np
from scipy.stats import f, t as t_dist
from statsmodels.stats.multitest import multipletests
np.random.seed(42)
# 가상의 6 개 p 값 (4 그룹의 모든 쌍 비교)
p_values = np.array([0.01, 0.03, 0.04, 0.06, 0.10, 0.20])
# 1. 무보정
print("무보정:")
print(f" 유의: {(p_values < 0.05).sum()} / {len(p_values)}")
# 2. Bonferroni
reject_bonf, p_bonf, _, _ = multipletests(p_values, alpha=0.05, method='bonferroni')
print(f"\nBonferroni (α/C = 0.0083):")
print(f" 보정 p: {p_bonf}")
print(f" 유의: {reject_bonf.sum()} / {len(p_values)}")
# 3. Šidák
reject_sidak, p_sidak, _, _ = multipletests(p_values, alpha=0.05, method='sidak')
print(f"\nŠidák:")
print(f" 보정 p: {p_sidak}")
print(f" 유의: {reject_sidak.sum()} / {len(p_values)}")
# 4. Holm (Bonferroni 보다 강한 검정력)
reject_holm, p_holm, _, _ = multipletests(p_values, alpha=0.05, method='holm')
print(f"\nHolm:")
print(f" 보정 p: {p_holm}")
print(f" 유의: {reject_holm.sum()} / {len(p_values)}")
# 5. FDR (Benjamini-Hochberg)
reject_fdr, p_fdr, _, _ = multipletests(p_values, alpha=0.05, method='fdr_bh')
print(f"\nFDR (BH):")
print(f" 보정 p: {p_fdr}")
print(f" 유의: {reject_fdr.sum()} / {len(p_values)}")이 코드는 동일한 6 개 p 값 에 대해 5 가지 보정 절차 를 비교한다. 절차마다 유의 수가 다르다 — 보정의 보수성이 검정력 손실로 이어짐을 보여 준다.
13 Bonferroni 의 일반화 — Bonferroni 부등식
Bonferroni 보정은 다음 부등식에 기반한다.
\[ \Pr\left(\bigcup_{k=1}^{C} A_k\right) \leq \sum_{k=1}^{C} \Pr(A_k) \]
\(A_k\) 가 “비교 \(k\) 가 거짓 양성” 사건이면, 좌변이 \(\alpha_{EW}\) 이고 우변이 ENEPE 이다. 따라서:
\[ \alpha_{EW} \leq \text{ENEPE} = C \cdot \alpha_{PC} \]
각 비교의 \(\alpha_{PC}\) 를 \(\alpha / C\) 로 두면 \(\alpha_{EW} \leq \alpha\) 보장. 불평등 으로 보장하므로 보수적.
14 다중 비교의 역사적 사례
14.1 1955 Tukey 의 The Problem of Multiple Comparisons
John Tukey 가 다중 비교 문제를 체계적 으로 정립. 미발표 manuscript 가 통계학에 큰 영향. 후에 Tukey HSD 절차 도출.
14.2 1995 Benjamini-Hochberg
FDR 개념 도입. Controlling the False Discovery Rate (JRSS-B). 유전체학에 큰 영향.
14.3 2000s GWAS 시대
수백만 SNP 검정 → 다중성 문제 폭증. Bonferroni \(p < 5 \times 10^{-8}\) 가 GWAS 표준. FDR 도 광범위 채택.
14.4 2010s Replication Crisis
심리학·의학의 재현 위기 → 다중성 보정의 강화. 사전 등록, FDR, 효과 크기 보고가 표준.
15 Type I vs Type II vs Type S 오류
- Type I: 효과 없는데 있다고 결론 (false positive). \(\alpha\) 통제.
- Type II: 효과 있는데 없다고 결론 (false negative). \(\beta\) 통제.
- Type S: 효과의 방향 잘못 결론 (sign error). 다중 비교에서 흔함.
- Type M: 효과의 크기 과대 추정 (magnitude error). Selection bias.
다중 비교 보정이 Type I 통제. 그러나 Type S, M 도 분석에서 고려해야.
16 다중성 보정의 분야별 표준
16.1 의학 임상
| 시나리오 | 권장 |
|---|---|
| FDA Phase III | Hierarchical 또는 Bonferroni |
| 학술 RCT | CONSORT + 사전 등록 |
| 메타 분석 | FDR (BH) |
16.2 유전체학
| 시나리오 | 권장 |
|---|---|
| GWAS | Bonferroni \(5 \times 10^{-8}\) |
| RNA-seq DE | FDR (BH) |
| Replication | 단순 \(\alpha = 0.05\) (이미 발견된 SNP) |
16.3 머신러닝
| 시나리오 | 권장 |
|---|---|
| 모형 선택 | Cross-validation |
| Hyperparameter tuning | FDR |
| Feature selection | 보정 없거나 Bonferroni |
16.4 비즈니스 A/B 테스트
| 시나리오 | 권장 |
|---|---|
| 1 metric, 2 variants | 보정 X |
| 1 metric, multi-arm | Dunnett |
| Multi metric | Hierarchical 또는 FDR |
| Sequential | Alpha spending |
각 분야의 문제 구조 가 보정 선택을 결정.
17 다중 비교의 머신러닝 응용
17.1 Feature Selection
수많은 변수 중 유의한 변수만 선택. 다중성 문제.
방법: - LASSO — 자동 선택 (regularization) - Stability Selection (Meinshausen & Bühlmann 2010) - Knockoffs (Barber & Candès 2015) - FDR for feature importance
17.2 Multiple Comparisons in Hyperparameter Tuning
Grid search 의 여러 하이퍼파라미터 조합 비교. 동일한 다중성 함정.
해법: Cross-validation + 별도 holdout test set.
18 다중성과 Bayesian 분석
베이즈 분석은 근본적으로 다른 시각. 사후 확률 직접 계산 → 다중 비교 자동 통제.
18.1 Hierarchical Bayes
여러 효과를 공통 분포 에서 추출 가정:
\[ \theta_j \sim \text{Normal}(\mu, \tau^2) \]
이 prior 가 자동으로 극단값 을 축소 (shrinkage). 다중 비교 보정과 비슷한 효과.
18.2 사례
19 코드 예시 — 통합 다중성 분석
import numpy as np
from statsmodels.stats.multitest import multipletests
# 가상의 5 메트릭 p 값
metrics = ['revenue', 'click_rate', 'time_on_page', 'bounce_rate', 'returning_users']
p_values = np.array([0.003, 0.012, 0.045, 0.18, 0.08])
methods = ['bonferroni', 'sidak', 'holm', 'simes-hochberg', 'hommel', 'fdr_bh']
print("절차별 비교 (5 메트릭):\n")
print(f"{'Method':<20s} {'기각 수':<10s} {'유의 메트릭'}")
print("-" * 60)
for method in methods:
rej, p_adj, _, _ = multipletests(p_values, alpha=0.05, method=method)
sig_metrics = [m for m, r in zip(metrics, rej) if r]
print(f"{method:<20s} {rej.sum():<10d} {', '.join(sig_metrics) or 'none'}")
# Hierarchical (사전 등록 가정)
print("\nHierarchical (사전 등록 우선순위):")
priority = ['revenue', 'click_rate', 'time_on_page', 'bounce_rate', 'returning_users']
for metric in priority:
p = p_values[metrics.index(metric)]
if p < 0.05:
print(f" {metric}: p = {p:.4f} → 유의 → 다음 단계")
else:
print(f" {metric}: p = {p:.4f} → 미유의 → 중단")
break20 후속 — 절차별 디테일
이 글에서는 다중 비교 문제의 골격 을 다뤘다. 후속 글들은 각 절차의 수식·도출·실무 사용법 을 자세히 다룬다.
- A-MAX5-1 — αPC, αEW, ENEPE + 동시 CI
- A-MAX5-2 — Hsu 5 추론 강도 + Bonferroni
- A-MAX5-3 — Tukey HSD, Scheffé, Dunnett
- A-MAX5-4 — FDR + 실무 조정
21 관련 주제
선행 지식
후속 주제 (Phase A)
- A-MAX5-1 ~ 4 (절차별 디테일)
- A-SCH19-* (임상시험 다중성)
다른 카테고리 연결
- 다중 검정 — Casella 수리통계
- q 값 — FDR 의 모수
- Genome-wide permuted p-value — 대규모 다중 검정