1 도입 — 관습의 임의성
표본 크기 산정의 표준 관습은 \(\alpha = 0.05\), power = \(0.80\). 그러나 이 두 숫자는 의학적·통계적 근거가 없다. Fisher 의 1925 임의 관습이 100 년 동안 살아남은 결과다.
이 글은 (a) 4 요소의 자세한 분석, (b) 관습의 한계, (c) 효과 크기 추정의 함정을 정리한다.
2 \(\alpha\) — Type I Error
2.1 정의
처치가 실제로 같은데 다르다고 잘못 결론할 확률. 거짓 양성.
\[ \alpha = \Pr(\text{기각} \mid H_0 \text{ 참}) \]
2.2 0.05 의 임의성
A-MAX2-2 에서 다뤘듯이 0.05 는 Fisher 의 편의 관습. 의학적·생물학적 근거는 없다.
다른 가능한 값:
| \(\alpha\) | 시나리오 |
|---|---|
| 0.01 | 신약 안전성, false positive 비용 큼 |
| 0.05 | 표준 |
| 0.10 | 탐색적 연구 |
| 0.001 | 다중 비교 부분, GWAS |
2.3 한 측 vs 양측
Schulz: 한 측 검정의 표본 절감은 evidence 의 standard 를 낮추는 것. 권장: 양측 \(\alpha = 0.05\) 를 표준으로.
3 Power (\(1 - \beta\))
3.1 정의
처치가 실제로 다른데 (가정된 효과 크기로) 그 차이를 검출 할 확률. 거짓 음성을 피할 확률.
\[ 1 - \beta = \Pr(\text{기각} \mid H_1 \text{ 참, 효과 크기 } \delta) \]
3.2 0.80 의 관습
Cohen (1988) 이 작업적 합의 로 제시한 값. 4:1 비대칭 — false positive 가 false negative 보다 4 배 더 비싼 비용으로 간주.
3.3 분야별 관습
| 분야 | 관습 power |
|---|---|
| 임상시험 (Phase III) | 0.80 또는 0.90 |
| 학술 심리학 | 0.80 |
| 안전 우선 (Phase II) | 0.90 ~ 0.99 |
| 탐색적 연구 | 0.50 ~ 0.70 |
4 Event Rate (\(p_C\)) — 베이스라인
대조군의 자연 사건율. 추정 출처:
- 이전 연구의 메타 분석 — 가장 신뢰
- Pilot study — 작은 사전 실험
- 의료 기록 데이터 — 비뚤어진 표본 위험
- 전문가 추정 — 가장 부정확
4.1 Sensitivity Analysis
\(p_C\) 추정이 부정확할 수 있으므로, 다양한 값에 대해 \(n\) 을 계산해 민감도 평가.
가정 p_C = 0.10 → n = 962
가정 p_C = 0.08 → n = 1,200 (25 % 더 많이)
가정 p_C = 0.12 → n = 800 (17 % 적게)
5 Effect Size — 가장 어려운 입력
5.1 정의
검출하고 싶은 최소 임상 의미 차이 (MCID) 또는 최소 검출 가능 효과 (MDE).
5.2 추정의 어려움
- 생물학적 메커니즘 에서 도출 (이론적이지만 부정확)
- 이전 연구 의 효과 크기 (publication bias 위험)
- Pilot study 효과 (작은 표본의 부정확성)
- 전문가 합의 (주관적)
5.3 Schulz 의 비판
“Effect size 추정은 주관적 임상 판단 에 의존. 따라서 sample size 산정도 부정확. trial 을 부정확한 산정에 기반해 비윤리적이라 낙인찍는 것 은 부당.”
A/B 테스트에서 얼마나 작은 효과까지 검출 할 것인가? 두 시각이 있다.
- 임상적·비즈니스적 관점: 0.5 % lift 가 의미 있는지 결정. ROI 계산이 좌우.
- 통계적 관점: 검출 가능한 최소 효과 가 무엇인지. 표본 크기에 의해 결정.
이상적 절차: 비즈니스가 MCID 를 정의 → 그것을 검출할 \(n\) 산정 → 트래픽 확보.
현실: 트래픽 제한 → 검출 가능한 효과만 산정 → 그 효과가 비즈니스 의미가 있는지 별도 평가.
후자가 역방향 이지만 실용적이다. 트래픽이 부족하면 기간 확대 또는 변형 줄이기 를 고려.
6 4 요소의 트레이드오프 — 표
같은 \(n\) 을 유지하면서 4 요소 사이의 트레이드오프:
| 변경 | \(n\) 영향 |
|---|---|
| \(\alpha\) 0.05 → 0.01 | \(n\) 약 50 % 증가 |
| Power 0.80 → 0.90 | \(n\) 약 33 % 증가 |
| Power 0.80 → 0.99 | \(n\) 약 150 % 증가 |
| Effect 절반 (\(\Delta/2\)) | \(n\) 약 4 배 |
| Effect 두 배 (\(2\Delta\)) | \(n\) 약 1/4 |
효과 크기가 제곱 영향. 따라서 효과 크기 가정의 부정확성이 가장 위험.
7 시뮬레이션 기반 산정
복잡한 자료 (cluster randomization, time-to-event, 비표준 분포) 에서는 공식 대신 시뮬레이션 으로 산정.
7.1 절차
- 가정된 모수 (효과 크기, 분산, 클러스터 구조) 로 가상 자료 생성
- 검정 절차 적용 → p 값 계산
- 1, 2 단계를 1000 회 반복 → 검정력 = 유의 비율
- \(n\) 을 변경하며 검정력 0.80 이 되는 값 탐색
7.2 장점
- 어떤 검정도 적용 가능
- 가정의 명시화 — 시뮬레이션 코드가 가정을 드러냄
- 이상치, 결측, 클러스터링 등 현실적 시나리오 반영
8 비균형 배정 (Unequal Allocation)
표준은 1:1 배정. 그러나 다른 비율도 가능:
| 비율 | 사용 시점 | 검정력 영향 |
|---|---|---|
| 1:1 | 표준, 최대 검정력 | 100 % (기준) |
| 2:1 | 처치군 정보 더 필요 | 약 89 % |
| 3:1 | 부작용 모니터링 | 약 75 % |
| 1:2 | 위약 정보 더 필요 | 약 89 % |
비대칭 비율은 일부 검정력 손실 의 대가로 처치군 자료 더 확보. 안전성 평가에 사용.
9 코드 예시 — pwr 와 statsmodels
import numpy as np
from scipy.stats import norm
# 단순 공식 (이진, 2 비율 비교)
def sample_size_two_proportions(p1, p2, alpha=0.05, power=0.80, two_sided=True):
"""두 비율 비교의 표본 크기 (단순 근사)"""
z_alpha = norm.ppf(1 - alpha/2 if two_sided else 1 - alpha)
z_beta = norm.ppf(power)
p_bar = (p1 + p2) / 2
n = ((z_alpha * np.sqrt(2 * p_bar * (1 - p_bar)) +
z_beta * np.sqrt(p1*(1-p1) + p2*(1-p2)))**2) / (p1 - p2)**2
return int(np.ceil(n))
# 사례 — Schulz 예시
n = sample_size_two_proportions(p1=0.06, p2=0.10, alpha=0.05, power=0.90)
print(f"단순 근사: 그룹당 n = {n}") # 약 962
# 다양한 시나리오
print("\n시나리오별 표본 크기 ($p_C = 0.10$, power = 0.80, 양측):")
for r in [0.50, 0.60, 0.70, 0.80, 0.90]:
p_t = 0.10 * r
n = sample_size_two_proportions(p1=p_t, p2=0.10, alpha=0.05, power=0.80)
print(f" R = {r:.2f} (p_T = {p_t:.3f}): n = {n}")
# Sensitivity to alpha and power
print("\n$p_C = 0.10$, $p_T = 0.06$ — alpha/power 변화:")
for a in [0.01, 0.05, 0.10]:
for p in [0.50, 0.80, 0.90, 0.99]:
n = sample_size_two_proportions(0.06, 0.10, alpha=a, power=p)
print(f" α = {a}, power = {p}: n = {n}")
# 시뮬레이션 기반 (비균형 배정 예시)
def simulate_power(p1, p2, n1, n2, alpha=0.05, n_sim=2000):
"""시뮬레이션 기반 검정력"""
from scipy.stats import chi2_contingency
rejected = 0
for _ in range(n_sim):
x1 = np.random.binomial(n1, p1)
x2 = np.random.binomial(n2, p2)
table = [[x1, n1-x1], [x2, n2-x2]]
try:
chi2, p, _, _ = chi2_contingency(table)
if p < alpha:
rejected += 1
except:
pass
return rejected / n_sim
power_11 = simulate_power(0.06, 0.10, 700, 700)
power_21 = simulate_power(0.06, 0.10, 933, 467) # 2:1 (총 n 동일)
print(f"\n검정력 비교 (총 n = 1400):")
print(f" 1:1 배정 (700:700): power ≈ {power_11:.3f}")
print(f" 2:1 배정 (933:467): power ≈ {power_21:.3f}")10 A/B 테스트 표본 크기 계산기
여러 도구가 A/B 테스트 표본 크기를 자동 계산:
| 도구 | 특징 |
|---|---|
| Optimizely Sample Size Calculator | 단일 변형, 단일 메트릭 |
| Evan Miller’s Calculator | 학술적 표준 공식 |
| G*Power | 다양한 검정 종류 |
R pwr 패키지 |
공식 + 시뮬레이션 |
Python statsmodels.stats.power |
검정력 솔버 |
이 도구들이 4 요소 입력 → \(n\) 출력 의 표준 형식. 그러나 가정의 정확성 은 사용자 책임.
11 보고 형식 — Schulz 권고
표본 크기 산정 (사전 등록):
대조군 사건율 (가정): p_C = 10 %
최소 검출 효과: 절대 4 % 감소 (p_T = 6 %, RR = 0.6)
α = 0.05 (양측)
Power = 0.90
배정 비율: 1:1
계산된 표본 크기: 그룹당 962 명, 총 1924 명
Drop-out 가정 (10 %): 실제 모집 약 2138 명
가정 출처:
p_C: Smith et al. (2018) 메타 분석
Effect size: 임상 의미 차이 (전문가 합의 + Pilot study)
Sensitivity analysis:
p_C = 8 %: n = 1200/group
p_C = 12 %: n = 800/group
12 비대칭 비용의 α/β 결정
12.1 Decision Theoretic Framework
각 오류의 비용 을 명시적으로 평가:
\[ \text{Total Loss} = c_I \cdot \alpha \cdot \pi_0 + c_{II} \cdot \beta \cdot \pi_1 \]
여기서:
- \(c_I\): Type I error 비용
- \(c_{II}\): Type II error 비용
- \(\pi_0, \pi_1\): \(H_0, H_1\) 의 사전 확률
12.2 사례 — 신약 vs 가벼운 보충제
| 시나리오 | \(c_I\) | \(c_{II}\) | 권장 α | 권장 power |
|---|---|---|---|---|
| 안전한 약 (가벼운 부작용) | 낮음 | 높음 | 0.10 | 0.90 |
| 표준 신약 | 중간 | 중간 | 0.05 | 0.80 |
| 위험한 약 (큰 부작용) | 높음 | 낮음 | 0.01 | 0.70 |
| FDA 승인 (정책적) | 매우 높음 | 중간 | 0.025 | 0.80 |
이 비용 기반 결정 이 비대칭 α/β 의 정당성. 그러나 정량화 어려워 관습 (0.05 / 0.80) 이 자주 사용.
12.3 A/B 테스트의 비용 분석
비즈니스 시나리오:
신규 디자인 변경의 효과 검증
c_I (false positive) = 잘못된 디자인 채택 → 매출 손실
- 디자인 개발 비용
- 사용자 혼란 (UX 일관성 깨짐)
- 롤백 시점까지의 손실
→ 약 $100k
c_II (false negative) = 효과 있는 디자인 거부 → 기회 비용
- 잠재 매출 향상 놓침
- 시간 지연
→ 약 $300k (예상 lift × 시간)
c_II / c_I = 3 → β 가 α 보다 3 배 더 비쌈
→ α = 0.05, β = 0.05 (power = 0.95) 권장
이 분석이 비대칭 power 의 정당화. 비즈니스 맥락에서 높은 power 우선.
13 Sample Size 의 베이즈 시각
13.1 Average Sample Size (Bayesian)
빈도주의의 최악 시나리오 power 와 달리, 베이즈는 기대 정밀도.
import numpy as np
from scipy.stats import beta
def bayesian_avg_sample_size(prior_alpha, prior_beta, target_ci_width, n_grid=range(50, 5000, 50)):
"""기대 CI 폭 ≤ target 을 위한 표본 크기"""
for n in n_grid:
# 사후 분포의 평균 분산
post_var = (prior_alpha * prior_beta) / ((prior_alpha + prior_beta)**2 * (prior_alpha + prior_beta + 1))
# 사후의 baseline → posterior 정밀도가 n 에 따라 향상
# 단순화 — 실제 계산은 시뮬레이션
pass
return None # 단순 예시베이즈 표본 크기의 수학적 정당성 이 다양 (Adcock 1997, Spiegelhalter 2004).
14 표본 크기의 분야별 표준
| 분야 | 일반 표본 크기 | 비고 |
|---|---|---|
| Phase III 임상 | 1000 ~ 50000 | 사망률 등 희귀 outcome |
| Phase II 임상 | 100 ~ 500 | 효능 추정 |
| 심리학 학술 | 50 ~ 200 | 행동 효과 |
| 교육학 | 100 ~ 1000 | 학교 cluster |
| A/B 테스트 (작은 회사) | 1000 ~ 10000 | 큰 효과만 |
| A/B 테스트 (대형 IT) | 10^5 ~ 10^9 | 작은 효과 검출 |
| GWAS | 10^4 ~ 10^6 | 작은 SNP 효과 |
| 생태학 | 30 ~ 100 | 자연 자료의 한계 |
각 분야의 전형적 표본 이 효과 크기 + 베이스라인 + 자료 비용 의 함수.
15 4 요소의 통합 의사결정
1. 연구 가설 명확화
→ 어떤 효과를 검출할 것인가?
2. 임상·비즈니스 상의 의미 결정
→ MCID 또는 MDE 정량화
3. 분야 관습 + 비용 평가
→ α 결정 (0.01, 0.05, 0.10)
→ power 결정 (0.80, 0.90, 0.95)
4. 자료 변동성 추정
→ 이전 연구·pilot·문헌
5. 표본 크기 산정
→ 4 요소 + 적절한 공식
6. Sensitivity analysis
→ 각 가정의 영향 평가
7. 실현 가능성 점검
→ 충분한 표본 가능?
No → MCID 상향 또는 기간 확대
8. 사전 등록
→ 모든 가정 + 절차 명시
이 8 단계가 정직한 표본 크기 결정의 표준 절차.
16 후속 — Sample Size Samba
다음 글 A-SCH11-2 는 Sample Size Samba 의 함정과 한 측 비판, Chalmers 논쟁의 유산을 자세히 다룬다.
17 관련 주제
선행 지식
후속 주제 (Phase A)
- A-SCH11-2 Sample Size Samba + 비판
- A-WOO8-* (역학 표본 크기)
다른 카테고리 연결