1 시간이 거꾸로 흐르는가
Case-control 의 가장 흔한 오해는 “시간이 거꾸로 흐른다” 는 표현이다. 정확히는 연구의 추론 방향이 거꾸로 — 결과(Y)에서 노출(X)로 회고. 시간 자체는 여전히 노출이 결과를 선행한다.
시간축: 과거 ────────── 현재 (자료 수집 시점)
[설계 도식]
현재
│
Population with outcome ──┼──→ 표집 → Case group
(실제 발생자) │
│
Population without outcome┼──→ 표집 → Control group
(미발생자) │
│
회고 측정
↓
각 사람의 과거 노출 측정
(X=yes/no)
│
↓
두 군의 노출 빈도 비교 → OR
(Schulz & Grimes, 2019, Ch.5.1, Fig. 5.1).
3 단계 직관:
- 추상: 결과 발생자 표본과 미발생자 표본을 같은 시점에 정의하고, 과거 노출 분포를 두 군에서 비교.
- 일상어 비유: 시험 합격자와 불합격자를 모아 “얼마나 공부했는가” 를 회고 조사. 공부 시간(X)이 합격(Y) 을 선행한 것은 자명하지만 측정은 합격 여부 확정 후.
- 반사실: 시간 자체가 거꾸로 흐른다면 인과 추론 불가. Case-control 이 시간 선후를 깨는 것이 아니라 자료 수집 순서가 결과 우선.
2 Cohort 와의 흐름 비교
[Cohort]
T0: T1: T2:
노출 측정 추적 결과 측정
↓ │ ↓
X=yes/no ────→ 추적 추적 추적 ────→ Y=yes/no
[Case-Control]
T0: T1: T2 (현재):
(노출 발생) (결과 발생) 자료 수집 시점
↓
Y 기준 표집 + X 회고
이 차이가 두 설계의 모든 강점·약점 차이를 만든다.
3 30% 의 잘못된 분류 — Schulz 의 진단
Schulz 의 발견 (Grimes, 2009):
- 미국 산부인과 4 개 저널의 “case-control” 라벨 논문 124 편 검토.
- 30% 가 case-control 이 아님 — 대부분 retrospective cohort 였다.
- 당뇨병 분야 “case-control” 의 43.8%가 잘못 분류 (Ramos et al., 2017).
3 단계 직관:
- 추상: 연구자·심사자가 두 설계의 정의를 혼동. Cohort 는 노출 기준, case-control 은 결과 기준 — 라벨이 정의를 따르지 않음.
- 일상어 비유: 채소 코너에 과일을 진열하고 “이는 채소입니다” 라고 표시 — 분류 자체가 잘못.
- 반사실: 라벨이 잘못되면 메타분석 자동화 도구가 잘못 풀에 분류 → 통합 분석이 오염. 또 독자가 OR 해석을 RR 로 오역할 위험.
해법: 설계의 정의에 따라 분류. 표본을 무엇 기준으로 표집했는가 가 분류 기준 — 결과 기준이면 case-control, 노출 기준이면 cohort.
4 OR — 왜 RR 이 아닌가
Cohort 는 위험 인구 (at-risk) 의 분모 정보를 갖지만, case-control 은 결과 기준 표집 → 분모 미상.
각 군의 노출 odds 비.
| Exposed (X=1) | Unexposed (X=0) | |
|---|---|---|
| Cases (Y=1) | \(a\) | \(b\) |
| Controls (Y=0) | \(c\) | \(d\) |
Case 의 노출 odds: \(a/b\). Control 의 노출 odds: \(c/d\).
\[ \text{OR} = \frac{a/b}{c/d} = \frac{ad}{bc} \]
또는 동등하게: \[ \text{OR} = \frac{P(X=1 \mid Y=1) / P(X=0 \mid Y=1)}{P(X=1 \mid Y=0) / P(X=0 \mid Y=0)} \]
4.1 왜 이 형태인가 — Bayes Theorem 의 비대칭
\[ \frac{P(Y=1 \mid X=1)}{P(Y=1 \mid X=0)} = \frac{P(X=1 \mid Y=1)}{P(X=1 \mid Y=0)} \cdot \frac{P(X=0 \mid Y=0)}{P(X=0 \mid Y=1)} \]
(Bayes 변환 후 정리). 즉 RR 과 OR 은 등치가 아니다 — 보정 항이 있다.
- 추상: 결과가 희귀 (< 5%) 이면 \(P(X=0 \mid Y=1) \approx P(X=0)\), 보정 항이 1 에 수렴 → OR ≈ RR.
- 일상어 비유: 해변에서 모래 한 알을 빼도 모래사장 비율은 거의 변하지 않음. 결과 발생자가 인구의 1% 수준이라면 비-노출자 분율이 case 군에서 빼나 control 군에서 빼나 비슷.
- 반사실: 결과가 흔하면 (예: 일반 감기) OR 과 RR 이 큰 차이 — OR 이 RR 보다 크게 부풀려짐. 이 경우 RR 직접 산출 가능한 cohort 가 더 정직.
4.2 희귀 결과 가정의 정량
\(P(Y=1) < 0.05\) 이면 OR / RR 의 차이가 약 5% 이내. \(P(Y=1) = 0.10\) 이면 약 10% 차이. \(P(Y=1) = 0.30\) 이면 OR 이 RR 보다 50% 이상 부풀려짐.
가설: 한 IT 회사의 사용자 이탈률이 30% (이탈자 → case, 미이탈자 → control). 이탈 노출 인자(예: 푸시 알림 무시) 의 OR = 3 이라면, 이를 RR 로 해석하면 “푸시 무시자가 3 배 더 자주 이탈” — 그러나 실제 RR 은 약 2.0 정도일 수 있다.
결과: 의사결정자가 효과 크기를 과장하여 받아들임. 자원 배분의 잘못된 우선순위.
5 강점 3 가지
5.1 강점 1 — 시간·비용·노력 효율
| 비교 차원 | Cohort | Case-Control |
|---|---|---|
| 시간 | 추적 기간 (수년~수십년) | 수개월 |
| 비용 | 표본 + 추적 운영비 | 표본 모집 + 회고 측정 |
| 추적 손실 | 큼 | 없음 |
희귀 결과의 경우 효율 차이가 극단적. 발생률 5/100,000/yr 라면 cohort 는 200,000 명 × 10 년, case-control 은 사례군 100 명 + control 200 명 표집으로 충분.
5.2 강점 2 — 긴 잠복기 결과 적합
암 같은 결과는 노출에서 발현까지 수십 년. Cohort 라면 추적이 비현실적 길이. Case-control 은 이미 발현된 case 와 같은 시기의 control 을 비교하므로 시간 절약.
흡연이 폐암을 유발하는 데 30 년 잠복기. 1950 년대에 cohort 로 시작했다면 1980 년대에야 결과 — 그러나 Doll & Hill (1950) 의 case-control 이 1 년 만에 압도적 OR 을 보고 → 즉각적 공중보건 행동.
5.3 강점 3 — 다중 노출 동시 검토
한 결과(예: 폐암) 에 대한 여러 노출(흡연, 직업, 식이, 가족력) 을 동시에 회고 가능. 다변량 로지스틱 회귀로 보정.
6 약점 3 가지
6.1 약점 1 — 희귀 노출에 부적합
Schulz 의 사례: 아프리카 일부 지역의 경구피임약 사용 prevalence 가 매우 낮음. 경구피임약-HIV 전파 case-control 을 수행하려면 cases 와 controls 모두 검사해도 노출자가 거의 없음.
3 단계 직관:
- 추상: 노출 prevalence \(p_X\) 가 낮으면 검정력이 \(\approx p_X (1 - p_X) \cdot N\) 에 비례 → 매우 큰 표본 필요.
- 일상어 비유: 모래사장에서 보석을 찾기. 대부분 모래라 보석 발견 사례가 거의 없음.
- 반사실: 같은 노출이 cohort 에 더 적합 — 보석을 가진 사람부터 시작하여 보석 미보유자와 비교. Cohort 의 표집 효율이 노출 prevalence 와 무관.
일반 원칙 (Woodward, 2014): “Cohort designs are more efficient in settings in which the incidence of outcome is higher than the prevalence of exposure.”
| 결과 발생률 vs 노출 prevalence | 적합 설계 |
|---|---|
| 결과 < 노출 (희귀 결과) | Case-Control |
| 결과 > 노출 (희귀 노출) | Cohort |
6.2 약점 2 — Selection Bias 강함
Control 군의 source population 일치가 어려움. 잘못된 control 선택이 OR 을 양 방향으로 흔들 수 있다 (B17 에서 본격 다룸).
6.3 약점 3 — Recall Bias 강함
Cases 와 controls 의 회고 패턴이 다름. 자기 진단의 원인을 case 가 더 깊이 떠올림 → 차별 회상 (B18 에서 본격 다룸).
7 절대 vs 상대 효율
- 추상: 효율 = 사건 단위당 표본 크기. Case-control 은 case 발생자만 표집하므로 사건당 표본 ↓.
- 일상어 비유: “범인 1 명을 식별하기 위해 동네 전체 1,000 명 검문” vs “이미 식별된 범인 1 명 + 무작위 시민 4 명 검문”. 후자가 효율적.
- 반사실: 노출 자체가 희귀하면 case 군에서 노출자 식별이 어려워 검정력 ↓. 이때는 cohort 가 효율적.
8 코드 예시 — OR 산출 + Wald CI
import numpy as np
import pandas as pd
from scipy import stats
# 가상 case-control: 폐암 cases 200 + controls 400, 노출 = 흡연
np.random.seed(42)
# 진성 효과: 흡연이 폐암 위험을 OR=4 로 증가
# 인구 흡연 prevalence 30%
p_smoke_control = 0.30
p_smoke_case = (4 * 0.30 / 0.70) / (1 + 4 * 0.30 / 0.70) # OR=4 환산
n_cases = 200
n_controls = 400
cases_smoke = np.random.binomial(1, p_smoke_case, n_cases)
controls_smoke = np.random.binomial(1, p_smoke_control, n_controls)
# 2x2 표
a = cases_smoke.sum()
b = n_cases - a
c = controls_smoke.sum()
d = n_controls - c
OR = (a * d) / (b * c)
log_OR_se = np.sqrt(1/a + 1/b + 1/c + 1/d)
lo = np.exp(np.log(OR) - 1.96 * log_OR_se)
hi = np.exp(np.log(OR) + 1.96 * log_OR_se)
print(f"OR = {OR:.2f} (95% CI: {lo:.2f} ~ {hi:.2f})")
# Mantel-Haenszel 보정 (예: 성별별 OR 가중)
# 자세한 분석은 B18 에서해석: OR 추정과 95% Wald CI. 진성 OR=4 가까운 값 + CI 가 1 미포함. Wald CI 는 대표본 근사 — 사건 수가 적으면 exact CI (Fisher’s exact) 사용.
9 IT 대응 — Reverse Engineering Analysis
| 의학 case-control | IT 대응 |
|---|---|
| 폐암 사례 + 정상 대조 | 사기 거래 + 정상 거래 (fraud detection) |
| 노출 = 흡연 | 노출 = 비정상 행동 패턴 |
| OR | 사기 risk score |
| Recall bias | Log retention bias (오래된 로그가 누락) |
| Selection bias | Sample bias (탐지된 사례만 분석) |
A/B 테스트의 사후 분석에서 “이탈자 vs 미이탈자의 행동 차이” 분석이 case-control 의 IT 판이다. 단, OR 을 RR/lift 로 오역 주의 — IT 결과(이탈)가 흔하면 OR 과 RR 이 갈라짐.
10 결론
Case-control 의 효율 (시간·비용·희귀 결과·긴 잠복기 적합)이 그 인기를 설명한다. 그러나 OR 의 RR 근사 조건(< 5%), selection bias, recall bias 는 항상 점검 대상이다.
다음 글(B17) 에서는 case 와 control 군 선정의 실무 — AIDS 사례에서 OR 이 52.0 ↔︎ 2.9 로 갈렸던 control 선정의 함정을 본다.
11 관련 주제
- SCH Ch.5 overview
- 1111-11-11, Case·Control 선정
- 1111-11-11, 노출 측정과 교란 통제
- Effect Measures — OR/RR/RD 통합