1 정의
처리 배정을 연구자가 통제하지 않는 연구 설계. 자연적으로 발생한 처리 배정을 관측하여 인과 효과를 추론한다.
- 역학: Observational Study (Cohort, Case-Control, Cross-sectional)
- IT: Quasi-experiment, Natural Experiment, Log Data Analysis
반사실적 양 \(E[Y^a]\)가 관측 데이터의 함수로 유일하게 표현될 때, 해당 인과 효과는 식별 가능(identifiable)하다.
식별을 위한 세 가지 조건:
- 일관성 (Consistency): \(A_i = a \Rightarrow Y_i = Y_i^a\)
- 조건부 교환가능성: \(Y^a \perp\!\!\!\perp A \mid L\)
- 양성 (Positivity): \(\Pr[A=a \mid L=l] > 0\) for all \(l\)
| 역학 용어 | IT 용어 | 비고 |
|---|---|---|
| Observational Study | Quasi-experiment, Log Analysis | 관찰 연구 |
| Unmeasured Confounding | Hidden Bias, Omitted Variable Bias | 측정되지 않은 교란 |
| Target Trial | Target Experiment | 에뮬레이트하려는 이상적 실험 |
| Ignorability | Unconfoundedness | 처리 배정 메커니즘 무시 가능 |
| Sensitivity Analysis | Robustness Check | 가정 위반 정도 평가 |
2 개념 및 원리
2.1 관찰 연구의 핵심 문제
이전 편에서 무작위 실험은 설계 단계에서 교환가능성을 보장한다는 것을 보았다. 관찰 연구에서는 처리 배정을 연구자가 통제하지 않는다.
- 의사가 중증 환자에게 우선적으로 이식을 배정
- 건강한 사람이 자발적으로 운동 프로그램에 참여
- 활발한 사용자가 자발적으로 새 기능을 사용
인과 추론이 가능하려면, 해당 연구를 조건부 무작위 실험의 유사체로 볼 수 있어야 한다 (Hernán & Robins, 2020, Ch.3).
2.2 세 가지 식별 조건
2.2.1 일관성 (Consistency)
\[ A_i = a \Rightarrow Y_i = Y_i^a \]
비교하려는 처리 값이 잘 정의된 개입(well-defined intervention)에 대응하며, 데이터의 처리 버전과 일치해야 한다.
위반 예시:
| 상황 | 문제 | 역학/IT |
|---|---|---|
| “운동이 건강에 좋은가?” | “운동”이 잘 정의되지 않음 (조깅? 웨이트?) | 역학 |
| “BMI 감량의 효과” | 식이 vs. 수술에 따라 결과가 다름 | 역학 |
| “다크 모드가 사용 시간에 영향을 미치는가?” | 다크 모드의 구현이 앱마다 다름 | IT |
2.2.2 조건부 교환가능성 (Conditional Exchangeability)
\[ Y^a \perp\!\!\!\perp A \mid L \quad \text{for all } a \]
\(L\)이 처리와 결과에 동시에 영향을 미치는 모든 변수를 포함해야 한다.
| 실험 유형 | 교환가능성 | 근거 |
|---|---|---|
| 주변 무작위 실험 | \(Y^a \perp\!\!\!\perp A\) | 동전 던지기로 보장 |
| 조건부 무작위 실험 | \(Y^a \perp\!\!\!\perp A \mid L\) | 층별 무작위 배정으로 보장 |
| 관찰 연구 | \(Y^a \perp\!\!\!\perp A \mid L\) | 가정. 검증 불가 |
핵심 차이: 관찰 연구에서는 \(L\)에 포함되지 않은 변수 \(U\)가 존재할 수 있다. 이를 측정되지 않은 교란(unmeasured confounding)이라 한다.
예시: 의사가 비흡연자에게 우선적으로 심장 이식을 배정. 흡연 여부 \(U\)가 측정되지 않았다면, \(L=1\)(중증) 층 내에서도 처리군(비흡연 비중 높음)과 대조군(흡연 비중 높음)의 예후가 다르다.
2.2.3 양성 (Positivity)
\[ \Pr[A = a \mid L = l] > 0 \quad \text{for all } l \text{ with } \Pr[L = l] > 0 \]
모든 공변량 층에서 각 처리 수준을 받을 확률이 0보다 크다.
| 위반 유형 | 설명 | 예시 |
|---|---|---|
| 구조적 양성 위반 | 특정 층에서 처리가 원리적으로 불가능 | 임산부에게 방사선 치료 불가 |
| 확률적 양성 위반 | 이론적으로 가능하나 표본에서 미관측 | 80세 이상 남성 중 처리 대상이 없음 |
구조적 위반은 해당 층을 분석에서 제외해야 한다. 확률적 위반은 표본 크기를 늘리거나 모수적 모형으로 외삽할 수 있으나 편향 위험이 있다.
2.3 세 조건 성립 시
관찰 연구를 조건부 무작위 실험과 논리적으로 동등하게 취급할 수 있다:
\[ E[Y^a] = \sum_l E[Y \mid A = a, L = l] \cdot \Pr[L = l] \]
| 무작위 실험 | 관찰 연구 | |
|---|---|---|
| 식별 조건 | 설계로 보장 | 가정해야 함 |
| 교환가능성 검증 | 불필요 | 검증 불가능 (반사실적 양) |
| 양성 | 설계로 보장 가능 | 특정 층에서 위반 가능 |
3 직관적 설명
3.1 “가정”과 “보장”의 차이
RCT (A/B 테스트): 동전을 던져서 배정했으니, 교환가능성이 성립한다는 것을 안다. 마치 집 열쇠를 내가 직접 잠갔으니 잠겼다는 것을 아는 것과 같다.
관찰 연구: 교란 변수를 충분히 측정했다고 믿는다. 마치 집에 돌아왔을 때 문이 잠겨 있는 것을 보고 “내가 잠갔겠지”라고 추측하는 것과 같다 — 실제로는 다른 사람이 잠갔을 수도 있다.
3.2 Target Trial: “어떤 실험을 흉내 내고 있는가?”
관찰 연구의 질을 높이는 핵심 전략은: “이 관찰 연구가 에뮬레이트하려는 무작위 실험은 무엇인가?”를 명시하는 것이다.
| 프로토콜 요소 | 목표 시험(Target Trial) | 관찰 연구 |
|---|---|---|
| 적격 기준 | 어떤 대상을 포함? | 동일하게 정의 |
| 처리 전략 | 구체적 개입은? | 동일하게 정의 |
| 처리 배정 | 무작위 배정 | 자연 발생 (+ 교란 보정) |
| 결과 | 무엇을 측정? | 동일하게 정의 |
| 분석 | ITT, per-protocol | 표준화, IPW |
IT에서의 예: “가격 인하가 구매율에 미치는 효과”를 관찰 데이터로 분석할 때, “가격을 무작위로 배정하는 A/B 테스트”가 target trial이다.
3.3 측정되지 않은 교란의 위험
관찰 데이터에서 “프리미엄 구독자가 무료 사용자보다 리텐션이 2배 높다”는 발견만으로 “프리미엄 구독을 시키면 리텐션이 2배가 된다”고 결론 내릴 수 없다.
프리미엄 구독자는 원래 제품에 대한 만족도가 높은 사람들(교란)이다. 이 교란을 통제하지 않으면 인과 효과를 과대추정한다.
4 왜 필요한가
4.1 A/B 테스트가 불가능한 상황
| 상황 | 이유 | IT 예시 |
|---|---|---|
| 윤리적 제약 | 의도적으로 나쁜 경험을 줄 수 없음 | 서비스 장애의 효과 분석 |
| 기술적 제약 | 무작위 배정이 불가능 | 플랫폼 전체 정책 변경 |
| 비용/시간 제약 | 실험에 수개월 소요 | 장기적 브랜드 효과 |
| 이미 발생한 사건 | 과거 데이터만 존재 | 과거 UI 변경의 장기 효과 |
이 모든 상황에서 관찰 연구의 식별 조건 프레임워크가 필요하다. 식별 조건을 명시적으로 검토하면:
- 어떤 변수를 측정해야 하는지 알 수 있다 (교환가능성)
- 어떤 집단에서 분석이 가능한지 알 수 있다 (양성)
- 처리를 어떻게 정의해야 하는지 알 수 있다 (일관성)
4.2 인과 추론 없이 발생하는 실패 사례
| 실패 사례 | 원인 | 결과 |
|---|---|---|
| “파워 유저가 매출의 80%를 차지하니 파워 유저를 늘리자” | 역인과 + 교란 | 비효율적 마케팅 투자 |
| “이탈 예측 모형으로 이탈 원인을 파악하자” | 예측 ≠ 인과 | 잘못된 이탈 방지 전략 |
| “상관관계가 높은 변수를 개선하면 KPI가 오르겠지” | 교란 무시 | 리소스 낭비 |
5 응용 분야
| 분야 | 역학/의학 | IT/비즈니스 | 주요 식별 전략 |
|---|---|---|---|
| 약물 역학 | EHR 기반 약물 효과 분석 | 로그 데이터 기반 기능 효과 분석 | PSM, IPW |
| 정책 평가 | 금연 정책의 건강 효과 | 가격 정책의 매출 효과 | DID, ITS |
| 교육 | 교수법의 성적 효과 | 온보딩 방식의 리텐션 효과 | IV, RDD |
| 경제학 | 최저임금의 고용 효과 | 수수료 인상의 거래량 효과 | DID, SCM |
5.1 분야별 선호 식별 전략
| 분야 | 선호 전략 | 이유 |
|---|---|---|
| 역학 | 교환가능성 가정 (표준화, IPW) | \(L\)을 상세히 측정하는 전통 |
| 경제학 | 도구변수, DID, RDD | 측정되지 않은 교란이 흔함 |
| IT 실험 | A/B 테스트 (무작위 배정) | 실험이 가능한 환경 |
| IT 관찰 | PSM, DID, Causal Forest | 로그 데이터 풍부 |
6 예시
6.1 역학: 심장 이식과 흡연 (측정되지 않은 교란)
설정:
- L: 중증도 (0=경증, 1=중증)
- U: 흡연 여부 (0=비흡연, 1=흡연) — 측정되지 않음
- A: 심장 이식 (의사가 비흡연자를 우선 배정)
- Y: 5일 사망
L=1(중증) 층 내에서:
- 처리군: 비흡연 비중 높음 → 예후 좋음
- 대조군: 흡연 비중 높음 → 예후 나쁨
L로만 보정하면 이식이 보호 효과를 가진 것처럼 보이지만,
실제로는 U(흡연)가 교란을 일으키고 있다.
결론: L로 조건부해도 교환가능성이 위반됨 (U가 누락)
6.2 IT: 프리미엄 구독의 인과 효과
| 분석 방법 | 추정 효과 | 문제점 |
|---|---|---|
| 단순 비교 | 프리미엄 유저 리텐션 80% vs. 무료 40% | 자기 선택 교란 |
| L로 보정 (사용 빈도, 가입 기간) | 프리미엄 +15%p | 측정되지 않은 교란 가능 |
| 할인 쿠폰 IV | 프리미엄 +8%p | LATE (국소 효과) |
| 가격 RDD | 프리미엄 +10%p | cutoff 근방에서만 유효 |
7 코드 예시
7.1 관찰 데이터에서의 교란과 보정
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
np.random.seed(42)
n = 5000
# --- 데이터 생성: 관찰 연구 ---
# L: 관측된 교란 변수
L = np.random.binomial(1, 0.5, n)
# U: 측정되지 않은 교란 변수
U = np.random.binomial(1, 0.4, n)
# A: 처리 — L과 U 모두에 의존 (자기 선택)
prob_treat = 0.2 + 0.3 * L + 0.2 * U
A = np.random.binomial(1, np.clip(prob_treat, 0, 1))
# Y: 결과 — 진짜 ATE = -0.08 (보호 효과)
true_ate = -0.08
prob_y = np.clip(0.15 + 0.25 * L + 0.15 * U + true_ate * A, 0, 1)
Y = np.random.binomial(1, prob_y)
df = pd.DataFrame({"L": L, "U": U, "A": A, "Y": Y})
# --- 1. Naive (no adjustment) ---
naive = df[df.A == 1].Y.mean() - df[df.A == 0].Y.mean()
# --- 2. L로만 보정 (측정되지 않은 교란 U 존재) ---
std_L = 0
for l in [0, 1]:
p_l = (df.L == l).mean()
e1 = df[(df.L == l) & (df.A == 1)].Y.mean()
e0 = df[(df.L == l) & (df.A == 0)].Y.mean()
std_L += (e1 - e0) * p_l
# --- 3. L + U로 보정 (이상적: 모든 교란 관측) ---
std_LU = 0
for l in [0, 1]:
for u in [0, 1]:
p_lu = ((df.L == l) & (df.U == u)).mean()
sub1 = df[(df.L == l) & (df.U == u) & (df.A == 1)]
sub0 = df[(df.L == l) & (df.U == u) & (df.A == 0)]
if len(sub1) > 0 and len(sub0) > 0:
std_LU += (sub1.Y.mean() - sub0.Y.mean()) * p_lu
print(f"True ATE: {true_ate:.4f}")
print(f"Naive (no adjustment): {naive:.4f} ← 교란 포함")
print(f"Standardized (L only): {std_L:.4f} ← U 누락으로 잔여 편향")
print(f"Standardized (L + U): {std_LU:.4f} ← 교란 완전 보정")7.2 양성 위반 진단
# 양성 조건 점검: 모든 L 층에서 처리/대조가 존재하는가?
print("\n=== 양성 조건 점검 ===")
for l in [0, 1]:
sub = df[df.L == l]
n_treat = (sub.A == 1).sum()
n_ctrl = (sub.A == 0).sum()
p_treat = sub.A.mean()
print(f"L={l}: n_treat={n_treat}, n_ctrl={n_ctrl}, P(A=1|L={l})={p_treat:.3f}")
if p_treat < 0.05 or p_treat > 0.95:
print(f" ⚠️ 양성 위반 위험: 극단적 처리 확률")7.3 민감도 분석: 측정되지 않은 교란의 영향
# 단순 민감도 분석: U의 효과 크기에 따른 추정 편향
print("\n=== 민감도 분석 ===")
print("gamma_U (U→Y 효과) | 추정 ATE (L만 보정) | 편향")
print("-" * 55)
for gamma_u in [0.0, 0.05, 0.10, 0.15, 0.20, 0.30]:
# U의 영향이 gamma_u일 때 예상 편향
# 단순 근사: bias ≈ gamma_u × (E[U|A=1] - E[U|A=0])
eu_diff = df[df.A == 1].U.mean() - df[df.A == 0].U.mean()
expected_bias = gamma_u * eu_diff
adjusted_ate = std_L - expected_bias
print(f" {gamma_u:.2f} | {adjusted_ate:+.4f} | {expected_bias:+.4f}")8 Ignorability와의 관계
Rosenbaum & Rubin (1983)의 용어:
| 용어 | 정의 |
|---|---|
| 약한 무시가능성 | \(Y^a \perp\!\!\!\perp A \mid L\) + \(\Pr[A=a \mid L] > 0\) |
| 강한 무시가능성 | \((Y^{a=0}, Y^{a=1}) \perp\!\!\!\perp A \mid L\) + \(\Pr[A=a \mid L] > 0\) |
“Ignorability”는 처리 배정 메커니즘을 무시해도 된다는 뜻이다. \(L\)로 조건부하면 배정 메커니즘이 잠재 결과에 대해 무정보적이므로 세부사항을 무시할 수 있다.
9 관련 주제
이전/다음
같은 카테고리
- 인과 추론 프레임워크 총정리
- 관찰 연구 설계 — 코호트, 케이스-컨트롤, 단면 연구
- 준실험적 설계 — ITS, RDD, Stepped Wedge
다른 카테고리
- DID 패널 데이터 — Difference-in-Differences
- 확률론 기초 — 조건부 독립의 이론적 배경
10 참고 문헌
- Hernán, M. A. & Robins, J. M. (2020). Causal Inference: What If, Ch.3. Chapman & Hall/CRC.
- Rosenbaum, P. R. & Rubin, D. B. (1983). The central role of the propensity score in observational studies for causal effects. Biometrika, 70(1), 41-55.
- Hernán, M. A. & Robins, J. M. (2016). Using big data to emulate a target trial when a randomized trial is not available. American Journal of Epidemiology, 183(8), 758-764.