Case·Control 군 선정 — Source Population 의 일치

Schulz & Grimes Ch.5.3 — Selection of Case and Control Groups

Case 와 control 군 선정의 실무 원칙을 정리한다. Incident vs prevalent case, control 의 source population 일치, 노출과 독립인 control 선정의 의미, AIDS 초기 case-control 에서 OR 이 52.0 ↔︎ 2.9 로 갈린 실패 사례를 추상 → 일상어 → 반사실 3 단계 직관으로 풀어낸다.

Experimentation
Epidemiology
저자

Kwangmin Kim

공개

2026년 05월 08일

1 5.3 Case Group — Incident vs Prevalent

1.1 Case 의 정의 — 명확성 + 측정 가능성

정의: Incident vs Prevalent Cases
  • Incident case: 연구 기간 중 새로 진단된 사례.
  • Prevalent case: 연구 시점에 이미 존재하는 사례 (오래된 진단 + 새 진단 모두 포함).

(Schulz & Grimes, 2019, Ch.5.3.1).

3 단계 직관:

  • 추상: Incident 는 진단 시점 분포가 좁음, prevalent 는 넓음. 진단 기준이 시간에 따라 변하는 질환이라면 prevalent 는 다른 시대의 다른 정의를 섞음.
  • 일상어 비유: 갓 입사한 직원의 직무 만족도 vs 입사 1 년~10 년차 모든 직원의 만족도. 후자는 선임자의 효과(survival bias)가 섞임.
  • 반사실: Prevalent 표집 시 장기 생존자의 편향 이 발생 — 빨리 사망한 사례는 prevalent 표집에 안 들어감 → 표본이 가벼운 표현형으로 편향. Incident 가 일반적으로 우수.

1.2 Schulz 의 권장 — Incident 우선

진단 패턴이 시간에 따라 변하므로 최근 진단(incident) 이 일관성 있다. 시점 t 의 진단 기준이 시점 t-10 보다 정밀하면 같은 환자도 다른 case 로 분류될 수 있다.

1.3 적격 기준 (Eligibility Criteria)

차원 예시
연령 범위 20~54 세 (Stadel et al., 1985 의 유방암 case-control)
지역 8 개 미국 지역 (Stadel et al., 1985)
기관 Population-based vs hospital-based
진단 방법 증상·영상·바이오마커·조직검사 등 명시

1.4 Schulz 의 가이드 (Ch.5.3.1)

좋은 case-control 보고는 다음을 명시한다.

  1. Outcome 정의: 임상 증상, 검사 결과, 진단 방법.
  2. 표본 추출 방법: 가능한 모든 case 를 포함했는가, 표본은 어떻게 추출되었는가.
  3. 적격 기준: 연령·지역·기관 등.
  4. Incident 우선: 진단 시점 분포 명시.

이 4 가지가 빠지면 후속 연구가 같은 case 군을 재구성 불가.

2 Control Group — 가장 어려운 단계

2.1 Control 의 두 가지 핵심 조건

가정: Control Group 의 두 조건
  1. Same source population: Case 가 발생한 인구에서 와야 함. 즉 control 도 같은 노출에 노출될 수 있는 인구.
  2. Independent of exposure: Control 선택이 노출과 독립이어야 함.

이 두 조건 중 하나라도 깨지면 OR 이 양 방향으로 큰 폭 흔들린다.

3 단계 직관:

  • 추상: \(P(X=1 \mid Y=0)\) 의 무편향 추정에 control 사용. Source population 일치 → background exposure rate 의 진성 추정.
  • 일상어 비유: 한 학교의 평균 점수를 측정할 때, 같은 학교 학생을 표본으로. 옆 학교 학생을 표본으로 쓰면 두 학교의 baseline 차이가 측정에 섞임.
  • 반사실: Source 불일치 → control 의 노출 분포가 case source 의 noise 가 아닌 다른 인구의 noise → OR 추정 편향 (방향은 source 차이의 패턴에 의존).

2.2 위반 사례 1 — Cardiology vs ER

Schulz 가 든 가상 사례 (Ch.5.3.2):

가정 위반: 다른 source population

시나리오: Case = 시 종합병원의 cardiology ward 의 심근경색 환자. Control = 같은 병원 ER 의 비-MI 환자.

문제: - Cardiology ward = 주 전체 의뢰 센터 → case source 는 주 전체. - ER = 시 한정 → control source 는 시 일부.

잠재 편향 1 — 새 약 보급의 도시-시골 격차: - 새 혈압약이 시에는 보급, 시 외 지역엔 미보급. - Cardiology ward 의 case 는 주 전체 → 평균 노출 ↓. - ER 의 control 은 시민만 → 평균 노출 ↑. - 결과: OR 가짜로 ↓ — 약이 실제보다 보호적으로 보임.

잠재 편향 2 — 약의 부작용 ER 입원: - 새 약이 졸음·반응시간 ↓ → 자동차 사고 → ER 입원. - ER control 군에 약 노출자가 비대칭 ↑. - 결과: OR 가짜로 ↓ — 약이 더욱 보호적으로 보임 (또는 진성 효과 가림).

해법: Source population 일치. Cardiology case 와 함께 주 전체 인구에서 control 표집, 또는 두 군 모두 시 한정.

2.3 위반 사례 2 — NSAIDs 와 대장암

가정 위반: 노출과 상관된 control source

시나리오: Case = 대장암 입원 환자. Control 후보:

Control source 노출(NSAID 사용) 패턴 편향 방향
류마티스내과 관절염 환자 → NSAID 다용 OR 가짜로 ↓ — NSAID 가 더 보호적으로 보임
소화기내과 (위궤양) 의사가 NSAID 회피 권장 → 사용 ↓ OR 가짜로 ↑ — NSAID 가 더 위험적으로 보임

3 단계 직관:

  • 추상: \(P(X \mid Y=0, \text{disease setting})\) 가 일반 인구의 \(P(X \mid Y=0)\) 와 다름. Disease setting 자체가 노출과 상관.
  • 일상어 비유: 술집의 음주율을 시민의 음주율로 추정 — 술집은 음주 인구가 자기선택된 곳이라 baseline 추정이 편향.
  • 반사실: 인구 기반 표집 (random digital dialing) → 노출 베이스라인 정직.

2.4 정직한 control 사례 — 유방암-경구피임약 (Stadel et al., 1985)

사례: Population-based control 의 모범

Case: 8 개 미국 지역의 20~54 세 여성, 새로 진단된 유방암.

Control: 같은 지역 + 같은 연령의 여성을 무작위 디지털 전화 다이얼로 모집.

왜 좋은가: - Source population 일치 (같은 지역, 같은 연령). - 노출과 독립 (전화 다이얼은 경구피임약 사용 여부와 무관). - 인구 기반 → hospital-based bias 회피.

3 단계 직관:

  • 추상: Random digit dialing (RDD) → control 의 노출 분포가 case source 의 인구 노출 분포 무편향 추정.
  • 일상어 비유: 도시의 평균 임금을 추정하기 위해 무작위 가구 전화 조사. 술집·은행 손님으로 추정하지 않음.
  • 반사실: 만약 control 을 같은 지역의 산부인과 외래 환자로 했다면, 그들은 일반 여성보다 경구피임약 사용 가능성 ↑ → OR 가짜로 ↓.

3 AIDS 초기 case-control — OR 이 52.0 ↔︎ 2.9 로 갈린 사례

가정 위반의 극적 예시 — Moss et al. (1987)

연구: 1983~1984 SF AIDS cases vs 두 가지 control 군.

노출: 100+ 명의 성 파트너 vs 0~5 명.

Control 군 OR
STD 클리닉의 HIV 미감염자 2.9
이웃 (neighbourhood) 의 HIV 미감염자 52.0

같은 case 자료 + 같은 노출 측정 + 다른 control 표집 → OR 18 배 차이.

왜 STD 클리닉 control 이 부적절한가:

  • STD 클리닉 방문자는 성행위 활동성이 ↑ — 100+ 파트너 있을 가능성 ↑.
  • 즉 control source 가 노출과 독립이 아니라 양의 상관.
  • 결과: control 의 노출 분율이 부풀려짐 → OR 가짜로 ↓.

3 단계 직관:

  • 추상: \(P(X=1 \mid Y=0, \text{STD clinic}) > P(X=1 \mid Y=0)\). STD 클리닉 방문 자체가 X 와 양의 상관.
  • 일상어 비유: 흡연 효과를 측정하기 위해 control 을 흡연 카페 손님으로. Control 의 흡연율이 부풀려져 효과가 가려짐.
  • 반사실: Neighbourhood control = 일반 인구 표본에 가까움 → 노출 baseline 정직 → 진성 OR (52.0) 에 가까운 추정.

교훈: Control source 가 노출과 독립인지 점검은 case-control 설계의 가장 중요한 한 단계.

4 Panel 5.2 — Schulz 의 편향 정리표

Cases Control 선정 비대표성 Selection Bias
대장암 입원 관절염 입원 NSAID 노출 ↑ OR 가짜로 ↓
대장암 입원 위궤양 입원 NSAID 노출 ↓ OR 가짜로 ↑
AIDS STD 클리닉 성 파트너 수 ↑ OR 가짜로 ↓
MI (cardiology, 주 전체) 비-MI (ER, 시 한정) 새 약 노출 분포 차 양 방향 가능

이 표가 Schulz Ch.5 의 핵심 메시지 — Control 선정의 잘못된 한 결정이 OR 을 자유롭게 흔든다.

5 권장 절차 — 인구 기반 vs 매칭 vs 다중 control

권장 순서 방법 이유
1 인구 기반 무작위 (RDD, 전수 등록부) Source 와 노출 독립 동시 확보
2 여러 다른 source 의 control 동시 사용 한 source 의 편향 점검 가능
3 Hospital-based 매칭 (불가피 시) 매칭 변수의 신중한 선정
4 친구·친척·이웃 control 마지막 선택지

5.1 다중 control 의 예 — Moss et al. 의 교훈

Moss et al. (1987) 이 두 control 군을 함께 사용한 것 자체는 표준적 디자인 — 다중 control 로 OR 의 강건성 점검. 두 OR 의 큰 차이가 STD 클리닉 control 의 부적절성을 드러냈다.

6 Friend / Relative / Hospital Control — 위계

Schulz 는 Ch.6 에서 control 선정 옵션을 더 자세히 분류 (Phase B B19~B22 의 후속 묶음).

Control 종류 강점 약점
Random digit dialing (RDD) Source 일치, 인구 기반 비응답 편향, 휴대전화 시대의 RDD 효율 ↓
Neighbourhood (이웃) 같은 환경 (도시·지역) 친밀도 편향, 사회경제 매칭
Hospital control 자료 접근성 자기선택, 환자 인구 한정
Friend / Relative 모집 효율 Overmatching, 노출 상관

자세한 비교는 B19~B22 에서.

7 Case 와 Control 의 비율

직관 3 단계: Control:Case 비율의 효율
  • 추상: 검정력은 1:1 부근에서 가파르게 ↑, 1:4 정도에서 거의 plateau, 1:5+ 는 한계 효용 미미.
  • 일상어 비유: 시험 합격자 1 명에 대해 불합격자 4 명 비교. 5 명 추가는 검정력 거의 안 늘림.
  • 반사실: Control 비용이 case 비용보다 작다면 1:4 비율이 효율적. Control 도 비싸면 1:1.

표준 권장: 1:1 ~ 1:4 범위.

8 코드 예시 — 가상 case-control 의 OR + Wald CI

import numpy as np
import pandas as pd

np.random.seed(42)

# 진성 OR=3, 인구 노출 prevalence 0.20
n_cases = 200
n_controls = 800

# 진성 노출 패턴
true_OR = 3.0
p_X_given_Y0 = 0.20
p_X_given_Y1 = (true_OR * p_X_given_Y0) / (1 + (true_OR - 1) * p_X_given_Y0)

cases_X = np.random.binomial(1, p_X_given_Y1, n_cases)
controls_X = np.random.binomial(1, p_X_given_Y0, n_controls)

# 2x2 표
a = cases_X.sum()
b = n_cases - a
c = controls_X.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})")

# 잘못된 control source: 노출자가 더 자주 표집되는 source
biased_controls_X = np.random.binomial(1, p_X_given_Y0 * 1.5, n_controls)  # 50% 더 노출
c_biased = biased_controls_X.sum()
d_biased = n_controls - c_biased
OR_biased = (a * d_biased) / (b * c_biased)
print(f"잘못된 control: OR = {OR_biased:.2f} (편향 방향: ↓)")

해석: 같은 case 자료에 다른 control source 가 OR 을 흔든다. 진성 OR=3 에서 노출이 control 에 비대칭 많이 잡히면 OR 가짜로 ↓.

9 결론

Case 와 control 군 선정은 case-control 설계의 가장 어려운 단계. 5 가지 점검 항목:

  1. Case 정의 명료성 + incident 우선.
  2. Source population 일치 (case 와 control 같은 인구).
  3. 노출과 독립 인 control source.
  4. 다중 control 로 강건성 점검.
  5. Population-based 우선, hospital-based 차선.

다음 글(B18) 에서는 노출 측정의 회상 편향과 confounding 통제를 다룬다.

10 관련 주제

Subscribe

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