Interim Analysis · Group Sequential — Ch.20.2

α Inflation · O’Brien-Fleming · Peto · Pocock

Schulz Ch.20.2 — Interim analysis 의 다중성 문제와 해결책. (1) α inflation 의 수학 (10 회 검정 시 19%), (2) Group sequential stopping methods — Pocock, Peto, O’Brien-Fleming 비교 (Panel 20.2), (3) DMC (Data Monitoring Committee) 의 역할, (4) Schulz 의 권고 — O’Brien-Fleming + 2~3 회 interim. 실증 시뮬레이션 포함.

Experimentation
Epidemiology
저자

Kwangmin Kim

공개

2026년 05월 08일

이 글은 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.

1.2 실제 RCT 는 correlated

실제로 누적 데이터는 독립이 아님 (시간이 갈수록 추가). Schulz 인용 (Pocock 1983):

실제 검정 수 실제 누적 α
1 0.05
2 0.08
3 0.11
5 0.14
10 0.19

결론: 독립보다 약하지만 여전히 심각. Stopping rules 없는 interim 분석은 Type I error 폭증.

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 가 가장 균형.

핵심 메시지:

  1. α inflation 의 수학 — 10 회 시 19~40%
  2. DMC: 독립 위원회, blinded statistician
  3. 세 옵션: Pocock, Peto, O’Brien-Fleming (권장)
  4. 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.

Subscribe

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