이 글은 Schulz Ch.20 시리즈의 세 번째 글이다. Interim analysis 와 group sequential stopping 을 깊이 다룬다.
1 진입 직관 — α Inflation 의 수학
RCT 가 5 년간 진행되면 중간 결과 확인 의 유혹. 그러나 매번 \(\alpha = 0.05\) 검정하면 false-positive 누적.
1.1 누적 α 수식
독립 검정 \(k\) 회 시 누적 \(\alpha\):
\[\alpha_{\text{cumulative}} = 1 - (1 - \alpha)^k\]
| 검정 수 \(k\) | 누적 \(\alpha\) |
|---|---|
| 1 | 0.05 |
| 2 | 0.0975 ≈ 0.10 |
| 3 | 0.143 |
| 5 | 0.226 |
| 10 | 0.401 |
수식 직관: 매번 \(\alpha = 0.05\) 검정 시 10 회 후 약 40% 의 false-positive 위험. Type I error 거의 1/2.
2 DMC (Data Monitoring Committee)
2.1 역할
독립 위원회: 임상의 + 통계학자 + 윤리 전문가. 시험 진행 중 누적 데이터 모니터링.
2.2 권한
| 결정 | 근거 |
|---|---|
| 시험 조기 중단 (benefit) | 처치가 명확히 우월 |
| 시험 조기 중단 (harm) | 처치가 명확히 해로움 |
| 시험 조기 중단 (futility) | 처치 효과 입증 가능성 없음 |
| 시험 수정 | 표본 크기 증가, 적격 변경 등 |
| 시험 계속 | 정상 진행 |
2.3 Schulz 의 권고
“독립 DMC 가 결정. PI 와 분리. Pre-specified statistical stopping method 사용.”
3 Group Sequential Stopping Methods — 세 옵션
3.1 Pocock (1977)
모든 interim 분석 시 동일한 작은 p-value 사용. 마지막 분석도 같은 p-value.
3.1.1 Panel 20.2 의 Pocock 표
| Total 분석 | Pocock p (모든 분석) |
|---|---|
| 2 | 0.029 |
| 3 | 0.022 |
| 4 | 0.018 |
| 5 | 0.016 |
3.1.2 단점
마지막 분석 (final test) 도 작은 p — 일반 fixed-sample 시험보다 덜 power. 예: 3 회 분석 시 final p < 0.022 — 일반 시험의 0.05 와 비교.
3.2 Peto (Haybittle-Peto)
Interim 분석은 매우 엄격 (0.001), final 은 거의 0.05.
| Total 분석 | Interim p | Final p |
|---|---|---|
| 2 | 0.001 | 0.05 |
| 3 | 0.001 | 0.05 |
| 4 | 0.001 | 0.05 |
| 5 | 0.001 | 0.05 |
3.2.1 장점
Final test 가 일반 시험과 동일 한 0.05 — power 보존.
3.2.2 단점
Interim 에서 조기 중단 이 매우 어려움 (0.001 충족 시만). 일부 시험에 부적절.
3.3 O’Brien-Fleming (1979)
Interim 에서 극도로 엄격 시작, 시간이 지나며 완화.
3.3.1 Panel 20.2 의 O’Brien-Fleming 표 (5 회 분석)
| 분석 # | O’Brien-Fleming p |
|---|---|
| 1 | 0.00001 |
| 2 | 0.0013 |
| 3 | 0.008 |
| 4 | 0.023 |
| 5 (final) | 0.041 |
3.3.2 장점
초기 데이터는 불안정 → 매우 엄격. 후기 데이터는 안정 → 완화. 직관적 일치.
Final p (0.041) 이 일반 시험의 0.05 에 거의 동일 — power 보존.
Schulz 의 강한 권장.
4 Schulz 의 종합 권고
4.1 권고 1: 분석 횟수
“2~3 회 interim 분석으로 충분. 4~5 회 이상은 marginal gain. Power 손실 누적.”
4.2 권고 2: 방법 선택
| 시험 유형 | 권장 방법 |
|---|---|
| 일반 RCT | O’Brien-Fleming (Schulz 권장) |
| 단순함 우선 | Peto |
| 빠른 조기 중단 필요 | Pocock |
4.3 권고 3: Pre-specification
“Stopping rule 은 protocol 또는 DMC charter 에 명시. 시험 시작 전 결정.”
4.4 권고 4: Independent Statistician
“Interim 분석 자체는 시험 PI 가 아닌 independent statistician 이 수행. PI 는 blinded 유지.”
5 코드 예시 — α Inflation 시뮬레이션
import numpy as np
from scipy import stats
np.random.seed(42)
n_sim = 10000
# 시뮬레이션 1: Naive interim (매번 α=0.05)
def naive_interim(n_interim, n_per_arm=200):
T = np.random.choice([0, 1], 2*n_per_arm)
Y = np.random.binomial(1, 0.20, 2*n_per_arm) # 효과 없음
# 데이터 누적 시뮬레이션
for i in range(1, n_interim + 1):
n_data = int(2 * n_per_arm * i / n_interim)
T_sub = T[:n_data]
Y_sub = Y[:n_data]
if len(set(T_sub)) > 1:
_, p = stats.ttest_ind(Y_sub[T_sub == 0], Y_sub[T_sub == 1])
if p < 0.05:
return True # False positive
return False
print("[Naive Interim α Inflation]")
for n in [1, 2, 5, 10]:
fps = sum(naive_interim(n) for _ in range(n_sim))
print(f"{n} 회 interim, α=0.05 each: 누적 false-positive = {fps/n_sim:.3f}")
# 시뮬레이션 2: O'Brien-Fleming
ofb_thresholds = {
1: [0.05],
2: [0.005, 0.048],
3: [0.0005, 0.014, 0.045],
5: [0.00001, 0.0013, 0.008, 0.023, 0.041],
}
def ofb_interim(n_interim, n_per_arm=200):
T = np.random.choice([0, 1], 2*n_per_arm)
Y = np.random.binomial(1, 0.20, 2*n_per_arm)
thresholds = ofb_thresholds[n_interim]
for i in range(1, n_interim + 1):
n_data = int(2 * n_per_arm * i / n_interim)
T_sub = T[:n_data]
Y_sub = Y[:n_data]
if len(set(T_sub)) > 1:
_, p = stats.ttest_ind(Y_sub[T_sub == 0], Y_sub[T_sub == 1])
if p < thresholds[i-1]:
return True
return False
print("\n[O'Brien-Fleming Interim — Type I Error 보존]")
for n in [1, 2, 3, 5]:
fps = sum(ofb_interim(n) for _ in range(n_sim))
print(f"{n} 회 interim, OFB: 누적 false-positive = {fps/n_sim:.3f}")
print("→ OFB 가 다회 분석에도 α≈0.05 유지")6 결론 — Ch.20.2 의 한 줄 요약
Interim 분석의 α inflation 은 Group Sequential Stopping 으로 통제. O’Brien-Fleming 가 가장 균형.
핵심 메시지:
- α inflation 의 수학 — 10 회 시 19~40%
- DMC: 독립 위원회, blinded statistician
- 세 옵션: Pocock, Peto, O’Brien-Fleming (권장)
- Schulz 권고: 2~3 회 interim, OFB 사용, pre-specification
다음 글: Stopping for harm/futility + 기타 방법.
7 관련 주제
8 참고문헌
- Schulz, K. F. & Grimes, D. A. (2019). Essential Concepts in Clinical Research (2nd ed.), Ch.20. Elsevier.
- Pocock, S. J. (1977). Group sequential methods in the design and analysis of clinical trials. Biometrika 64, 191-199.
- O’Brien, P. C. & Fleming, T. R. (1979). A multiple testing procedure for clinical trials. Biometrics 35, 549-556.
- Haybittle, J. L. (1971). Repeated assessment of results in clinical trials of cancer treatment. Br. J. Radiol. 44, 793-797.
- Geller, N. L. & Pocock, S. J. (1987). Interim analyses in randomized clinical trials. Biometrics 43, 213-223.
- Pocock, S. J. (1992). When to stop a clinical trial. BMJ 305, 235-240.
- Ellenberg, S. S., Fleming, T. R., DeMets, D. L. (2002). Data Monitoring Committees in Clinical Trials. Wiley.