1 정의
처리(treatment) \(A\)가 결과(outcome) \(Y\)에 미치는 인과적 효과를 데이터로부터 식별(identify)하고 추정(estimate)하는 통계적 방법론의 총칭이다.
- 역학: Causal Inference, Causal Epidemiology
- IT: Causal Analysis, Uplift Modeling, Treatment Effect Estimation
핵심 질문: “만약 \(A\)를 바꾸었다면 \(Y\)는 어떻게 달라졌을까?” (반사실적 질문)
| 역학 (Epidemiology) | IT/비즈니스 | 비고 |
|---|---|---|
| Treatment/Exposure | Variant/Treatment | 처치 |
| Outcome | Metric/KPI | 결과 변수 |
| Causal Effect | Treatment Effect, Lift | 인과 효과 |
| Confounding | Confounding/Bias | 교란 |
| Randomization | Random Assignment (A/B Test) | 무작위 배정 |
| Observational Study | Quasi-experiment, Log Analysis | 관찰 연구 |
“인과”라는 단어가 들어가지만, 인과 추론은 철학이 아니라 결측 데이터 문제를 다루는 통계학의 한 분야이다. 개체 \(i\)가 처리를 받았을 때의 결과 \(Y_i(1)\)와 받지 않았을 때의 결과 \(Y_i(0)\)를 모두 관측할 수 없다는 것이 핵심 난제이며, 이를 인과 추론의 근본 문제(fundamental problem of causal inference)라 부른다 (Hernán & Robins, 2020, Ch.1).
이 시리즈는 Hernán & Robins (2020) 표기법 \(Y^{a}\)를 주로 사용한다. Rubin Causal Model에서는 같은 개념을 \(Y_i(a)\)로 표기한다. \(Y^{a=1} = Y_i(1)\), \(Y^{a=0} = Y_i(0)\)이며, 개체 수준 인과 효과는 \(\tau_i = Y_i(1) - Y_i(0)\)이다.
2 개념 및 원리
2.1 잠재 결과 (Potential Outcomes)
개체 \(i\)에 대해 이원 처리 \(A \in \{0, 1\}\)가 있을 때:
- \(Y_i^{a=1}\) (또는 \(Y_i(1)\)): 처리를 받았을 때의 잠재 결과
- \(Y_i^{a=0}\) (또는 \(Y_i(0)\)): 처리를 받지 않았을 때의 잠재 결과
개체 수준 인과 효과: \(\tau_i = Y_i(1) - Y_i(0)\)
한 개체에 대해 두 잠재 결과를 동시에 관측할 수 없으므로 (근본 문제), 평균 인과 효과(Average Causal Effect, ACE = ATE)로 관심을 전환한다:
\[ \text{ATE} = E[Y^{a=1}] - E[Y^{a=0}] = E[Y_i(1) - Y_i(0)] \]
2.2 식별 조건 (Identifiability Conditions)
관찰 데이터에서 \(E[Y^{a}]\)를 \(E[Y \mid A=a]\)로 대체하려면 세 가지 조건이 필요하다 (Hernán & Robins, 2020, Ch.3):
| 조건 | 정의 | 직관 |
|---|---|---|
| 교환가능성 (Exchangeability) | \(Y^a \perp\!\!\!\perp A\) for all \(a\) | 처리군과 대조군이 교환 가능 |
| 양성 (Positivity) | \(\Pr[A=a \mid L=l] > 0\) for all \(l\) | 모든 층에서 처리·비처리 관측 가능 |
| 일관성 (Consistency) | \(A_i = a \Rightarrow Y_i = Y_i^a\) | 관측 결과 = 잠재 결과 |
세 조건이 모두 성립하면:
\[ E[Y^a] = \sum_l E[Y \mid A=a, L=l] \Pr[L=l] \quad \text{(standardization)} \]
2.3 두 대 프레임워크
| 측면 | Potential Outcomes (Rubin) | SCM/DAG (Pearl) |
|---|---|---|
| 인과 효과 정의 | \(E[Y^{a=1}] - E[Y^{a=0}]\) | \(E[Y \mid do(A=1)] - E[Y \mid do(A=0)]\) |
| 교란 식별 | 교환가능성 가정 | Backdoor criterion |
| 추정 전략 | IPW, g-formula, matching | do-calculus → 통계적 추정량 |
| 강점 | 추정량 도출이 명시적 | 교란 구조를 시각적으로 분석 |
실무에서는 DAG로 교란 구조를 분석하고, Potential Outcomes 프레임워크로 추정량을 도출하는 조합이 흔하다.
3 직관적 설명
3.1 상관 \(\neq\) 인과: 아이스크림과 익사
아이스크림 판매량과 익사 사고 수는 강한 양의 상관을 보인다. 아이스크림이 익사를 유발하는가? 아니다 — 공통 원인(confounder)인 기온이 둘 다 올린다.
관찰 데이터에서 발견한 \(\Pr[Y=1 \mid A=1] - \Pr[Y=1 \mid A=0]\)는 연관 차이(associational risk difference)이지, 인과 차이(causal risk difference) \(\Pr[Y^{a=1}=1] - \Pr[Y^{a=0}=1]\)가 아니다.
3.2 Simpson’s Paradox: 방향이 뒤집히는 교란
| 약물 A 성공률 | 약물 B 성공률 | |
|---|---|---|
| 전체 | 200/350 = 57% | 180/350 = 51% |
| 경증 | 80/100 = 80% | 230/270 = 85% |
| 중증 | 120/250 = 48% | 50/80 = 63% |
전체적으로 A가 좋아 보이지만, 모든 하위 그룹에서 B가 우월하다. A가 중증 환자에게 더 많이 처방되었기 때문이다. 교란 변수(중증도)를 통제하지 않으면 방향이 역전된 결론에 도달한다.
직관: A/B 테스트에서 무작위 배정이 중요한 이유는 “비교 가능한 집단”을 만들기 위해서이다. 무작위 배정 없이 비교하면, 건강한 사람만 약을 먹고 아픈 사람은 안 먹는 상황이 생긴다. 약 때문에 나아진 건지 원래 건강해서 나아진 건지 구분할 수 없다.
3.3 역사적 맥락
- 1923: Neyman이 잠재 결과 개념을 농업 실험에서 도입
- 1948: 최초의 현대적 RCT — 스트렙토마이신 결핵 임상시험 (BMJ)
- 1974: Rubin이 잠재 결과 프레임워크를 체계화
- 2000: Pearl이 SCM/DAG 프레임워크 확립
4 왜 필요한가
4.1 비즈니스 의사결정에서의 중요성
| 상황 | 인과 추론 없이 | 인과 추론으로 |
|---|---|---|
| 마케팅 캠페인 평가 | “캠페인 후 매출 올랐으니 효과 있음” (계절성 무시) | DID로 캠페인 효과와 시간 추세 분리 |
| 추천 알고리즘 변경 | “CTR이 오른 건 알고리즘 덕분” (신규 유저 유입 무시) | A/B 테스트로 알고리즘 효과만 분리 |
| 가격 인하 효과 | “할인하면 매출 증가” (할인받는 집단 특성 무시) | PSM/IPW로 가격 민감도 추정 |
4.2 A/B 테스트가 불가능한 상황
| 상황 | 이유 | 대안 |
|---|---|---|
| 윤리적 제약 | 위해한 처리를 무작위 배정 불가 | 관찰 데이터 + 인과 추론 |
| 기술적 제약 | 플랫폼 전체에 영향을 미치는 변경 | ITS, Switchback |
| 비용 제약 | 실험 기간/트래픽 부족 | 관찰 데이터 외삽 |
| 외적 타당도 | 실험 환경 ≠ 실제 환경 | Target trial emulation |
인과 추론은 A/B 테스트의 “대안”이 아니라, A/B 테스트를 포함하는 “상위 프레임워크”이다. RCT는 인과 추론의 한 방법이며, 가장 강력한 방법이지만 항상 가능한 것은 아니다.
5 응용 분야
| 분야 | 역학/의학 | IT/비즈니스 | 대표 방법 |
|---|---|---|---|
| 실험적 인과 추론 | RCT (Phase III 임상시험) | A/B 테스트 | 무작위 배정 |
| 관찰적 인과 추론 | 코호트 연구, 케이스-컨트롤 | 로그 분석, 행정 데이터 분석 | PSM, IPW, g-formula |
| 준실험적 설계 | 자연 실험, 정책 변경 분석 | 가격 변경, 지역별 출시 | DID, RDD, ITS |
| 도구변수 | 멘델리안 무작위화 | 할인 쿠폰 무작위 노출 | IV, 2SLS |
| 시간 변동 처리 | 장기 치료 프로토콜 | 동적 가격 책정, 추천 정책 | MSM, g-computation |
| 효과 이질성 | 하위 그룹 분석 (연령, 성별) | 세그먼트별 효과 분석 | Causal forest, Meta-learners |
6 예시
6.1 역학: 심장 이식과 5일 생존
Hernán & Robins (2020) Ch.1의 핵심 예시이다. 20명의 모집단에서:
| 처리 수준 | 사망자 수 | 사망 확률 |
|---|---|---|
| \(a = 1\) (전원 이식) | 10/20 | \(\Pr[Y^{a=1}=1] = 0.50\) |
| \(a = 0\) (전원 미이식) | 10/20 | \(\Pr[Y^{a=0}=1] = 0.50\) |
- Causal Risk Difference: \(0.50 - 0.50 = 0\) → 평균 인과 효과 없음
- Causal Risk Ratio: \(0.50 / 0.50 = 1.0\)
그러나 관측 데이터에서 처리군 사망률 \(7/13 = 0.54\), 대조군 사망률 \(3/7 = 0.43\)으로 연관이 존재한다. 교환가능성이 위반되었기 때문이다.
6.2 IT: 추천 알고리즘 A/B 테스트
| 지표 | 역학 대응 | Control (기존) | Treatment (신규) | 효과 |
|---|---|---|---|---|
| 구매 전환율 | Risk | 3.2% | 3.8% | |
| Lift | Relative Risk | 1.00 | 1.19 | RR = 1.19 |
| Uplift | Risk Difference | 0 | +0.6%p | RD = +0.006 |
| NNT | NNT | — | 167 | 167명당 1건 추가 구매 |
무작위 배정 → 교환가능성 보장 → 연관 차이 = 인과 차이.
7 코드 예시
7.1 관측 데이터에서 교란 확인: 연관 vs. 인과
import numpy as np
import pandas as pd
# Hernán & Robins Table 1.1 스타일: 20명 모집단
np.random.seed(42)
n = 2000
# L: 교란 변수 (0=건강, 1=중증)
L = np.random.binomial(1, 0.6, n)
# A: 처리 — 중증일수록 처리 확률 높음 (교란)
prob_treat = 0.3 + 0.4 * L # L=0: 0.3, L=1: 0.7
A = np.random.binomial(1, prob_treat)
# Y: 결과 — L이 직접 영향, A의 진짜 인과 효과 = -0.10 (보호 효과)
true_ate = -0.10
prob_y = np.clip(0.2 + 0.3 * L + true_ate * A, 0, 1)
Y = np.random.binomial(1, prob_y)
df = pd.DataFrame({"L": L, "A": A, "Y": Y})
# --- 연관 지표 (교란 포함) ---
naive_rd = df[df.A == 1].Y.mean() - df[df.A == 0].Y.mean()
print(f"Naive Risk Difference (association): {naive_rd:.3f}")
# 양수로 나올 수 있음 — 교란 때문에 처리가 해로워 보임
# --- 표준화 (교란 보정) ---
standardized = 0.0
for l_val in [0, 1]:
p_l = (df.L == l_val).mean()
for a_val in [0, 1]:
sub = df[(df.L == l_val) & (df.A == a_val)]
if a_val == 1:
standardized += sub.Y.mean() * p_l
else:
standardized -= sub.Y.mean() * p_l
print(f"Standardized Risk Difference (causal): {standardized:.3f}")
print(f"True ATE: {true_ate:.3f}")7.2 IPW 추정
from sklearn.linear_model import LogisticRegression
# 성향 점수 추정
ps_model = LogisticRegression()
ps_model.fit(df[["L"]], df["A"])
ps = ps_model.predict_proba(df[["L"]])[:, 1]
# IPW 가중치
weights = np.where(A == 1, 1 / ps, 1 / (1 - ps))
# 가중 평균으로 ATE 추정
y1_ipw = np.average(Y[A == 1], weights=weights[A == 1])
y0_ipw = np.average(Y[A == 0], weights=weights[A == 0])
ate_ipw = y1_ipw - y0_ipw
print(f"IPW ATE estimate: {ate_ipw:.3f}")8 방법론 지도
8.1 설계 기반 (Design-Based)
| 방법 | 핵심 아이디어 | 적용 조건 |
|---|---|---|
| RCT | 무작위 배정으로 교환가능성 보장 | 실험이 가능한 경우 |
| Difference-in-Differences (DID) | 처리 전후 × 처리/대조 이중 차이 | 평행 추세 가정 |
| Regression Discontinuity (RDD) | 할당 변수의 cutoff 주변 국소 무작위화 | 연속적 할당 변수 |
| Interrupted Time Series (ITS) | 개입 전후 시계열 추세 비교 | 명확한 개입 시점 |
| Instrumental Variables (IV) | 처리에만 영향을 주는 도구변수 | 유효한 도구변수 존재 |
8.2 모형 기반 (Model-Based)
| 방법 | 핵심 아이디어 | 적용 조건 |
|---|---|---|
| Outcome Regression | \(E[Y \mid A, L]\) 모형으로 교란 보정 | 결과 모형이 올바르게 지정 |
| IP Weighting (IPW) | 처리 확률의 역수로 가중 | 처리 모형이 올바르게 지정 |
| Standardization / g-formula | \(\sum_l E[Y \mid A=a, L=l] P(L=l)\) | 결과 모형 + positivity |
| Doubly Robust (DR) | 결과 OR 처리 모형 중 하나만 맞아도 일치 | 둘 중 하나의 정확한 지정 |
9 이 시리즈의 구성 (로드맵)
Hernán & Robins (2020) Causal Inference: What If의 3부 구성을 뼈대로 한다.
| 편 | 주제 | Hernán & Robins 대응 | 상태 |
|---|---|---|---|
| 01 | 인과 추론 개요 (이 글) | — | 완료 |
| 02 | 인과 효과의 정의와 잠재 결과 | Part I, Ch.1 | 완료 |
| 03 | 무작위 실험과 교환가능성 | Part I, Ch.2 | 완료 |
| 04 | 관찰 연구와 식별 조건 | Part I, Ch.3 | 완료 |
| 05 | 효과 수정과 상호작용 | Part I, Ch.4-5 | 완료 |
| 06 | DAG와 인과 다이어그램 | Part I, Ch.6 | 완료 |
| 07 | 교란 | Part I, Ch.7 | 완료 |
| 08 | 선택 편향 | Part I, Ch.8 | 완료 |
| 09 | 측정 오차와 랜덤 변동 | Part I, Ch.9-10 | 완료 |
| 10 | IP 가중치와 주변 구조 모형 | Part II, Ch.12 | 예정 |
| 11 | 표준화와 g-formula | Part II, Ch.13 | 예정 |
| 12 | 성향점수와 결과 회귀 | Part II, Ch.15 | 예정 |
| 13 | 도구변수 | Part II, Ch.16 | 예정 |
| 14 | 인과 생존 분석 | Part II, Ch.17 | 예정 |
| 15 | 시간 변동 처리와 G-methods | Part III, Ch.19-21 | 예정 |
| 16 | Target Trial Emulation | Part III, Ch.22 | 예정 |
| 17 | 인과 매개 분석 | Part III, Ch.23 | 예정 |
10 관련 주제
선행 지식 (Statistics)
같은 카테고리 (Experimentation)
- 인과 추론 프레임워크 총정리 — 실험 설계 맥락에서의 인과 추론 방법론 비교
- A/B 테스트 개요 — RCT의 IT 적용
- A/B 테스트의 핵심 메커니즘
다른 카테고리 연결
- 통계학 개요
- 생존 분석 개요
- DID 패널 데이터 — 종단 데이터의 DID 적용
11 참고 문헌
- Hernán, M. A. & Robins, J. M. (2020). Causal Inference: What If. Chapman & Hall/CRC.
- Pearl, J. (2009). Causality: Models, Reasoning, and Inference (2nd ed.). Cambridge University Press.
- Imbens, G. W. & Rubin, D. B. (2015). Causal Inference for Statistics, Social, and Biomedical Sciences. Cambridge University Press.
- Angrist, J. D. & Pischke, J. S. (2009). Mostly Harmless Econometrics. Princeton University Press.