1 정의
원 데이터 \(n\) 명에서 복원 추출(with replacement) 로 \(n\) 명의 bootstrap 표본을 만들고, 그 표본에서 추정량을 다시 계산하는 절차를 1000 번 반복. 1000 개 추정값의 표준편차가 표준오차의 추정량이고, 분포의 2.5~97.5 percentile 또는 추정값 ± 1.96 SE 가 95% CI (Efron 1979).
미관측 교란이 있을 때 그 교란이 처치 효과 추정값을 무효로 만들기 위해 필요한 최소 강도. \(\text{E-value} = \text{RR} + \sqrt{\text{RR}(\text{RR}-1)}\) (조정된 RR 기준). 값이 클수록 미관측 교란에 robust (VanderWeele & Ding 2017).
직관 — 신뢰의 세 단계: 점추정 → 95% CI → sensitivity bound. 첫 단계는 데이터에서 한 숫자, 두 번째는 표본 무작위성에 대한 불확실성, 세 번째는 가정 위반에 대한 robustness. 인과 분석 결과를 보고할 때 세 단계 모두 함께 제시하는 것이 표준 관행이다.
2 13.5 신뢰성의 4 가지 층
NHEFS 분석에서 IPW, 표준화, doubly robust, g-estimation, propensity matching 모두 약 3.5kg. 이 일치성은 reassuring 하지만 모든 방법이 같은 식별 가정에 의존한다 — 가정이 깨지면 모두 같은 방향으로 편향된다.
직관 — 추정 방법의 일치는 가정의 robustness 가 아닌 모형의 robustness 의 증거: IPW 와 표준화는 다른 모형에 의존하므로 일치가 specification 안정성을 시사. 그러나 식별 가정 (교환· 양·일관) 이 깨지면 어떤 추정 방법도 진짜 인과 효과를 향하지 않는다 — 모형 일치는 식별 통과를 보장하지 않는다.
2.1 Layer 1 — 표본 무작위성 (Bootstrap)
2.1.1 Bootstrap 의 작동 원리
- 원 표본 \(\{X_1, \ldots, X_n\}\) 을 모집단의 축소판으로 간주.
- 그로부터 \(n\) 명을 복원 추출 → bootstrap 표본 \(\{X_1^*, \ldots, X_n^*\}\).
- 같은 분석으로 추정값 \(\widehat{\theta}^*\) 계산.
- 1000 번 반복해 \(\{\widehat{\theta}^{*(1)}, \ldots, \widehat{\theta}^{*(1000)}\}\).
- 이들의 표준편차 = \(\widehat{SE}(\widehat{\theta})\).
직관 — Bootstrap 의 합리성: “표본이 모집단의 축소판이라면, 그 축소판에서 다시 추출한 표본의 추정값 분포는 진짜 추정량의 sampling distribution 의 근사” 라는 발상. Efron (1979) 의 통찰. 가정 적고 자동화 쉬워 표준 도구가 됨.
직관 — 왜 1000 번? Monte Carlo 시뮬레이션 오차를 줄이는 데 충분한 횟수. 200~500 번도 자주 쓰지만 polynomial 부분에서 1~2% 흔들릴 수 있다. 5000 번이면 거의 정확하지만 계산 시간 5 배. 의사결정에 임계적인 결과는 5000 번, 일반 분석은 1000 번 권장.
2.1.2 Bootstrap CI 의 두 형태
| 방법 | CI 계산 |
|---|---|
| Wald (정규 근사) | \(\widehat{\theta} \pm 1.96 \widehat{SE}_\text{boot}\) |
| Percentile | \((\widehat{\theta}^*_{2.5\%}, \widehat{\theta}^*_{97.5\%})\) |
| BCa (편향 보정·가속) | percentile + 편향·가속 보정 |
직관 — 세 방법의 차이: Wald 는 정규성 가정이 들어간 형태. Percentile 은 분포 자체에서 직접. BCa 는 분포 비대칭과 분산 변동을 보정한 가장 정확한 형태. 표본이 크고 분포 정규에 가까우면 셋 다 비슷하지만, 작은 표본 + 비대칭 분포에서는 BCa 가 권장.
직관 — Bootstrap 의 한계: 추정량의 sampling distribution 이 정규로 수렴해야 작동. 추정량이 boundary (예: 분산 = 0) 근처에서는 부정확. Median, quantile 등 비매끄러운 추정량은 특수 처리 필요.
2.2 Layer 2 — 식별 가정의 검증 불가능성
- 조건부 교환가능성: \(L\) 이 모든 교란 변수를 포함한다는 가정. 미관측 교란이 있으면 깨짐. 데이터로 직접 검증 불가 — 도메인 지식·DAG 분석에 의존.
- 양의 확률: 자료에서 일부 점검 가능 (overlap 진단).
- 일관성: \(A=a\) 일 때 \(Y\) 가 잠재 결과 \(Y^a\) 와 일치. 처치 정의의 명확성에 의존.
직관 — 통계로 풀 수 없는 가정: 어떤 통계 검정도 미관측 교란의 부재를 증명하지 못한다. p-value 나 신뢰구간이 아무리 좋아도 이 가정의 신뢰성은 통계 외부의 영역 — 도메인 지식· 연구 설계의 품질에 의존. 통계 결과의 robustness 는 가정의 robustness 를 대체하지 않는다.
2.3 Layer 3 — Sensitivity Analysis
2.3.1 E-value 의 정의와 활용
미관측 교란이 어느 정도 강해야 추정된 효과 (e.g., RR=2.0) 가 무효 (RR=1.0) 가 되는가?
\[\text{E-value} = \text{RR} + \sqrt{\text{RR}(\text{RR}-1)}\]
NHEFS 사례 (체중 변화) 의 위험비가 RR ≈ 1.4 라면 E-value ≈ 2.2 — “미관측 교란이 처치와 결과 모두에 RR 2.2 이상의 강도로 연관되어야 추정 효과가 사라진다”.
직관 — E-value 가 큰 경우의 의미: E-value 5.0 은 미관측 교란이 처치와 결과 모두에 5 배 위험을 만들어야 효과가 사라진다는 의미. 이런 강한 교란이 빠뜨려졌을 가능성이 낮으면 결과는 robust. E-value 1.5 정도면 약한 교란만으로도 효과가 사라질 수 있어 신뢰도 낮음.
2.3.2 Bound 분석의 다른 도구
| 도구 | 가정 | 결과 |
|---|---|---|
| Manski bound | 가정 없음 | 매우 넓은 구간 (보통 부등호 둘 다 보임) |
| Rosenbaum bound | 미관측 교란의 odds ratio | 효과의 sensitivity 정량화 |
| E-value | 위험비 형태 | 단일 숫자 요약 |
| Tipping point analysis | 시나리오 명시 | 가정에 따른 결과 변화 시각화 |
직관 — 도구 선택의 트레이드오프: 가정이 적을수록 결과가 약하다 (Manski). 강한 가정으로 좁은 결과를 얻을 수 있지만 (단일 추정), 가정 검증 불가. 결과 보고는 점추정 + 95% CI + sensitivity bound 의 3 단계가 황금 표준.
2.4 Layer 4 — Target Trial Emulation 의 보호
관찰 데이터로 인과 분석을 할 때 “어떤 무작위 실험을 모방하는가?” 를 명시. 이상적 RCT 의 protocol 을 작성하고 관찰 데이터의 분석을 그 protocol 에 가깝게 align (Hernán & Robins 2016).
직관 — Target trial 의 보호 장치: 처치 정의의 모호성, eligibility 의 잘못된 적용, time zero 의 부정확한 설정 같은 흔한 실수가 target trial 명시로 자동 점검된다. NHEFS 의 baseline 에 처치 받았는지 정의의 모호성(Fine Point 12.1)도 target trial 관점에서 명시화하면 분석 가능 — 단, 이 데이터는 그 보호 장치가 없는 example.
2.5 NHEFS 분석의 신뢰성 평가
| Layer | NHEFS 점검 결과 |
|---|---|
| 표본 무작위성 | Bootstrap CI (2.5, 4.5) — 명목 95% calibration |
| 식별 가정 | 미관측 교란 위험 (예: 식습관, 스트레스) |
| Sensitivity (E-value) | 약 2.2 — 중간 정도 robust |
| Target trial align | 부분적 — Fine Point 12.1 의 selection 위험 |
직관 — “3.5 kg” 결과의 진짜 의미: 점추정만 보면 “흡연 중단이 체중 2.5~4.5 kg 증가시킨다” 는 결론. 4 layer 평가 후에는 “측정된 9 변수 보정 + 모형 specification 가정 + 미관측 교란이 약하다는 가정” 아래에서 그 결과. 결론의 강건성은 가정의 강건성.
3 결론 보고의 3 단계 형식
- 점추정 with method (e.g., “IP weighting estimate of ATE: 3.4 kg”).
- 95% CI with construction method (e.g., “robust SE based; 95% CI 2.4~4.5”).
- Sensitivity assessment (e.g., “E-value 2.2; results sensitive to moderate unmeasured confounding”).
- Method consistency check (e.g., “consistent across IPW, standardization, doubly robust”).
- Target trial alignment notes (e.g., “selection bias from baseline definition discussed”).
이 5 가지를 모두 보고하는 것이 인과 분석의 황금 표준.
직관 — 보고의 풍부함이 곧 신뢰의 척도: 점추정만 보고하면 사용자가 가정의 신뢰성을 평가할 정보가 부족. 5 가지를 모두 명시하면 사용자가 자신의 도메인 판단으로 결과를 평가할 수 있다. 재현 가능성과 비판적 평가의 기반.
4 관찰 데이터 분석의 본질적 한계
직관 — 어떤 통계 도구도 무작위 실험을 대체하지 않는다: IPW, 표준화, g-estimation, doubly robust 모두 식별 가정 위에서 작동한다. 식별 가정이 깨지면 결과가 모집단 인과 효과로 향하지 않는다. 무작위 실험은 설계상 식별 가정을 보장 — 관찰 분석은 가정에 의존. 둘은 본질적으로 다른 종류의 evidence.
직관 — 그러나 관찰 분석은 여전히 가치 있다: 무작위 실험이 윤리적·실용적으로 불가능한 많은 영역(흡연, 정책, 사회 과학)에서 관찰 분석이 유일한 도구. 가정 명시 + sensitivity + target trial alignment 로 robustness 를 강화하면 의사결정에 사용 가능한 evidence 가 된다.
5 응용 분야
- 임상 코호트의 인과 분석: 가정 검증 + sensitivity 의 표준 절차
- 공중보건 정책: target trial emulation 으로 정책 효과 추정
- HEOR: 비용 결과의 robustness 평가
- A/B 테스트의 외부 타당성: sensitivity bound 로 일반화 가능성
- 마케팅 attribution: incrementality 추정의 신뢰성 평가
6 코드 — Bootstrap + sensitivity
import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
nhefs = pd.read_csv("nhefs.csv").dropna(subset=["wt82_71"]).reset_index(drop=True)
formula = (
"wt82_71 ~ qsmk + I(qsmk * smokeintensity) + sex + race + C(education) "
"+ age + I(age**2) + smokeintensity + I(smokeintensity**2) "
"+ smokeyrs + I(smokeyrs**2) + C(exercise) + C(active) "
"+ wt71 + I(wt71**2)"
)
# 표준화 ATE + bootstrap CI
def standardize_ate(data):
m = smf.ols(formula, data=data).fit()
t = data.copy(); t["qsmk"] = 1
u = data.copy(); u["qsmk"] = 0
return m.predict(t).mean() - m.predict(u).mean()
ate = standardize_ate(nhefs)
print(f"Point estimate: {ate:.2f} kg")
rng = np.random.default_rng(42)
boot_estimates = []
for _ in range(1000):
idx = rng.integers(0, len(nhefs), len(nhefs))
boot_estimates.append(standardize_ate(nhefs.iloc[idx].reset_index(drop=True)))
boot_estimates = np.array(boot_estimates)
print(f"Bootstrap SE: {boot_estimates.std():.3f}")
print(f"95% Wald CI: ({ate - 1.96*boot_estimates.std():.2f}, "
f"{ate + 1.96*boot_estimates.std():.2f})")
print(f"95% Percentile CI: ({np.percentile(boot_estimates, 2.5):.2f}, "
f"{np.percentile(boot_estimates, 97.5):.2f})")
# E-value 계산 (RR 기반 — 체중 변화는 mean diff 라 위험비로 변환 필요)
# 여기서는 dichotomized outcome 으로 가정한 예시
def evalue_from_rr(rr):
return rr + np.sqrt(rr * (rr - 1))
# 가상 시나리오: RR = 1.4
print(f"E-value at RR=1.4: {evalue_from_rr(1.4):.2f}")
print(f"E-value at RR=2.0: {evalue_from_rr(2.0):.2f}")7 Tipping point 시각화
import matplotlib.pyplot as plt
# 시나리오: 미관측 교란 강도 ↑ 시 ATE 변화
unobs_strength = np.linspace(0, 3, 30)
ate_under_confounding = ate * np.exp(-unobs_strength / 2) # 가상 모형
plt.plot(unobs_strength, ate_under_confounding)
plt.axhline(0, color="gray", linestyle="--", label="ATE = 0 (null)")
plt.xlabel("Unmeasured confounding strength (log RR)")
plt.ylabel("Estimated ATE (kg)")
plt.title("Tipping point analysis — when does effect disappear?")
plt.legend(); plt.show()8 Hernan 의 마무리 메시지
“관찰 데이터에서 인과 효과 추정은 항상 비판에 열려 있다. 우리의 일은 가정을 명시하고 그 가정 아래에서 robust 한 답을 도출하는 것이다. 가정 자체의 옳음은 데이터로 풀 수 없다.”
이는 인과 분석의 본질적 한계이자 정직성의 표준이다.
9 한 줄 요약
추정값 신뢰성은 4 layer 의 평가 — 표본 무작위성(bootstrap), 식별 가정(검증 불가), sensitivity analysis(E-value), target trial alignment. NHEFS 의 3.5kg 결과는 모형·방법 일치성이 robust 하지만 미관측 교란에 대해 중간 정도의 sensitivity. 결과 보고는 점추정 + 신뢰구간 + sensitivity bound + 방법 일치성 + target trial alignment 의 5 단계 형식이 표준.
10 관련 주제
선행 지식
후속 주제
- G-estimation 과 SNMM — Ch.14
- 성향점수 — Ch.15
- 도구변수 — Ch.16
- Variable Selection 과 Doubly Robust — Ch.18
- Target Trial Emulation — Ch.22
다른 카테고리 연결
11 Negative Control 분석
진짜 효과가 0 인 outcome 또는 exposure 를 찾아 분석하는 절차. 효과가 0 으로 나오면 분석이 robust, 효과가 발견되면 미관측 교란이 있음을 시사.
- Negative control outcome: 처치가 영향을 줄 수 없는 outcome (예: 흡연 중단 → 머리카락 색)
- Negative control exposure: outcome 에 영향을 줄 수 없는 exposure (예: 출생 월 → 체중 변화)
직관 — 가짜 효과의 진단 도구: 실제 효과가 0 일 것이 도메인적으로 명백한 변수 쌍에서 우리 분석 방법이 0 을 정확히 추정한다면 미관측 교란이 적다는 증거. 0 이 아닌 큰 효과가 나오면 분석에 시스템적 편향이 있다는 경보 — sensitivity analysis 의 강력한 보완 도구.
직관 — NHEFS 에 적용한다면: 흡연 중단이 “출생 월” 같은 변수에 영향을 줄 수 없으니, 이 분석에서 “흡연 중단의 출생 월 효과” 를 추정해 0 에 가까운지 확인. 큰 효과가 발견되면 미관측 교란이 있음을 시사 — NHEFS 의 9 변수 보정이 부족할 수 있다는 경고.
12 Bayesian 인과 추론의 신뢰 표현
- Posterior 분포: 95% credible interval — 진짜 효과가 그 구간에 있을 사후 확률 95%.
- Sensitivity analysis 의 사전 분포 변화: 가정의 강건성 직접 정량화.
- Hierarchical model: 부분군 효과의 부분 풀링.
직관 — Bayesian 이 frequentist 보다 sensitivity 표현에 친화적인 이유: 사전 분포로 가정을 명시적으로 표현하므로, 다른 사전 분포로 같은 분석을 반복하면 가정의 영향을 직접 보여줄 수 있다. Frequentist 의 robust SE, bootstrap, E-value 보다 Bayesian 의 prior-to-posterior 변환이 직관적.
13 결과 보고의 실무 템플릿
[연구 질문] 흡연 중단이 10 년 후 체중 변화에 미치는 평균 인과 효과는?
[데이터] NHEFS 1971-1982, 1566 명 baseline 흡연자.
[식별 가정]
- 조건부 교환가능성: 9 개 baseline 변수가 모든 교란을 포함한다고 가정.
- 양의 확률: propensity 분포 [0.05, 0.95] 범위 — 양호.
- 일관성: A=1 (금연) 의 정의가 명확.
[방법] IPW 와 표준화의 두 도구로 추정. Bootstrap 95% CI.
[결과]
- IPW: 3.4 kg (95% CI 2.4, 4.5)
- 표준화: 3.5 kg (95% CI 2.6, 4.5)
- Doubly robust: 3.5 kg (95% CI 2.5, 4.5)
- 방법 일치: robust.
[Sensitivity]
- E-value: ~2.2 (중간 정도 robust)
- Negative control: (분석 가능 시 결과)
- Target trial alignment: baseline 정의의 selection bias 인지.
[결론] 흡연 중단이 평균 3.5 kg 체중 증가와 연관. 측정된 9 변수 보정 + 결과 모형 가정 +
약한 미관측 교란 가정 아래에서 robust.
직관 — 풍부한 보고가 의사결정의 기반: 점추정만 보면 사용자가 가정의 신뢰성을 평가할 정보 없다. 6 단계 (질문·데이터·가정·방법·결과·sensitivity·결론) 를 모두 명시하면 사용자가 도메인 판단으로 결과를 평가하고 신뢰 수준을 결정할 수 있다.