1 Indirect Standardisation — Expected vs Observed
연구 인구의 연령 구성에 표준 인구의 rate 를 곱해 expected 사망 수 산출. 실제 (observed) 와 비교 (Woodward, 2014, Ch.4.5.2).
\[ \text{Expected deaths} = \sum_a n_a^{\text{study}} \cdot \text{Rate}_a^{\text{std}} \]
\[ \text{SMR} = \frac{\text{Observed deaths}}{\text{Expected deaths}} \]
2 SMR — 해석
- 추상: \(\text{SMR} = O/E\) — observed 가 expected 보다 큰지 작은지의 비.
- 일상어 비유: “이 회사 직원이 표준 미국인의 사망률을 가졌다면 1 년에 100 명 사망 예상. 실제로 80 명 사망 → SMR = 0.8.”
- 반사실: SMR > 1 = 표준보다 위험 ↑. SMR < 1 = 위험 ↓. SMR = 1 = 동등.
해석 사례:
| SMR | 해석 |
|---|---|
| 1.5 | 표준의 1.5 배 위험 (예: 광부의 만성 호흡기 질환) |
| 1.0 | 동등 |
| 0.8 | 표준보다 안전 (예: healthy worker effect) |
| 0.5 | 표준의 절반 위험 |
3 Direct vs Indirect — 언제 어느 것?
| 측면 | Direct | Indirect |
|---|---|---|
| 자료 요구 | 연구 인구 연령별 rate | 연구 인구 연령 구성 + 표준 rate |
| 적합 표본 | 큰 표본 (각 연령군 충분) | 작은 표본 OK |
| 비교 목적 | 두 연구 인구 직접 | 한 연구 인구 vs 표준 |
| 결과 해석 | 두 standardised rate 의 ratio | SMR (단일 ratio) |
- 추상: Direct 는 각 연령군 rate 의 분산 → 작은 \(n_a\) 가 noise 큼. Indirect 는 표준 rate (인구 baseline) 사용 → noise 작음.
- 일상어 비유: 100 명 직장의 사망률 분석 — direct 면 각 연령군 rate 의 noise 큼. Indirect 는 인구 평균 rate 적용 → 안정.
- 반사실: 작은 표본의 직장 코호트 (Wong 1990 의 styrene 노출 등) 는 indirect 가 표준.
4 SMR 의 신뢰구간
Observed deaths \(D \sim \text{Poisson}(E \cdot \text{SMR}_{\text{true}})\).
Wald CI (대표본): \[ \text{SMR} \pm 1.96 \cdot \sqrt{\text{SMR} / E} \]
소표본 (D 작음): exact Poisson CI. \[ \text{SMR}_{\text{lo}} = \frac{\chi^2_{2D, 0.025}/2}{E} \] \[ \text{SMR}_{\text{hi}} = \frac{\chi^2_{2(D+1), 0.975}/2}{E} \]
4.1 직관 — Poisson 분산의 의미
- 추상: 사건 수 \(D\) 가 \(\text{Poisson}(\lambda)\) 라면 분산 = 평균 = \(\lambda\). 작은 평균 → 분산 작음 절대 단위. 그러나 SMR 의 상대 분산 \(\sqrt{1/E}\).
- 일상어 비유: 한 해 1 명 사망 vs 100 명 사망 — 후자가 평균 추정이 더 안정 (\(\sqrt{1/100}\) 가 \(\sqrt{1}\) 보다 작음).
- 반사실: \(E < 5\) 이면 Wald CI 부정확. Exact CI 사용.
5 SMR 의 비교 한계
가설: 두 직장 코호트 SMR_A = 1.2, SMR_B = 1.5. → B 가 더 위험?
진성: 두 코호트의 연령 구성이 다르면 SMR 직접 비교 불가. 같은 연령 구성에서만 비교 가능.
3 단계 직관:
- 추상: SMR 은 연구 인구의 연령 구성을 가중치로 사용. 다른 연령 구성 → 다른 가중치 → 비교 불가.
- 일상어 비유: 두 학교의 SMR (학생/교사 비) 를 다른 학교 구성에서 측정하면 직접 비교 불가.
- 반사실: 두 코호트의 직접 비교라면 direct standardisation (같은 표준 가중치) 사용.
6 Healthy Worker Effect 의 잔존
직장 코호트의 SMR 이 < 1 이라도 healthy worker effect 의 잔존:
- 일하는 사람은 건강한 인구의 자기선택.
- 표준 인구 (일반 인구) 의 사망률에는 일하지 못하는 (만성 질환·장애) 사람도 포함.
- → 직장 코호트의 SMR 이 baseline 으로 < 1 시작.
해법: - 다른 직장의 SMR 을 비교 (둘 다 일하는 사람 baseline 공유). - 연령·성별 + 직업 으로 표준화 (industry-specific standard).
7 사례 — Wong (1990) 의 Styrene 노출
Wong (1990) 의 styrene 노출 강화 플라스틱·복합재 산업 노동자.
SMR (전반): 0.85 (모든 사망 원인) — Healthy worker effect 의 영향. SMR (특정 사인): 폐암·중추신경계 종양 ↑ — styrene 의 진성 영향 가능성.
Schulz/Woodward 의 메시지: SMR 의 전반과 사인별 차이가 healthy worker 의 잔존을 시사. 사인별 SMR 이 더 정직한 위험 추정.
3 단계 직관:
- 추상: 모든 사망 원인의 SMR < 1 은 healthy worker, 특정 사인의 SMR > 1 은 진성 직업 위험.
- 일상어 비유: 직장의 평균 키 ↓ + 특정 부서 키 ↑ — 부서 효과는 진성, 전체 효과는 자기선택.
- 반사실: 사인별 분석 안 하면 healthy worker 가 진성 위험 가림.
8 코드 — SMR 산출
import numpy as np
import pandas as pd
from scipy.stats import chi2
# 가상 직장 코호트
data = pd.DataFrame({
"age_group": ["20~39", "40~59", "60+"],
"study_pop": [500, 800, 200],
"observed_deaths": [3, 25, 30],
"std_rate": [0.001, 0.005, 0.05], # 표준 인구 rate
})
# Expected deaths
data["expected"] = data["study_pop"] * data["std_rate"]
# SMR
total_O = data["observed_deaths"].sum()
total_E = data["expected"].sum()
SMR = total_O / total_E
print(f"Observed = {total_O}, Expected = {total_E:.1f}")
print(f"SMR = {SMR:.2f}")
# Exact Poisson CI
CI_lo = chi2.ppf(0.025, 2 * total_O) / 2 / total_E
CI_hi = chi2.ppf(0.975, 2 * (total_O + 1)) / 2 / total_E
print(f"95% CI: ({CI_lo:.2f}, {CI_hi:.2f})")9 결론
Indirect standardisation + SMR 은 작은 표본의 표준 비교 도구. SMR > 1 은 위험 ↑, < 1 은 ↓ 이지만 healthy worker effect 의 잔존 주의. 사인별 분석이 진성 직업 위험 식별에 필수.
다음 글(B46)에서는 Mantel-Haenszel 의 stratified 분석 도구를 본다.