1 도입 — 같은 효과, 다른 인상
Schulz & Grimes (2019, Ch.1) 은 measures of association (RR, OR, RD) 의 보고 함정을 강조한다. 같은 효과가 어떻게 보고되는가 에 따라 인상이 완전히 달라진다. 이 글은 그 함정과 p < 0.05 임계값의 의학적 근거 부재 비판을 정리한다.
2 RR vs RD — 베이스라인의 영향
| 지표 | 정의 | 단위 |
|---|---|---|
| Risk Difference (RD) | \(p_T - p_C\) | 절대 (확률 단위) |
| Relative Risk (RR) | \(p_T / p_C\) | 상대 (배수) |
| Odds Ratio (OR) | \(\frac{p_T/(1-p_T)}{p_C/(1-p_C)}\) | 상대 (odds 비) |
| Number Needed to Treat (NNT) | \(1 / |\text{RD}|\) | 인원 수 |
2.1 사례 1 — 흔한 사건
베이스라인 사건율 10 %, 처치 효과로 8 % 감소 (사건율 8 % 가 됨).
| 지표 | 값 | 해석 |
|---|---|---|
| RD | \(-0.02\) (2 % 감소) | 100 명 중 2 명 적게 발생 |
| RR | \(0.80\) (20 % 감소) | 위험이 20 % 줄어듦 |
| OR | \(0.78\) | RR 과 거의 같음 |
| NNT | 50 | 1 명 효과 위해 50 명 처치 |
2.2 사례 2 — 희귀 사건
베이스라인 0.1 %, 처치 효과로 0.08 % 가 됨.
| 지표 | 값 | 해석 |
|---|---|---|
| RD | \(-0.0002\) (0.02 % 감소) | 10000 명 중 2 명 적게 발생 |
| RR | \(0.80\) (20 % 감소) | 위험이 20 % 줄어듦 |
| OR | \(0.80\) | RR 과 같음 |
| NNT | 5000 | 1 명 효과 위해 5000 명 처치 |
2.3 비교
같은 RR (0.80, 즉 20 % 감소) 인데:
- 사례 1: NNT = 50, 임상적으로 큰 효과
- 사례 2: NNT = 5000, 임상적으로 작은 효과
뉴스: “신약이 사망 위험을 50 % 감소시킨다”
청중의 인상: 큰 효과
진짜 정보: - 베이스라인이 0.001 % (10 만 명에 1 명) 면, 50 % 감소는 0.0005 % 감소 (NNT = 200000). - 베이스라인이 30 % 면, 50 % 감소는 15 % 감소 (NNT = 7).
같은 RR 이라도 임상 임팩트가 1000 배 다르다. 따라서 RR 단독 보고는 오해를 부른다. RR + RD + NNT 를 함께 보고하는 것이 표준.
A/B 테스트의 Lift (= RR - 1) 도 마찬가지. 베이스라인 클릭률이 매우 낮으면 큰 lift 도 작은 절대 효과. 비즈니스 의사결정은 절대 차이 × 사용자 수 로 매출 임팩트를 환산.
3 OR vs RR — 언제 다른가
OR 과 RR 은 희귀 사건 (~5 % 이하) 에서 거의 같다. 그러나 흔한 사건 에서 달라진다.
| \(p_C\) | \(p_T\) | RR | OR |
|---|---|---|---|
| 0.05 | 0.04 | 0.80 | 0.79 |
| 0.10 | 0.08 | 0.80 | 0.78 |
| 0.30 | 0.24 | 0.80 | 0.74 |
| 0.50 | 0.40 | 0.80 | 0.67 |
희귀 사건에서 OR ≈ RR. 흔한 사건에서 OR 이 RR 보다 극단적.
3.1 왜 OR 을 사용하는가
장점:
- Case-control 연구 에서 RR 직접 추정 불가, OR 만 가능
- 로지스틱 회귀 의 회귀 계수가 OR 의 자연 로그
- baseline 무관 — RR 은 baseline 에 따라 의미 달라짐, OR 은 안정적
단점:
- 흔한 사건에서 해석이 직관과 다름 — 청중이 RR 처럼 해석하면 효과 과대 인식
- NNT 계산에 직접 사용 어려움
권장: 희귀 사건이나 case-control 은 OR, 흔한 사건이나 cohort 는 RR.
4 p < 0.05 의 의학적 근거 부재
Schulz 의 강력한 비판:
“0.05 임계값은 통계적·역학적·의학적 근거가 없는 임의 관습이다.” (Schulz & Grimes 2019, Ch.1)
4.1 0.05 의 역사적 출처
Fisher 가 1925 년 Statistical Methods for Research Workers 에서 도입. 당시 통계 표 작성의 편의를 위해 1/20 = 0.05, 1/100 = 0.01 등 둥근 숫자 를 채택. 의학적·생물학적 근거는 없음.
4.2 Cliff Effect 의 함정
\(p = 0.049\) vs \(p = 0.051\):
- 자료의 증거 강도 는 거의 동일
- 그러나 이분법적 결정은 반대 결과 도출
이 cliff effect 가 임상 의사결정에 비합리성을 만든다. 약간의 표본 차이로 결론이 뒤집힐 수 있다.
4.3 실제 임상 영향
가상 사례:
- 신약 A: \(p = 0.049\) → 승인, 시장 출시
- 신약 B: \(p = 0.051\) → 기각, 추가 연구 필요
자료의 차이가 작더라도 의사결정은 극단적 으로 나뉜다. 이는 임상적으로 비합리 하다.
5 ASA 2016 6 원칙과의 일관성
Schulz 의 비판은 ASA (American Statistical Association) 의 2016 공식 성명과 일치한다.
| ASA 6 원칙 | Schulz 의 강조 |
|---|---|
| 1. p 값은 양립 불가능성 측도 | 동일 |
| 2. p 값은 가설 참 확률 X | 동일 |
| 3. 0.05 임계값에만 의존 X | 동일 |
| 4. 완전한 보고 + 투명성 | 동일 |
| 5. 효과 크기·중요성 측정 X | 동일 |
| 6. p 값은 단독으로 증거 측정 X | 동일 |
두 권고가 수렴 한다는 점이 현대 통계 보고의 표준 을 보여 준다.
6 권장 보고 형식
Schulz 가 권장하는 형식:
처치 그룹 (n = 50): 25 명 사건 (50.0 %)
대조 그룹 (n = 50): 15 명 사건 (30.0 %)
Risk Difference: -20.0 %, 95 % CI [-37.5 %, -2.5 %]
Relative Risk: 0.60, 95 % CI [0.37, 0.97]
Odds Ratio: 0.43, 95 % CI [0.18, 1.01]
NNT: 5
Chi-square test: χ²(1) = 4.32, p = 0.038
이 형식이 효과 크기 + 신뢰 구간 + p 값 의 3 종 세트를 모두 포함한다. p 값은 마지막 에 있어 보조 정보임을 강조.
7 신뢰 구간 우선 보고
신뢰 구간은 p 값을 포함 한다. 95 % CI 가 0 (또는 RR=1) 을 포함하지 않으면 \(p < 0.05\) 와 동치.
그러나 CI 는 추가 정보 도 준다.
- 효과의 크기 (CI 의 중심)
- 추정의 정밀도 (CI 의 폭)
- 임상적 의미 (CI 가 임상적 임계값을 포함하는지)
예시:
- 결과 1: RR = 0.50, 95 % CI [0.45, 0.55] — 정밀, 큰 효과
- 결과 2: RR = 0.50, 95 % CI [0.10, 2.50] — 부정확, 효과 방향조차 불확실
두 결과 모두 점추정 RR = 0.50 이지만 결론이 완전히 다름.
CI 가 임상적 최소 의미 차이 (Minimum Clinically Important Difference, MCID) 를 포함하는지도 중요하다. 통계적으로 유의해도 효과가 임상적 임계값보다 작으면 무의미.
8 A/B 테스트 사례
A/B 테스트의 비즈니스 의사결정 도 같은 원리.
8.1 사례 — 매출 향상 A/B 테스트
변형 A (대조): 평균 매출 $1,000, n = 5,000
변형 B (신규): 평균 매출 $1,015, n = 5,000
Risk Difference: +$15 (1.5 % lift)
95 % CI: [+$5, +$25]
p = 0.003 (매우 유의)
해석:
- 통계적: 효과 명확 (p < 0.01)
- 비즈니스: 1.5 % 매출 향상은 사용자 1000만 명에서 연 1500만 달러 추가 매출
- CI: [+$5, +$25] → 효과의 보수적 추정도 $5 (양수) → 채택 결정 안전
이 경우 효과 크기 + CI + p 값 모두 의미 있다.
8.2 반대 사례
변형 A: 평균 매출 $1,000, n = 200
변형 B: 평균 매출 $1,050, n = 200
Risk Difference: +$50 (5 % lift)
95 % CI: [-$30, +$130]
p = 0.21 (유의 X)
해석:
- 통계적: 효과 미확인 (p > 0.05)
- 그러나 효과 크기 추정은 +$50 (큰 효과)
- CI: [-$30, +$130] → 효과 방향조차 불확실
결정: 판단 보류, 표본 확대 후 재검정. 효과 크기는 의미 있을 수 있으나 검정력 부족.
9 다중 비교와 보고
Schulz Ch.5 에서 다중성을 다루지만, Ch.1 도 주 결과 (primary outcome) 와 부수 결과 (secondary outcome) 의 분리를 강조한다.
Primary outcome (사전 등록):
사망률 — RR = 0.75, 95 % CI [0.55, 1.02], p = 0.07
Secondary outcomes:
재입원률 — RR = 0.85, 95 % CI [0.70, 1.05], p = 0.13
부작용 발생률 — RR = 1.20, 95 % CI [0.90, 1.60], p = 0.21
...
Primary outcome 만 confirmatory 로, secondary 는 exploratory 로. 이 계층화 가 다중성 문제를 회피한다.
10 결과 해석 — 4 가지 시나리오
| 시나리오 | p 값 | CI 가 0 포함? | CI 가 MCID 포함? | 결정 |
|---|---|---|---|---|
| A | < 0.05 | No | Yes | 강한 채택 |
| B | < 0.05 | No | No | 통계적 유의, 임상적 미의미 |
| C | > 0.05 | Yes | Yes | 미확정, 표본 확대 |
| D | > 0.05 | Yes | No | 효과 없음 결론 |
이 매트릭스가 p 값 + CI + MCID 를 통합한 의사결정 도구이다. p 값 단독으로는 4 시나리오를 구분할 수 없다.
11 코드 예시 — RR/OR/RD/NNT 계산
import numpy as np
from scipy.stats import chi2_contingency
# 가상 자료
n_treat = 1000
n_control = 1000
events_treat = 50 # 5 %
events_control = 80 # 8 %
# 비율
p_t = events_treat / n_treat
p_c = events_control / n_control
# 측정값 계산
rd = p_t - p_c
rr = p_t / p_c
or_val = (p_t / (1 - p_t)) / (p_c / (1 - p_c))
nnt = 1 / abs(rd) if rd != 0 else float('inf')
# 95 % CI for RR (Wald log)
log_rr = np.log(rr)
se_log_rr = np.sqrt(1/events_treat - 1/n_treat + 1/events_control - 1/n_control)
ci_rr = (np.exp(log_rr - 1.96*se_log_rr), np.exp(log_rr + 1.96*se_log_rr))
# 95 % CI for RD (Wald)
se_rd = np.sqrt(p_t*(1-p_t)/n_treat + p_c*(1-p_c)/n_control)
ci_rd = (rd - 1.96*se_rd, rd + 1.96*se_rd)
# 카이제곱 검정
table = np.array([[events_treat, n_treat - events_treat],
[events_control, n_control - events_control]])
chi2, p_chi, _, _ = chi2_contingency(table)
print(f"처치 그룹: {events_treat} / {n_treat} = {p_t:.3f}")
print(f"대조 그룹: {events_control} / {n_control} = {p_c:.3f}")
print(f"\nRD = {rd:.4f}, 95 % CI [{ci_rd[0]:.4f}, {ci_rd[1]:.4f}]")
print(f"RR = {rr:.3f}, 95 % CI [{ci_rr[0]:.3f}, {ci_rr[1]:.3f}]")
print(f"OR = {or_val:.3f}")
print(f"NNT = {nnt:.0f}")
print(f"\n카이제곱: χ²(1) = {chi2:.3f}, p = {p_chi:.4f}")12 SCH Ch.1 의 통계 lens 마무리
Phase A 의 lens 에서 Schulz Ch.1 의 핵심:
- RCT 가 통계적 으로 gold standard (무작위 배정의 검정 분포 정당화)
- 분수의 분모 명시 (ITT vs PP) 는 결론을 좌우
- Measures of association 의 적절한 선택 과 다중 보고
- p < 0.05 임계값의 임의성 인정
- 효과 크기 + CI + p 값 의 3 종 세트 보고
- Primary vs secondary outcome 의 계층화
이 6 가지가 현대 임상 통계 보고 의 표준이며, A/B 테스트 등 IT 영역에도 직접 적용된다.
13 ASA 6 원칙의 적용 사례
13.1 사례 1 — 위장약 시험
“제산제 A 가 표준 B 보다 위장 통증 감소 효과 (RR 0.85, p = 0.04).”
ASA 6 원칙 적용:
- p 값은 양립 불가능성 측도 — RR 0.85 가 H_0 (효과 없음) 와 어울리지 않는 정도
- p 값은 가설 참 확률 X — “효과 있음 확률 96 %” 라고 잘못 해석 금지
- 0.05 임계값에만 의존 X — 효과 크기 (RR 0.85) 도 평가
- 완전한 보고 — 95 % CI 포함 (예: [0.75, 0.97])
- 효과 크기 측정 X — RR 0.85 만 본다면 NNT = 7 같은 절대 효과도 보고
- p 값 단독 증거 X — 메커니즘, 재현, 외부 타당성 평가 필요
13.2 사례 2 — A/B 테스트
“신규 디자인이 클릭률 5 % → 5.2 %로 증가, p = 0.03”
ASA 6 원칙:
- 작은 p — 자료가 H_0 와 약하게 양립
- NOT “효과 있음 확률 97 %”
- 0.05 보다 효과 크기 + 비즈니스 의미 중요
- 모든 메트릭 결과 보고 (다른 메트릭 악화? 다중성?)
- 5 % → 5.2 % 는 4 % relative lift. 절대값 0.2 % 는 비즈니스 의미가 작음
- p 값 + 비즈니스 임팩트 분석 + 사용자 실험
각 원칙이 데이터 분석의 정직성 강화.
14 p 값의 변형 — 새로운 통계 지표
14.1 s-value (Surprise value)
p 값의 정보량 표현. 직관적 해석:
\[ s = -\log_2(p) \]
비유: “동전을 s 번 연속 던져 모두 앞면이 나오는 것” 의 정보량.
| p | s | 비유 |
|---|---|---|
| 0.5 | 1 | 동전 1 회 |
| 0.05 | 4.3 | 동전 4.3 회 |
| 0.01 | 6.6 | 동전 6.6 회 |
| 0.001 | 10 | 동전 10 회 |
s-value 가 놀람의 정도 를 직관적으로 표현. p < 0.05 ≈ 동전 4 회 이상 — 적당한 놀람. 강하지 않음.
14.2 Bayes Factor (BF)
두 가설의 증거력 비율:
\[ \text{BF}_{10} = \frac{P(D | H_1)}{P(D | H_0)} \]
| BF | 증거력 |
|---|---|
| 1 ~ 3 | 약한 |
| 3 ~ 10 | 중간 |
| 10 ~ 30 | 강한 |
| > 30 | 매우 강한 |
p 값과 다른 정보. p = 0.05 가 항상 BF = 3 같은 단순 변환 불가 (사전 확률 의존).
14.3 Equivalence Testing
H_0: |effect| ≥ Δ (의미 있는 차이)
H_1: |effect| < Δ (등가성)
신약이 기존 약과 동등 함을 검정. NPP 시험 (non-inferiority trial).
15 효과 크기의 분야 표준
15.1 Cohen 1988 의 관습
| 효과 크기 | 작은 | 중간 | 큰 |
|---|---|---|---|
| Cohen’s d | 0.2 | 0.5 | 0.8 |
| Pearson r | 0.10 | 0.30 | 0.50 |
| Cohen’s f (ANOVA) | 0.10 | 0.25 | 0.40 |
| η² | 0.01 | 0.06 | 0.14 |
| Odds Ratio | 1.5 | 3.5 | 9.0 |
15.2 분야별 변형
| 분야 | 작은 효과 |
|---|---|
| 임상 | RR 0.95 ~ 1.05 |
| 심리학 | d 0.2 |
| 경제학 | 효과의 1 % |
| 마케팅 | Lift 1 ~ 5 % |
| A/B 테스트 (큰 IT) | 0.1 % 절대 변화 |
16 신뢰 구간 우선 보고 — 학술 권고
- 효과 크기 + CI 보고 (필수)
- p 값은 보조 (정확한 값)
- NHST 의존 줄이기
- 모든 결과 보고
- 사전 등록 권장
이 권고가 현대 통계 보고의 표준.
A/B 테스트도 같다. 효과 크기 (lift, $) + 95 % CI 가 비즈니스 의사결정의 핵심. p 값은 부수적.
17 ASA 권고와 분야 적용
17.1 의학 임상
CONSORT, ICH E9 따름. ASA 6 원칙과 일관.
17.2 학술 심리학
JARS (Journal Article Reporting Standards) 권고. 효과 크기 + CI 필수.
17.3 A/B 테스트
회사별 표준 다양. 그러나 Microsoft, Google, Booking 등이 ASA 권고와 일관된 보고 표준 채택.
17.4 경제학
AER (American Economic Review) 등이 사전 등록 + 코드 공유 점차 표준화.
18 코드 — Effect Size Calculator
import numpy as np
from scipy import stats
def cohens_d(group1, group2):
"""Cohen's d for two groups"""
n1, n2 = len(group1), len(group2)
s1, s2 = group1.std(ddof=1), group2.std(ddof=1)
pooled_sd = np.sqrt(((n1-1)*s1**2 + (n2-1)*s2**2) / (n1+n2-2))
return (group1.mean() - group2.mean()) / pooled_sd
def cohens_h(p1, p2):
"""Cohen's h for two proportions"""
return 2 * (np.arcsin(np.sqrt(p1)) - np.arcsin(np.sqrt(p2)))
def odds_ratio(p1, p2):
"""OR with 95 % CI"""
or_val = (p1/(1-p1)) / (p2/(1-p2))
return or_val
# 사례
control = np.array([10, 12, 15, 13, 11])
treatment = np.array([15, 18, 20, 17, 16])
d = cohens_d(treatment, control)
print(f"Cohen's d = {d:.3f}")
# 비율 비교
p1, p2 = 0.10, 0.06
print(f"Cohen's h = {cohens_h(p1, p2):.3f}")
print(f"OR = {odds_ratio(p1, p2):.3f}")19 후속 — 표본 크기와 다중성
다음 시리즈는 Schulz Ch.11 (sample size) 과 Ch.19 (multiplicity) 에서 임상 영역의 표본 산정 과 다중성 처리 를 다룬다.
20 관련 주제
선행 지식
후속 주제 (Phase A)
- A-SCH11-0~2 (Sample Size Calculations)
- A-SCH19-0~2 (Multiplicity I)
다른 카테고리 연결