이 글은 Schulz Ch.13 Generation of Allocation Sequences in Non-Double-Blinded Randomised Trials 시리즈 (3 편) 의 첫 글이다. Ch.12 가 모든 RCT 의 무작위 배정을 다뤘다면, Ch.13 은 비맹검 (non-double-blinded) 시험의 특수 위험 에 초점을 맞춘다. Schulz full md L:19654~끝 의 흐름을 압축한다.
1 진입 직관 — 비맹검은 무엇이 다른가
이중 맹검 시험에서는 처치/대조 정보가 모든 인력에게 차단된다. 무작위 배정 sequence 가 시험 끝까지 비밀로 유지 된다. 그러나 비맹검 시험은 다르다.
결정적 차이: 비맹검 시험에서는 환자가 어느 군에 배정되었는지 가 시험 진행 중 알려진다. 이 정보는 모집 인력의 손에 닿을 수 있다. 그리고 그 손이 다음 환자의 배정 결정에 영향을 줄 수 있다.
Schulz Ch.13 의 한 줄 메시지:
비맹검 RCT 에서 무작위 배정 방법 이 부적절하면 selection bias 가 침투한다. 적절한 무작위 방법조차도 예측 가능성 이 있으면 무력화된다.
비유: 카드 게임에서 (1) 셔플은 잘 했고, (2) 카드를 나누어주는 사람만 카드를 본다고 하자. 만약 (3) 첫 라운드 후 누가 어떤 카드를 받았는지 모두에게 공개되면, 다음 라운드의 카드 패턴이 부분적으로 예측 가능해진다. 비맹검 RCT 가 정확히 이 상황이다.
2 정의: 비맹검 RCT 와 추측 위험
비맹검 RCT: 환자 또는 임상의 (또는 둘 다) 가 어느 처치를 받았는지 알 수 있는 RCT. 외과 시험, 행동 개입, 일부 약물 시험에서 흔함.
추측 위험 (Guessing Risk): 무작위 배정 sequence 의 과거 패턴을 알면 미래 배정을 부분적으로 예측할 수 있는 위험. Predictability → Selection bias 의 진입 통로.
- 역학: Allocation Guessing / Subversion of Randomisation
- IT: 사용자가 실험군을 추측·이동하는 경우 (관련 개념)
Schulz 의 핵심 주장: “비맹검 시험에서 적절한 무작위 배정 방법은 이중 맹검 시험과 다른 기준 으로 평가되어야 한다.”
반사실 — 왜 이중 맹검에서는 문제가 안 되는가: 이중 맹검에서는 어떤 환자가 어느 군인지 시험 끝까지 아무도 모름. 따라서 과거 패턴을 알 수 없고, 미래도 추측 불가. Block 크기 4 처럼 작은 고정 블록도 안전. 비맹검에서는 이 안전망이 사라진다.
3 Cosmetic Credibility 미신 — “균형이 RCT 의 미덕” 이라는 오해
Schulz 가 Ch.13 의 첫 페이지에서 강하게 비판하는 미신.
“한 평론가가 전화를 걸어 ‘이 RCT 보고서를 읽고 문제를 발견했어요!’ 라고 했는데, 이어진 대화는 ‘두 군의 sample size 차이를 보세요. 같지 않잖아요. 의심스럽습니다’ 였다.” (Schulz & Grimes, 2019, Ch.13)
이 평론가의 직관은 다수 의학 연구자가 공유 하는 미신이다.
3.1 미신의 실증
학술지 분석 결과 (Schulz, 2002):
| 시험 유형 | 정확히 같은 sample size 비율 |
|---|---|
| Simple randomised | 54% (specialist journal), 71% (dermatology) |
| Block randomised | 36% |
충격: Simple randomisation 으로는 정확히 같은 sample size 가 우연히 나오기 어렵다. 그런데 출판된 보고서의 54~71% 가 정확히 같다. 이는 비무작위 조작 이 흔히 일어남을 시사한다.
수식 직관: \(n=100\) 시험에서 simple randomisation 으로 정확히 50:50 이 될 확률은:
\[P(X = 50 | X \sim \text{Binomial}(100, 0.5)) \approx 0.0796\]
즉 약 8%. 그러나 보고서의 54% 가 정확히 같다는 사실은 통계적 우연으로 설명 불가능. 연구자가 균형을 강제 했음을 의미.
3.2 왜 이 미신이 위험한가
균형 강제는 두 경로로 selection bias 를 만든다.
3.2.1 경로 1: 비무작위 조작
연구자가 “마지막 환자를 A 군에 배정해 균형 맞추자” 식으로 sequence 를 임의 변경. 이는 무작위화 자체의 무력화.
3.2.2 경로 2: Permuted-Block 의 예측 가능성
균형을 합법적으로 강제하는 permuted-block randomisation 도, 비맹검 시험에서는 끝부분이 예측 가능.
사례: 블록 크기 4 (A 2, B 2). 첫 3 명이 A B A 였다면 4 번째는 무조건 B. 모집 인력이 이 패턴을 보고:
- 임상적 직관: “이 환자는 B (표준 약) 가 적합해 보인다” → 등록 강행
- 반대: “이 환자는 A (새 약) 가 적합해 보인다” → 등록 연기 또는 제외
어느 방향이든 selection bias 발생.
반사실 — 균형이 깨져도 통계 검정력은 거의 손상 없다: \(n=200\) 시험에서 90:110 이라도 검정력은 균형 시 (100:100) 의 99.5% 수준. 균형 강제로 얻는 통계적 이득은 무시할 수준이지만, 잃는 unpredictability 는 결정적.
4 임상 인력의 추측 — Schulz 의 충격적 실증
Kahan 외 (2015) 가 임상의·연구 간호사를 직접 조사한 결과: 16% 가 배정 패턴을 추측하려 시도했음을 인정. 이 16% 는 최소 추정치 — 실제로는 더 높을 가능성.
추측 방법: 과거 배정의 log 를 유지하여 패턴 분석. 블록 크기를 역추적.
so what: 16% 라는 숫자는 “왜 비맹검 시험에서 unpredictability 가 추가 안전장치가 필요한가” 를 직접 정당화한다. 임상 인력의 일부가 적극적으로 sequence 를 풀려 시도한다. Concealment 가 적절해도 패턴 자체 가 단서가 된다.
반사실: 만약 16% 가 추측에 성공해 selection bias 를 만든다면, 시험 결과가 진짜 효과보다 과대 또는 과소 추정. Schulz 외 (1995) 의 41% effect overestimation 발견과 일치.
5 Block Size 의 함정 — 작은 고정 블록의 위험
비맹검 시험에서 가장 흔히 사용되는 무작위 방법은 permuted-block. 그러나 작은 고정 블록 은 위험하다.
5.1 Block 크기 4 의 위험 분석
블록 크기 4 (A 2, B 2). 모든 가능한 4 배정 패턴은 다음 6 가지.
AABB, ABAB, ABBA, BAAB, BABA, BBAA
각 블록이 끝나면 다음 블록의 첫 배정 은 6 가지 중 하나 — 새 블록의 첫 자리는 1/2 확률.
그러나 블록 내부 는 다르다.
| 첫 3 자리 | 4 번째 자리 |
|---|---|
| AAB | B (확률 1) |
| ABA | B (확률 1) |
| ABB | A (확률 1) |
| BAA | B (확률 1) |
| BAB | A (확률 1) |
| BBA | A (확률 1) |
위험: 첫 3 자리를 보면 4 번째가 결정적. 즉 4 명마다 1 명은 100% 예측 가능. 모집 인력이 이 정보를 활용할 수 있다.
블록 크기 6 (A 3, B 3) 도 마찬가지. 첫 5 자리를 보면 6 번째가 결정적.
5.2 Schulz 의 권고
비맹검 시험에서:
- 블록 크기 ≥ 10 권장 (작을수록 위험)
- 블록 크기 랜덤 변동 (예: 6, 8, 10, 12 중 무작위)
- 블록 크기 비공개 (sequence 생성자 이외에 알리지 않음)
수식 직관: 블록 크기 \(b\) 가 고정이면 \(b\) 명마다 1 명의 배정이 결정적 → 약 \(1/b\) 의 환자가 예측 가능.
- \(b=4\): 25% 결정적
- \(b=6\): 17%
- \(b=10\): 10%
- \(b=20\): 5%
큰 블록일수록 위험 감소. 그러나 0 이 되지는 않음. Random 변동과 비공개 가 보완책.
그러나 한계: Random 블록 크기도 완전한 해결책이 아니다. Random 변동은 selection bias 를 감소 시키지만 제거 하지 않음 (Schulz 외 2002). 그래서 Schulz 는 더 강한 대안 (Urn, Mixed Randomisation) 을 권장.
6 Schulz 의 세 가지 권고
비맹검 시험의 무작위 배정 방법 선택은 표본 크기에 따라 다르다.
6.1 권고 1: Total \(n > 200\) → Simple Randomisation
“비맹검 RCT 의 총 표본 크기가 200 명 이상이고, 각 stratum 또는 subgroup 의 크기도 100 이상이면, simple randomisation 권장.” (Schulz & Grimes, 2019, Ch.13)
이유:
- 완벽한 unpredictability — 가장 큰 안전장치
- 자연 균형 — \(n > 200\) 에서 imbalance 위험 무시 가능
- 표준 통계 분석 — software 호환성
반사실 — Simple 의 imbalance: \(n=200\) 에서 60:140 같은 극단적 imbalance 확률은 < 0.1%. 70:130 이상은 약 1%. 우려할 수준 아님.
6.2 권고 2: Total \(n < 200\) 또는 stratum < 100 → Urn Randomisation
“비맹검 RCT 의 총 표본 크기가 200 미만이거나, 어떤 stratum 의 크기가 100 미만이면, restricted randomisation 권장 — 특히 urn design.” (Schulz & Grimes, 2019, Ch.13)
이유:
- 초기 단계 균형 — 작은 표본에서 imbalance 위험 차단
- Unpredictability 보존 — Block 보다 우수
- 자연스러운 simple 으로의 수렴 — 시험 진행에 따라 simple 에 가까워짐
수식 직관 — Urn(2,1): 시험 초기에는 적응적 균형 (불균형 발생 시 자동 보정), 후기에는 추가된 ball 들이 누적되어 simple 에 가까운 동작. 두 단계의 장점 결합.
6.3 권고 3: Urn 이 부담스러우면 Mixed Randomisation
Schulz 가 자체 제안한 절충 방법. Simple + Permuted Block 의 hybrid.
Step 1: 첫 부분 - Replacement Randomisation 으로 *비대칭* 시작 블록 생성
Step 2: 이후 - Random 변동 큰 블록 (10~20)
Step 3: 가끔 - Simple 또는 추가 비대칭 블록 삽입
직관: “처음에 일부러 불균형하게 시작” 하면, 시험 끝까지 정확한 50:50 이 되지 않으므로 블록 끝부분 결정성 이 약화된다. 이후 큰 블록과 가끔의 simple 삽입으로 unpredictability 를 강화.
사례 (Panel 13.3): \(n=100\) 시험. 첫 10 명 = Replacement Randomisation 으로 A 3, B 7 (불균형 4 강제). 다음 30 명 = Block 12, 8, 10. 그 후 5 명 = Simple. 이후 다시 Block 등. 끝까지 정확한 50:50 이 되지 않음 → 끝부분 추측 어려움.
7 “더 좋은” 방법들 — 왜 안 쓰이나
Schulz 는 Block 보다 우수한 방법들을 추가로 소개한다.
| 방법 | 출처 | 장점 |
|---|---|---|
| Big Stick Design | Soares, Wu (1983) | Imbalance tolerance + 강제 보정 |
| Biased-Coin with Imbalance Tolerance | - | Block 보다 unpredictable + balance |
| Ehrenfest Urn | Ehrenfest 모형 기반 | Adaptive, 매우 unpredictable |
| Maximal Procedure | Berger & Bakshi (2001) | Block 보다 unpredictable + 균형 |
그러나 현실: Berger 2014 의 review — 90% 의 RCT 가 Block 사용, 나머지 대부분 Minimisation. 위 “더 좋은” 방법들은 거의 사용 안 됨.
이유: 개념적 복잡도. Block 은 익숙하다. 새 방법들은 통계 software 지원도 약함.
Schulz 의 해석: “왜 trialist 들이 여전히 permuted block 을 선호하는지 명확하지 않다 — 단순함이 큰 요인일 수 있다” (Berger 2014). 학계의 학습 비용 이 더 우수한 방법의 채택을 막는 보수적 균형.
8 Full Disclosure in Protocol 논쟁
Ch.13 의 미묘한 논쟁: 프로토콜에 무작위 방법 (블록 크기 등) 을 명시할 것인가?
| 입장 | 주장 |
|---|---|
| 명시 찬성 | 투명성, 재현 가능성, peer review 의 강화 |
| 명시 반대 | 모집 인력이 프로토콜 접근 가능 → 추측 위험 증가 |
Schulz 의 결론:
“Sequence 생성자만 정확한 블록 크기와 변동 규칙을 알아야 한다. 모집 인력은 일반적 무작위 방법 (예: ‘변동 블록 사용’) 만 알면 된다.”
CONSORT 보고는 시험 종료 후 완전 공개. 시험 중 은 분리된 정보 권한.
9 IT / 디지털 실험 매핑 — Predictability 위험의 동형
| 역학 (RCT) | IT (A/B Test) | 비고 |
|---|---|---|
| Cosmetic credibility 미신 | “50:50 이어야 안심” 미신 | Same trap |
| 16% 임상 인력 추측 | 사용자가 본인 군 알아채고 행동 변경 | Network effect 위험 |
| Block 끝부분 결정성 | Hash bucket 끝부분 패턴 | Hash function 약점 시 |
| Random 변동 블록 | Hash salt rotation | 패턴 노출 방지 |
| Big Stick / Maximal | Adaptive bucket adjustment | Reservoir sampling 변형 |
| Schulz 200 임계 | A/B platform 의 minimum traffic | 동일 logic |
왜 동형인가?: 두 영역 모두 예측 가능성 = 편향 진입 통로. IT 에서는 사용자가 “내가 실험군이다” 를 추측·확인하면 행동을 바꿔 결과 왜곡 가능. 동일 메커니즘.
10 챕터의 줄기 — 후속 글 안내
Ch.13 의 후속 깊이는 두 흐름으로 분해된다.
10.1 후속 글 1: 추측 위험과 블록 방어 (32-8)
- Cosmetic credibility 미신의 실증 깊이
- Block 크기 함정의 수학적 분석
- 16% 추측의 메커니즘
- Random 블록 크기·큰 블록의 부분적 한계
10.2 후속 글 2: Urn 과 Mixed Randomisation (32-9)
- Urn UD(α, β) 의 비맹검 적합성 증명
- Mixed Randomisation 의 단계별 절차 (Panel 13.2~13.3)
- Big Stick / Maximal Procedure / Ehrenfest 비교
- Schulz 외 (1995) 의 41% effect overestimation 재방문
11 코드 예시 — Block 크기와 예측 가능성
import numpy as np
from itertools import permutations
np.random.seed(42)
def block_predictability(block_size, n_blocks=1000):
"""
Block 내에서 처음 (block_size - 1) 자리가 주어졌을 때,
마지막 자리를 추측할 수 있는 비율.
"""
# 모든 가능한 block 패턴 생성 (A=0, B=1)
half = block_size // 2
base = np.array([0]*half + [1]*half)
patterns = list(set(permutations(base)))
# 각 패턴의 첫 (b-1) 자리가 unique 한지 확인
prefixes = {}
for p in patterns:
prefix = tuple(p[:-1])
if prefix not in prefixes:
prefixes[prefix] = []
prefixes[prefix].append(p[-1])
# Unique 한 prefix 의 비율 = 마지막 자리 결정 가능 비율
unique_prefixes = sum(1 for v in prefixes.values() if len(set(v)) == 1)
total_prefixes = len(prefixes)
return unique_prefixes / total_prefixes
print("[Block 크기별 마지막 자리 예측 가능 비율]")
for b in [4, 6, 8, 10, 12, 16, 20]:
pred = block_predictability(b)
print(f"Block size {b:>2}: {pred:.1%}")
# Random 변동 블록의 효과
def varying_block_predictability(block_sizes, n_sim=1000):
"""
Random 변동 블록에서 다음 자리를 추측 정확도 측정.
"""
correct = 0
total = 0
for _ in range(n_sim):
# Random block size 선택
b = np.random.choice(block_sizes)
half = b // 2
block = np.array([0]*half + [1]*half)
np.random.shuffle(block)
# 추측: 지금까지 부족한 군
n_a, n_b = 0, 0
for i in range(b):
if i == b - 1:
# 마지막 자리 추측
guess = 0 if n_a < n_b else 1
if guess == block[i]:
correct += 1
total += 1
if block[i] == 0:
n_a += 1
else:
n_b += 1
return correct / total
print("\n[Random 변동 블록의 추측 정확도]")
for sizes in [[4], [4, 6, 8], [8, 10, 12, 16]]:
acc = varying_block_predictability(sizes)
print(f"Block sizes {sizes}: {acc:.1%}")
# Schulz Cosmetic Credibility — Simple Randomisation 정확 균형 확률
from scipy import stats
print("\n[Simple Randomisation 정확 50:50 확률]")
for n in [50, 100, 200, 500, 1000]:
p = stats.binom.pmf(n//2, n, 0.5)
print(f"n={n:>4}: P(정확 균형) = {p:.4f} ({p:.2%})")
print("\n→ 출판된 보고서의 54% 가 정확히 같다는 사실은")
print(" Simple randomisation 의 우연으로는 설명 불가능 (n=100 에서 8%, n=200 에서 6%).")
print(" 비무작위 조작이 흔히 일어남을 강력 시사.")이 코드는 (1) Block 크기에 따른 마지막 자리 예측 비율 (b=4 에서 25%, b=20 에서 5%), (2) Random 변동 블록의 추측 정확도 감소, (3) Simple Randomisation 으로 정확 균형이 우연히 나올 확률 을 보여준다.
12 결론 — Ch.13 의 한 줄 요약
비맹검 RCT 에서 균형의 미신을 버리고 unpredictability 를 우선하라.
핵심 행동 권고:
- 균형 강제 = selection bias — Cosmetic credibility 는 함정
- \(n > 200\) 시 Simple — 자연 균형, 완벽 unpredictability
- \(n < 200\) 시 Urn 또는 Mixed Randomisation — Block 보다 안전
- Block 사용 시 큰·랜덤 변동 + 비공개
- Generation/Implementation 분리 엄격 실시
후속 글에서:
- 32-8 — 추측 위험의 실증·메커니즘 + Block 방어 깊이
- 32-9 — Urn / Mixed Randomisation 의 절차·시뮬레이션 + Schulz 41% 발견 재방문
13 관련 주제
선행 지식
Phase C 후속 글
- 비맹검의 위험과 방어 (placeholder)
- Urn 과 Mixed Randomisation (placeholder)
- SCH Ch.14 Allocation Concealment 개관 (placeholder)
14 참고문헌
- Schulz, K. F. & Grimes, D. A. (2019). Essential Concepts in Clinical Research (2nd ed.), Ch.13. Elsevier.
- Schulz, K. F. & Grimes, D. A. (2002). Generation of allocation sequences in randomised trials: chance, not choice. Lancet 359, 515-519.
- Kahan, B. C., Rehal, S., Cro, S. (2015). Risk of selection bias in randomised trials. Trials 16, 405.
- Berger, V. W. (2014). Quantifying the magnitude of baseline covariate imbalances. Stat. Med. 33, 4133-4135.
- Soares, J. F. & Wu, C. F. J. (1983). Some restricted randomization rules. Comm. Statist. Theory Methods 12, 2017-2034.
- Berger, V. W. & Bakshi, A. (2001). Maximum allocation rules. Stat. Med. 20, 3401-3414.
- Schulz, K. F., Chalmers, I., Hayes, R. J., Altman, D. G. (1995). Empirical evidence of bias. JAMA 273, 408-412.