무작위 배정 순서 — Ch.12 개관

Chance, Not Choice — RCT 의 가장 오해받는 부분

무작위 배정 순서 (allocation sequence) 의 생성은 RCT 의 가장 기본이면서도 가장 이해도가 낮은 부분이다. 이 글은 Schulz Ch.12 의 큰 그림을 다룬다. (1) 왜 chance, not choice 인가의 직관, (2) 무작위화의 세 가지 이점 (편향 제거 · 맹검 가능 · 확률 이론), (3) 흔한 유사 무작위 (quasirandom) 의 함정, (4) 7 가지 무작위화 방법의 위계 (Simple → Restricted → Biased Coin → Urn → Stratified), (5) 생성과 구현의 분리 원칙. 후속 글에서 각 항목을 깊이 다룬다.

Experimentation
Epidemiology
저자

Kwangmin Kim

공개

2026년 05월 08일

이 글은 Schulz Ch.12 Generation of Allocation Sequences 시리즈 (3 편) 의 첫 글이다. Schulz full md L:19007~19650 의 전체 흐름을 압축한다. 후속 글에서는 (1) 무작위화의 역사와 세 가지 이점, (2) 7 가지 무작위 배정 방법 비교 를 깊이 다룬다.

1 진입 직관 — 왜 “Chance, not Choice” 가 RCT 의 심장인가

RCT 가 관찰 연구보다 우월한 단 하나의 이유는 처치 배정이 환자·연구자의 선택이 아니라 확률에 따른다 는 점이다. 이것이 무작위화 (randomisation) 의 본질이다. Bradford Hill 의 명언이 이 점을 가장 잘 표현한다.

“having used a random allocation, the sternest critic is unable to say when we eventually dash into print that quite probably the groups were differentially biased through our predilections or through our stupidity.” — Austin Bradford Hill (1954)

번역: 무작위 배정을 사용했다면, 우리가 마침내 결과를 발표할 때, 가장 엄격한 비평가도 “두 군이 우리의 선호나 어리석음 때문에 차별적으로 편향되었을 수도 있다” 고 말하지 못한다.

직관: 임상의가 “이 환자는 위험해 보이니 새 약 (안전해 보이는 쪽) 을 주자” 라고 선택 한다면, 두 군의 baseline 위험이 처음부터 달라진다. 새 약 군이 더 좋아 보여도 그것은 처음부터 덜 위험한 환자가 거기 있었기 때문. 무작위화는 이 함정을 차단한다.

Schulz 의 핵심 메시지는 한 줄로 요약된다.

무작위화는 RCT 의 가장 기본적인 측면이지만, 동시에 가장 이해도가 낮다.

연구자조차 “alternation (교대 배정)”, “date of birth (생일 기준)”, “case number (환자 번호)” 같은 체계적 (systematic) 방법을 무작위로 착각한다. 한 메타분석에서 5% 의 연구가 이런 비무작위 방법을 “무작위” 로 보고했고, 63% 는 방법 자체를 명시하지 않았다 (Schulz & Grimes, 2019, Ch.12, Schulz 외 1995 인용).

2 정의: 무작위 배정 순서 (Allocation Sequence)

정의: Allocation Sequence Generation

처치/대조군에 환자를 배정할 순서 를 사전에 결정하는 절차다. 핵심 요건은 예측 불가능성 (unpredictability) — 다음 배정이 무엇일지 사전에 알 수 없어야 한다.

  • 역학: Allocation Sequence Generation
  • IT: Bucket Assignment / Hash-based Assignment
  • 통계: Random Permutation

Schulz 의 두 핵심 분리:

  1. Generation — 무작위 순서를 어떻게 만드는가 (이 글의 주제)
  2. Concealment — 그 순서를 누구에게 어떻게 숨기는가 (Ch.14 의 주제)

두 단계 모두 적절해야 RCT 가 편향으로부터 보호된다.

비유: Allocation sequence 는 콘서트 좌석 추첨과 같다. (1) 추첨 프로그램 이 공정해야 하고 (generation), (2) 추첨 결과 가 직원에게 미리 새지 않아야 한다 (concealment). 둘 중 하나라도 무너지면 부정 배정이 발생한다.

3 무작위화의 세 가지 이점 — Panel 12.2

Schulz 는 무작위화의 이점을 세 범주로 정리한다 (Schulz & Grimes, 2019, Ch.12, Panel 12.2).

3.1 1: 편향 제거 (Bias Elimination)

가장 중요한 이점이다. 무작위 배정은 선택 편향 (selection bias)교란 (confounding) 을 동시에 차단한다.

수식 직관: 잠재적 결과 \(Y(1), Y(0)\) 와 처치 변수 \(T \in \{0,1\}\) 가 있다고 하자. 무작위 배정은 다음을 보장한다.

\[\{Y(0), Y(1)\} \perp\!\!\!\perp T\]

즉 처치 배정이 잠재적 결과와 통계적으로 독립 이다. 이 독립성은 측정된 변수뿐 아니라 측정되지 않은 변수에도 성립한다 (대수의 법칙으로 표본 크기가 클수록 정확).

반사실 시나리오 — 무작위 없는 배정: 연구자가 “건강해 보이는 환자에게 새 약” 을 배정하면, 새 약 군의 예후가 처음부터 더 좋다. 사망률이 새 약 5%, 표준 약 15% 로 나와도 그 10% 차이의 일부는 처음부터 있던 baseline 차이. 효과의 “진짜 크기” 는 알 수 없다. 무작위 배정은 이 함정을 원리적으로 제거한다.

3.2 2: 맹검 (Blinding) 의 가능성

무작위 배정이 없으면 환자·연구자가 어느 군에 누가 배정되는지 알 수 있다. 이 정보를 알면 placebo 동등 약 (sham treatment) 을 사용한 맹검이 의미 없다.

직관: 만약 “월·수·금에 입원한 환자는 새 약, 화·목·토는 표준 약” 식으로 배정하면, 약사·간호사·환자 모두가 입원 요일을 보고 어느 약을 받을지 안다. 맹검의 전제 조건이 무너진다. 무작위 배정만이 맹검의 기술적 가능성 을 만든다.

3.3 3: 확률 이론의 적용 (Probability Theory)

세 번째 이점은 통계적이다. 무작위 배정은 p-value · 신뢰구간 · 유의성 검정 의 이론적 기반을 제공한다. 즉 “두 군의 차이가 단순한 우연일 확률” 을 정량화할 수 있게 한다.

수식 직관: 무작위 배정 하에서 처치군 평균 \(\bar{X}_T\) 와 대조군 평균 \(\bar{X}_C\) 의 차이는 무작위 변수다. 이 차이의 분포 (귀무가설 하) 가 알려져 있어 p-value 를 계산할 수 있다. 무작위 배정 없이는 이 분포를 유도할 수 없다. 통계적 추론은 사실상 불가능해진다.

이 세 이점은 누적된다: 편향 제거 + 맹검 가능 + 확률 이론 → 작거나 중간 크기의 효과를 신뢰성 있게 검출할 수 있다 (Peto, 1987). RCT 가 작은 효과의 검출 에 특히 강한 이유다.

4 유사 무작위 (Quasirandom) 의 함정 — 7 가지 비무작위 방법

Schulz 는 “qua­sirandom” 이라는 용어 자체를 비판한다.

“Quasirandom 은 quasipregnant 와 같다 — 정의 자체가 모순이다.” (Schulz & Grimes, 2019, Ch.12)

임신은 yes/no 의 이분 상태이지 “약간 임신” 은 없다. 무작위화도 마찬가지다. 적절한 무작위화 그 미만의 모든 방법 은 비무작위다. 흔히 무작위로 위장된 비무작위 방법들:

방법 형태 왜 비무작위인가
Date of birth 짝수일 → A, 홀수일 → B 출생일은 시즌·주중 분포가 균일하지 않음 (MacFarlane 1978)
Case record number 짝수 번호 → A, 홀수 → B 환자 등록 순서·번호 부여 패턴이 시기·기관에 따라 편향
Alternation 첫 환자 A, 둘째 B, 셋째 A, … 다음 배정이 완전히 예측 가능 — concealment 불가능
Day of week 월·수·금 → A, 화·목·토 → B 요일별 환자 특성 차이 (응급 vs 정기)
Pre-intervention test 시험 전 검사 결과로 군 결정 편향의 정의에 가까움 — quasirandom 의 가장 위험한 형태

직관 — 왜 alternation 이 위험한가: 한 환자가 A 로 배정되었다는 사실을 모집 인력이 알면, 다음 환자가 B 라는 것도 자동으로 안다. 모집 인력이 “다음 환자에게 B 가 더 적합할 것 같다” 고 판단해 그 환자를 연기 또는 제외 하면 선택 편향이 발생한다. 예측 가능성 = 편향의 진입 통로.

반사실: Schulz 외 (1994) 의 분석에서 얻은 충격적 사실 — 보고서의 5% 가 이런 비무작위 방법을 “무작위” 로 보고했다. 더 충격적인 것은 63% 가 어떤 방법을 썼는지 명시하지 않았다. 즉 다수 보고서는 무작위화 적절성을 독자가 판단할 수도 없는 상태로 출판된다.

5 7 가지 무작위 배정 방법 — 위계 한 눈에

Schulz 는 무작위 배정 방법을 다음 위계로 제시한다 (다음 글 32-6 에서 깊이 다룸).

무작위 배정 방법
├── Simple (Unrestricted) Randomisation
│   └── 가장 기본 — fair coin-tossing 에 비유. 작은 표본에서 imbalance 위험.
├── Restricted Randomisation (균형 강제)
│   ├── Blocking (Permuted Blocks)
│   │   └── 가장 흔함. 비맹검 시 큰·랜덤 변동 블록 권장.
│   ├── Random Allocation Rule
│   │   └── 단일 큰 permuted block. End-of-trial balance.
│   ├── Biased Coin / Urn (UD(α,β))
│   │   └── 적응적 — 불균형 발생 시 확률 조정.
│   └── Replacement Randomisation
│       └── 균형 미달 시 sequence 재생성.
└── Stratified Randomisation
    └── 사전 prognostic factor 별 별도 sequence. 큰 시험에서는 효과 미미.

각 방법의 trade-off 는 두 축으로 정리된다.

의미 우선
Unpredictability 다음 배정이 사전에 알려지는가 Simple > Urn > Block > Random Allocation Rule
Balance 두 군 sample size 가 균형되는가 Block ≈ Random Allocation > Urn > Simple

trade-off 의 핵심: Unpredictability 와 Balance 는 상충 한다. Block (균형 강함) 은 작은 블록이면 끝부분이 예측 가능. Simple (예측 불가능 강함) 은 작은 표본에서 imbalance. Urn / Biased Coin 은 두 축의 절충점.

반사실 — 작은 표본 Simple Randomisation: Schulz 는 \(n=20\) 양군 시험에서 Simple Randomisation 으로 3:7 이상의 imbalance 가 약 10% 의 확률로 발생한다고 인용 (Lachin 1988). 즉 작은 시험에서는 Simple 만으로는 sample size 균형이 위험. Block 같은 균형 강제가 필요.

6 생성과 구현의 분리 (Separation of Generation and Implementation)

Schulz 가 강조하는 마지막 원칙이다.

무작위 배정 순서를 생성한 사람은 환자 적격성 평가·처치 시행·결과 측정 단계에 관여하면 안 된다.

이유는 단순하다. 생성자는 sequence 를 알고 있다. 그가 모집·평가에 관여하면 원하는 환자를 원하는 군에 배정 할 가능성이 생긴다. 이는 무작위화의 본질을 무너뜨린다.

6.1 CONSORT 의 명시 항목

CONSORT 2010 Item 10 (Implementation) 이 이 분리를 명시한다.

  • 누가 sequence 를 생성했는가?
  • 누가 환자를 등록했는가?
  • 누가 환자를 군에 배정했는가?

세 사람이 다르거나, 동일인이 맡는다면 적절한 안전장치 (sequence 잠금, 사전 봉인 등) 가 있어야 한다.

반사실 — 분리 부재: 한 시험에서 PI (principal investigator) 가 sequence 를 만들고, 직접 환자를 모집·등록했다고 하자. 그가 다음 환자가 어느 군에 배정될지 알면, “이 환자는 약효가 있을 것 같으니 새 약 군에” 라는 무의식적 선택이 발생할 수 있다. 결과는 마치 무작위 배정인 것처럼 보이지만 실제로는 PI 의 선호가 반영된 비무작위 배정.

비유: 콘서트 추첨에서 “추첨 프로그램 만든 사람” 이 동시에 “당첨자에게 좌석 배정” 을 하면, 친구에게 좋은 좌석 줄 가능성이 있다. 추첨 시스템 운영의 분리가 신뢰의 기본.

7 생성과 구현의 분리 — CONSORT 보고 항목

CONSORT 2010 (Schulz, Altman, Moher 2010) 의 무작위 배정 관련 보고 항목:

항목 보고 내용
8a 무작위 배정 순서 생성 방법
8b 무작위화 유형 (Simple, Block 등)
9 Allocation concealment 메커니즘
10 Sequence 생성·등록·배정의 책임자 (분리)

이 네 항목을 모두 명시한 보고서만이 방법론적으로 신뢰할 수 있는 RCT 다.

8 IT / 디지털 실험 매핑

RCT 의 무작위 배정과 IT A/B 테스트의 hashing 기반 배정은 정확히 동형이다.

역학 (RCT) IT (A/B Test) 비고
Generation method Hash function selection MD5, SHA, MurmurHash 등
Allocation ratio 1:1 Bucket split 50:50 비대칭 ratio 가능
Simple randomisation Random user_id mod 2 큰 N 에서 자연 균형
Block randomisation Stratified sampling per cohort 신규 vs 기존 사용자 분리
Stratified randomisation Pre-segmented experiment 지역·디바이스별 별도
Urn randomisation Adaptive bucket adjustment SRM detection 후
Allocation concealment Hash + secret salt 외부에서 예측 불가능
Generation/implementation 분리 Assignment service 와 측정 서비스 분리 데이터 누수 방지
CONSORT Item 10 Experiment metadata in platform 누가 정의·운영했는가

왜 동형인가?: 두 영역 모두 (1) 처치 배정의 예측 불가능성, (2) 균형, (3) 생성·구현 분리 의 동일 원칙을 따른다. 단, IT 는 자동화 덕분에 반복적 검증 이 매우 쉽다 (A/A test 로 platform 검증).

9 코드 예시 — 7 가지 방법의 시뮬레이션 비교

import numpy as np

np.random.seed(42)
N = 20   # 작은 표본 — imbalance 비교 위해

# 1. Simple Randomisation
simple = np.random.choice([0, 1], size=N)
print(f"Simple:        {simple}, balance={sum(simple)}:{N-sum(simple)}")

# 2. Random Allocation Rule (단일 큰 block)
ratio_block = np.array([0]*(N//2) + [1]*(N//2))
np.random.shuffle(ratio_block)
print(f"RandomAllocRule: {ratio_block}, balance={sum(ratio_block)}:{N-sum(ratio_block)}")

# 3. Block Randomisation (block size 4)
block_size = 4
blocks = []
for _ in range(N // block_size):
    block = np.array([0]*(block_size//2) + [1]*(block_size//2))
    np.random.shuffle(block)
    blocks.extend(block)
block_seq = np.array(blocks)
print(f"Block (size 4):  {block_seq}, balance={sum(block_seq)}:{N-sum(block_seq)}")

# 4. Urn Randomisation UD(α=2, β=1)
def urn_assignment(N, alpha=2, beta=1):
    blue, green = alpha, alpha   # 두 군 초기 ball 수
    seq = []
    for _ in range(N):
        p_blue = blue / (blue + green)
        if np.random.random() < p_blue:
            seq.append(0)   # blue → A
            green += beta   # 반대 색 ball 추가
        else:
            seq.append(1)   # green → B
            blue += beta
    return np.array(seq)

urn = urn_assignment(N)
print(f"Urn UD(2,1):     {urn}, balance={sum(urn)}:{N-sum(urn)}")

# 5. Imbalance 분포 시뮬레이션 (10000 회 반복)
print("\n[10000 회 시뮬레이션 — group A 비율 분포]")
n_sim = 10000
methods = {
    "Simple":          lambda: np.random.choice([0,1], size=20),
    "RandomAllocRule": lambda: np.random.permutation([0]*10 + [1]*10),
    "Block(4)":        lambda: np.concatenate([np.random.permutation([0,0,1,1]) for _ in range(5)]),
    "Urn(2,1)":        lambda: urn_assignment(20),
}

for name, gen in methods.items():
    imbalances = []
    for _ in range(n_sim):
        seq = gen()
        n_a = sum(seq)
        imbalance = abs(n_a - 10) / 10   # 50:50 에서 벗어난 비율
        imbalances.append(imbalance)
    p_extreme = np.mean(np.array(imbalances) >= 0.30)   # 30% 이상 imbalance 확률
    print(f"{name:>20}: P(imbalance ≥ 30%) = {p_extreme:.3f}")

이 코드는 (1) 네 가지 무작위화 방법의 단일 sequence 비교, (2) 10000 회 반복 시뮬레이션으로 imbalance 빈도 비교 를 보여준다.

결과 해석: - Simple Randomisation 에서는 30% 이상 imbalance 가 약 5~10% 의 확률로 발생 - Block (4) 에서는 정확히 0% — 매 4 명마다 강제 균형 - Urn 은 그 사이 — 균형이 어느 정도 유지되지만 완전히 결정적이지 않음

이 trade-off 가 32-6 글의 핵심 내용이다.

10 결론 — Ch.12 의 한 줄 요약

무작위 배정 순서 생성은 RCT 의 가장 기본이지만, 가장 잘못 이해되는 부분이다.

핵심은 다음 세 가지 행동이다.

  1. 체계적 (systematic) 방법은 무작위가 아니다 — date·case number·alternation 등 모두 quasirandom
  2. Simple → Block → Urn → Stratified 의 위계 를 시험 특성 (sample size·맹검 여부) 에 따라 선택
  3. Generation 과 Implementation 의 분리 — sequence 생성자와 모집·배정자가 다르고, sequence 가 사전 잠금 되어야 함

이 세 행동이 정착되어야 비로소 무작위화의 세 이점 (편향 제거·맹검 가능·확률 이론) 이 실현된다.

후속 글에서:

  • C-SCH12-1 (32-5) — Fisher 1920s 농업 + Bradford Hill 1948 streptomycin 의 역사적 맥락, 무작위화 3 이점의 깊이, quasirandom 의 함정 깊이
  • C-SCH12-2 (32-6) — 7 가지 방법의 비교 (Simple, Random Allocation Rule, Blocking, Biased Coin, Urn, Replacement, Stratified) + 시험 특성에 따른 권장 매트릭스

11 관련 주제

선행 지식

Phase C 후속 글

다른 카테고리 연결

12 참고문헌

  • Schulz, K. F. & Grimes, D. A. (2019). Essential Concepts in Clinical Research (2nd ed.), Ch.12. Elsevier.
  • Hill, A. B. (1952). The clinical trial. N. Engl. J. Med. 247, 113-119.
  • Hill, A. B. (1954). The clinical trial. (인용된 명언 출처)
  • Fisher, R. A. (1966). The Design of Experiments. Oliver & Boyd.
  • Medical Research Council. (1948). Streptomycin treatment of pulmonary tuberculosis. BMJ 2, 769-782.
  • Schulz, K. F., Chalmers, I., Grimes, D. A., Altman, D. G. (1994). Assessing the quality of randomization from reports of controlled trials published in obstetrics and gynecology journals. JAMA 272, 125-128.
  • Schulz, K. F., Altman, D. G., Moher, D., CONSORT Group. (2010). CONSORT 2010 statement: updated guidelines for reporting parallel group randomised trials. BMJ 340, c332.
  • Lachin, J. M. (1988). Properties of simple randomization in clinical trials. Control. Clin. Trials 9, 312-326.

Subscribe

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