이 글은 Schulz Ch.14 Allocation Concealment in Randomised Trials 시리즈 (4 편) 의 첫 글이다. Ch.12 가 어떻게 무작위 sequence 를 생성하는가 를, Ch.13 이 비맹검 시험에서 추측을 어떻게 막는가 를 다뤘다면, Ch.14 는 그 sequence 가 누구에게 어떻게 숨겨지는가 를 다룬다.
1 진입 직관 — 왜 Concealment 가 sequence 보다 더 중요 한가
Ch.14 의 첫 인용문이 이 챕터의 본질을 한 줄로 요약한다.
“MRC 의 streptomycin 시험이 landmark 인 이유는 난수표를 사용해 sequence 를 생성했기 때문이 아니다. 환자를 등록하는 인력에게 sequence 를 숨기기 위해 취한 명확한 예방조치 때문이다.” (Chalmers 2001, Schulz 2019, Ch.14 인용)
충격적 함의: 무작위 sequence 자체보다 그 sequence 가 누구에게 숨겨지는가 가 RCT 의 신뢰성을 결정한다. Ch.13 의 16% 추측 시도, Schulz 외 1995 의 41% 효과 과대 추정 — 모두 concealment 가 부재하면 다시 활성화된다.
비유: 카드 게임에서 (1) 카드를 셔플 잘 했고, (2) 아무도 카드를 못 보게 했다고 하자. 만약 (3) 셔플한 카드 패가 게시판에 붙어 있다면? 셔플의 무결성은 완전히 무의미해진다. RCT 의 sequence generation 과 concealment 의 관계가 정확히 이렇다.
Schulz Ch.14 의 한 줄 메시지:
무작위 sequence 의 적절성은 concealment 의 적절성에 의존한다. 후자 없이 전자만 갖춰도 RCT 는 무너진다.
2 정의: Allocation Concealment
처치 배정 sequence 를 환자가 군에 배정되는 시점까지 임상의·환자·모집 인력으로부터 숨기는 기법.
- 역학: Allocation Concealment / Concealment of Allocation Schedule
- IT: Hidden Assignment / Encrypted Bucket Mapping
- 두 단계 분리:
- Sequence Generation (Ch.12) — 어떻게 무작위 sequence 를 만드는가
- Allocation Concealment (Ch.14) — 그 sequence 를 누구에게 어떻게 숨기는가
Schulz 의 핵심 분리 원칙: “Concealment 는 sequence 의 구현 에 관한 것이지, 생성 에 관한 것이 아니다.”
흔한 오해 1 — Concealment ≠ Coin Tossing: 일부는 “동전 던지기·난수표 사용” 을 concealment 로 혼동한다. 이는 sequence generation 의 도구다. Concealment 는 생성된 sequence 가 모집 단계에서 새지 않도록 하는 별도의 절차.
흔한 오해 2 — Concealment ≠ Blinding: Blinding 은 배정 후 환자·평가자 등이 처치를 모르게 하는 것. Concealment 는 배정 전·시점 에 모집 인력이 다음 배정을 모르게 하는 것. 두 단계가 시간적으로 다름.
| Concealment | Blinding | |
|---|---|---|
| 시점 | 배정 전·시점 | 배정 후 |
| 대상 | 모집 인력 | 환자·평가자·임상의 |
| 목표 | Selection bias 차단 | Performance / Detection bias 차단 |
| 챕터 | Ch.14 | Ch.16, 17 |
3 부적절 Concealment 의 정량적 영향
Schulz 가 인용하는 핵심 실증 (Schulz 외 1995, Schulz 2002, Savovic 외 2012):
부적절 또는 불명확 concealment 시험은 적절 concealment 시험 대비 효과를 평균 40% 과대 추정.
추가 발견:
- 방향성: 평균은 과대 추정이지만, 과소 추정도 가능 (effect 의 양방향 편향)
- 이질성: 부적절 concealment 시험은 결과가 더 분산 (큰 변동) — 좋은 시험 추정치 위·아래로 폭넓게 변동
- 함의: 단일 부적절 RCT 가 의학 결정을 상당히 잘못된 방향 으로 이끌 수 있음
반사실: 만약 한 신약의 진짜 효과가 사망률 20% 감소라면, 부적절 concealment RCT 에서 28% 감소로 측정될 수 있다. 의사는 이를 진짜 효과로 받아들여 처방. 그러나 임상 실제에서는 20% 만 효과 → 처방 결정의 일부가 잘못된 근거.
so what: Concealment 의 적절성은 통계 정밀성 의 문제가 아니라 임상 진실 의 문제. 한 시험의 결론이 임상 가이드라인을 바꿀 수 있는 만큼, concealment 부재의 비용이 실제 환자에게 직접 돌아온다.
4 임상 인력의 Deciphering — Schulz 의 충격적 사례
Schulz 1995 가 epidemiology workshop 에서 익명으로 수집한 deciphering 사례들 (Schulz 2019, Ch.14 인용).
4.1 단순 사례
| 방법 | 메커니즘 |
|---|---|
| 게시판의 sequence 보기 | 가장 단순 — 보고서에 등장 |
| 반투명 봉투를 빛에 비추기 | 강한 형광등에 봉투 비치면 내용 보임 |
| 봉투 무게 차이 감지 | 약물군 봉투가 더 무거운 경우 |
| 번호 없는 봉투를 원하는 처치 나올 때까지 열기 | 가장 직접적 sabotage |
4.2 정교한 사례
| 방법 | 메커니즘 | 비고 |
|---|---|---|
| 봉투를 방사선과 hot light 에 비추기 | 매우 강한 빛으로 불투명 봉투도 투과 | 일부 의사가 실제 사용 |
| 중앙 무작위 전화에서 여러 환자 한꺼번에 요청 | 전화로 “다음 5 명의 sequence 알려주세요” | 전화 인력이 이를 거부 못한 경우 |
| 약물 용기 라벨 외관 비교 | 라벨의 약간의 색·인쇄 차이 감지 | 매우 미묘한 단서도 활용 |
| PI 의 밤중 사무실 잠입 | Allocation list 파일 직접 열람 | 가장 극단적 사례 |
충격적 일화 (Schulz 1995): 한 인턴 의사가 새 환자 도착 시 attending physician 이 밤에 PI 의 사무실에서 allocation list 파일을 뒤지는 모습 을 보고 “이 의사는 정말 영리하다” 고 생각. 시험 무결성을 훼손하는 행위 라는 인식 부재.
4.3 무엇을 시사하는가
“임상의들은 이론적으로 무작위 시험의 필요성을 이해한다. 그러나 시험 진행 중 에는 임상적 본능 이 우선한다. 이 본능 — 특정 환자에게 특정 처치를 주려는 충동 — 이 deciphering 을 만든다.” (Schulz 2019, Ch.14)
반사실: 이런 행위가 부정행위 (cheating) 인가? 다수는 아니다. 과학적 인식 부족 + 임상적 호기심 + 지적 도전 욕구 의 결합. Oscar Wilde 인용: “유혹을 없애는 유일한 방법은 그것에 굴복하는 것이다.” 시험 디자이너의 책임은 유혹을 처음부터 불가능하게 만드는 것.
5 4 가지 적절 Concealment 방법 — Panel 14.2 의 위계
Schulz 가 adequate 으로 인정하는 방법은 4 가지다 (Schulz 2019, Ch.14, Panel 14.2). 각 방법에 minimum criteria 와 expanded criteria 가 있다.
| 방법 | Minimum | Expanded (더 강한 보증) |
|---|---|---|
| SNOSE (Sequentially Numbered, Opaque, Sealed Envelopes) | 순차 번호, 불투명, 봉인 | 봉투 개봉 전 환자명 작성, carbon paper, 알루미늄 호일 |
| Pharmacy Controlled | 약사가 sequence 관리 | 약사가 무작위·concealment 절차를 훈련받음 |
| Sequentially Numbered Containers | 순차 번호 약물 용기 | Tamper-proof, 동일 무게·외관, audit trail |
| Central Randomisation | 전화·웹 중앙 시스템 | 중앙 사무실 인력 훈련, 등록 후 배정만 반환 |
5.1 4 방법의 비교
| 측면 | SNOSE | Pharmacy | Containers | Central |
|---|---|---|---|---|
| 비용 | 저 | 중 | 중 | 고 |
| 신뢰도 | 중 | 고 | 고 | 최고 |
| 다기관 적합성 | 낮음 | 중 | 중 | 높음 |
| 자동화 가능성 | 낮음 | 중 | 중 | 높음 |
| 흔한 위반 | 봉투 빛 비치기 | 약사 미훈련 | 라벨 외관 차이 | 사기 전화 요청 |
Schulz 의 권장: Central randomisation (특히 web-based) 이 가장 안전. SNOSE 는 인간 ingenuity 에 가장 취약. Pharmacy controlled 는 약사의 훈련 수준에 의존.
반사실 — Pharmacy 위반 사례: Schulz 가 인용한 미국 의대 약국. 시험 중 주말에 한 약물이 떨어져 나머지 환자 모두에게 다른 약 강제 배정. “모집 지연 방지” 가 명분이지만 무작위화 자체 무력화. 약사가 무작위화 원칙을 몰랐기 때문.
5.2 Minimum vs Expanded — 왜 Expanded 가 중요한가
Schulz 의 핵심: “Minimum criteria 만 충족하면 published 논문에서 adequate 으로 분류된다. 그러나 실제 deciphering 위험은 expanded criteria 의 추가 안전장치로만 차단된다.”
예: SNOSE 의 minimum 은 순차 번호·불투명·봉인. Expanded 는 추가로:
- 봉투 개봉 전 환자명 작성 — audit trail
- Carbon paper — sequence 정보 자동 기록
- 알루미늄 호일 — 강한 빛 투과 차단
이런 expanded criteria 를 모두 적용한 시험만 진정한 adequate.
6 Baseline Comparison 의 함정
Concealment 가 잘 됐는지 어떻게 검증 하나? 흔한 답은 “baseline characteristics 비교” 다. 그러나 Schulz 는 이 관행에 중요한 경고 를 한다.
6.1 무엇이 적절한가
[O] Baseline 분포 표 보고 (연령·성별·중증도 등) [O] 평균·표준편차 (또는 중앙값·IQR) [O] 각 군의 percent 분포
6.2 무엇이 부적절한가
[X] Baseline 의 hypothesis test (p-value 보고)
Altman 의 명언: “Such a procedure is clearly absurd.” (Altman 1985, Schulz 2019, Ch.14 인용)
6.3 왜 hypothesis test 가 부적절한가
무작위 배정 RCT 에서 두 군의 baseline 차이는 정의상 우연. p-value 는 “우연일 확률” 을 묻는데, 이미 우연임을 알고 있는 데이터에 묻는 것은 무의미.
수식 직관: 무작위 배정 하에서 baseline 변수 \(X\) 의 두 군 평균 차이의 분포는 알려져 있다 (random variability). \(p < 0.05\) 가 나와도 그것은 Type I 오류 5% 의 정상 발생 — bias 의 증거가 아님.
6.4 더 심각한 부작용
Schulz 의 경고: Hypothesis test 사용은 baseline imbalance 의 보고를 억제 시킨다. 연구자가 “p > 0.05 면 imbalance 가 없다” 는 잘못된 인식으로 유의한 차이는 보고하지만 비유의는 무시 또는 유의한 차이를 보고하지 않음 (publication 신뢰성 우려).
반사실: Schulz 외 (1994) 분석 — baseline hypothesis test 사용 시험에서 유의 결과의 비율이 우연 기댓값 (5%) 보다 적음. 이는 일부 연구자가 유의한 baseline 차이를 의도적으로 보고하지 않음 을 시사. 정보 은폐는 reviewer 의 비판적 평가 능력을 무력화.
6.5 적절한 대안
Schulz 의 권장: Baseline 표는 기술 통계 (descriptive statistics) 만 제시. Hypothesis test 없음. Reviewer 는 prognostic 변수의 임상적 중요성 과 imbalance 의 크기 로 판단. 통계적 유의 여부가 아님.
7 Concealment 보고의 충격적 실태
Schulz 외 (2019, Ch.14) 가 인용한 RCT 보고서 분석:
| 분야·시기 | Concealment 보고 누락률 |
|---|---|
| Dermatology (~2000 이전) | 93% |
| Rheumatoid arthritis | 89% |
| Obstetrics & gynaecology | 48% |
| General medical journals | 45% |
PubMed 무작위 표본 분석 (Hopewell 외 2010): 약 75% 의 RCT 보고가 concealment 를 기술하지 않음.
충격: 1/4 의 RCT 만 concealment 를 보고한다. 나머지 3/4 의 시험은 무작위 배정의 적절성을 독자가 평가할 수 없는 상태. 이는 단지 보고 결함이 아니라 근거 의학의 신뢰 기반 을 흔드는 문제.
CONSORT 의 효과: CONSORT (Ch.22) 도입 후 보고가 적절히 개선 되었지만 충분하지 않음. 여전히 약 50% 이상의 RCT 가 concealment 를 명시 안 함. 학술지·reviewer 의 더 엄격한 적용이 필요.
8 IT / 디지털 실험 매핑
| 역학 (RCT) | IT (A/B Test / Marketing) |
|---|---|
| Concealment of sequence | Hidden bucket assignment |
| SNOSE (봉투) | Encrypted assignment file |
| Pharmacy controlled | Feature flag service (server-side) |
| Sequentially numbered containers | Pre-assigned bucket tokens |
| Central randomisation | Centralized assignment server (gRPC) |
| Hot light deciphering | DOM inspection / reverse engineering |
| 봉투 무게 차이 | Network traffic timing analysis |
| Baseline comparison | Pre-period comparability check |
| Hypothesis test on baseline | A/A test misuse |
IT 의 추가 위험: 사용자가 URL 파라미터·DOM 검사 등으로 본인 군을 추측. Server-side rendering + client 비밀 키 부재 가 IT 버전의 concealment.
9 챕터의 줄기 — 후속 글 안내
Ch.14 의 후속 깊이는 세 흐름으로 분해된다.
9.1 후속 글 1 — 은폐의 중요성과 해독 시도 (32-11)
- 40% 효과 과대 추정의 메커니즘 깊이
- Anonymous deciphering accounts 의 다양한 사례 분석
- 인간 본성에 대한 인식론적 통찰
9.2 후속 글 2 — 평가 기준과 사례 (32-12)
- Panel 14.1 의 실제 RCT concealment 보고 사례
- Panel 14.2 의 minimum vs expanded criteria 깊이
- 4 가지 방법의 비교와 각 위험 요인
9.3 후속 글 3 — 기저선 비교의 함정 (32-13)
- Baseline comparison 의 적절·부적절 관행
- Hypothesis test 사용의 부작용 — 보고 억제 메커니즘
- CONSORT 의 권장 baseline 표 형식
10 코드 예시 — Concealment 부적절 시 효과 추정 시뮬레이션
import numpy as np
from scipy import stats
np.random.seed(42)
def simulate_trial(n=200, true_effect=0.20, concealment="adequate"):
"""
n 명의 시험.
- Adequate concealment: 무작위 배정 그대로
- Inadequate concealment: 30% 의 환자가 deciphering 으로 *적합한 군* 에 재배정
"""
baseline_risk = np.random.uniform(0, 1, n)
# 잠재적 결과
Y_0 = (np.random.random(n) < baseline_risk).astype(int)
Y_1 = (np.random.random(n) < baseline_risk * (1 - true_effect)).astype(int)
# 무작위 배정
T = np.random.choice([0, 1], size=n)
if concealment == "inadequate":
# 30% 의 환자가 deciphering 으로 재배정
# (모집 인력이 다음 배정을 알고, 위험 낮은 환자를 새 약 군으로)
for i in range(n):
if np.random.random() < 0.3:
# Deciphering: 위험 낮으면 새 약, 높으면 표준
T[i] = 1 if baseline_risk[i] > np.median(baseline_risk) else 0
# 잠깐, 0=A=새 약 가정 → 위험 낮으면 0
T[i] = 0 if baseline_risk[i] < np.median(baseline_risk) else 1
Y_obs = np.where(T == 0, Y_1, Y_0)
mort_T = Y_obs[T == 0].mean()
mort_C = Y_obs[T == 1].mean()
return mort_C - mort_T
# 1000 회 시뮬레이션
n_sim = 1000
true_effect = 0.20
print("[Concealment 부적절 시 효과 과대 추정]")
print(f"진짜 효과 (ATE): ~{true_effect * 0.5:.1%}\n") # baseline 평균 0.5
results = {}
for concealment in ["adequate", "inadequate"]:
diffs = [simulate_trial(concealment=concealment) for _ in range(n_sim)]
results[concealment] = np.array(diffs)
print(f"{concealment.capitalize():>15}: 평균 추정 = {np.mean(diffs):.4f} ± {np.std(diffs):.4f}")
# 과대 추정 비율
overest = np.mean(results["inadequate"]) / np.mean(results["adequate"]) - 1
print(f"\n부적절 시 과대 추정: {overest:.1%}")
print("→ Schulz 외 (1995) 의 41% 발견과 정성적 일치")
# Baseline hypothesis test 부적절 시뮬레이션
print("\n[Baseline hypothesis test — Type I 오류율]")
n_sim2 = 1000
baseline_p_values = []
for _ in range(n_sim2):
n = 200
baseline = np.random.normal(0, 1, n) # 무작위 baseline
T = np.random.choice([0, 1], n)
_, p = stats.ttest_ind(baseline[T == 0], baseline[T == 1])
baseline_p_values.append(p)
p5 = np.mean(np.array(baseline_p_values) < 0.05)
print(f"P(p < 0.05) = {p5:.3f} (이론적 기댓값 0.05)")
print("→ 무작위 배정 하에서 baseline test 는 정확히 5% 에서 false positive")
print("→ 이를 'imbalance 증거' 로 해석하는 것은 정의상 잘못")이 코드는 (1) Concealment 부적절이 효과 추정을 체계적으로 과대 추정함, (2) Baseline hypothesis test 가 정의상 5% Type I 오류를 보임 — imbalance 의 증거가 아님 을 보여준다.
11 결론 — Ch.14 의 한 줄 요약
Concealment 없는 무작위 배정은 모래성이다.
핵심 행동 권고:
- Concealment 와 sequence generation 은 분리된 두 단계 — 둘 다 적절해야
- 40% 효과 과대 추정 은 concealment 부재의 정량적 비용
- Deciphering 은 부정이 아닌 인간 본성 — 시스템이 처음부터 차단해야
- 4 가지 적절 방법 (SNOSE, Pharmacy, Containers, Central) 중 expanded criteria 까지 적용
- Baseline 은 기술 통계만 — Hypothesis test 금지
후속 글:
- 32-11: 40% 과대 추정의 메커니즘 + Personal accounts deep dive
- 32-12: 4 가지 방법의 sample report + Panel 14.2 expanded criteria
- 32-13: Baseline 보고의 적절·부적절 관행
12 관련 주제
선행 지식
Phase C 후속 글
- 은폐의 중요성과 해독 시도 (placeholder)
- Concealment 평가 기준과 사례 (placeholder)
- 기저선 비교의 함정 (placeholder)
- SCH Ch.15 Exclusions and Losses 개관 (placeholder)
13 참고문헌
- Schulz, K. F. & Grimes, D. A. (2019). Essential Concepts in Clinical Research (2nd ed.), Ch.14. Elsevier.
- Schulz, K. F. (1995). Subverting randomization in controlled trials. JAMA 274, 1456-1458.
- Schulz, K. F., Chalmers, I., Hayes, R. J., Altman, D. G. (1995). Empirical evidence of bias. JAMA 273, 408-412.
- Chalmers, I. (2001). Comparing like with like: some historical milestones in the evolution of methods to create unbiased comparison groups. Int. J. Epidemiol. 30, 1156-1164.
- Savovic, J., Jones, H. E., Altman, D. G., et al. (2012). Influence of reported study design characteristics on intervention effect estimates. Ann. Intern. Med. 157, 429-438.
- Altman, D. (1985). Comparability of randomised groups. Statistician 34, 125-136.
- Hopewell, S., Dutton, S., Yu, L. M., Chan, A. W., Altman, D. G. (2010). The quality of reports of randomised trials in 2000 and 2006. BMJ 340, c723.
- Schulz, K. F., Altman, D. G., Moher, D. (2010). CONSORT 2010 statement. BMJ 340, c332.