1 정의
Confounded 관계에서 인과 효과를 추정하는 도구 (Buisson, 2021, Ch.12).
CD:
U (unobserved confounder)
↓ ↓
Z → X ────────→ Y
(instrument) (treatment) (outcome)
3 조건:
- Relevance: \(Z\) 가 \(X\) 에 영향 (Cov(Z, X) ≠ 0)
- Exclusion: \(Z\) 가 \(Y\) 에 직접 영향 X (오직 \(X\) 통해)
- Independence: \(Z\) 와 \(U\) (confounder) 가 독립
조건 만족 시 Z 의 randomness 가 X → Y 인과 효과 식별 가능.
수식:
\[ \beta_{XY} = \frac{\text{Cov}(Z, Y)}{\text{Cov}(Z, X)} \]
비유: 음악 효과 측정.
- 음악 (X) 이 집중력 (Y) 에 영향 (가설)
- 그러나 mood (U) 가 양쪽에 영향 (confounder)
- 단순 비교 (음악 들음 vs 안 들음) → confounded
해결: 무작위 알람 (instrument Z).
- 알람이 음악 시작 결정 (relevance)
- 알람 자체가 집중력에 직접 영향 X (exclusion)
- 알람이 mood 와 독립 (randomization)
알람의 무작위성으로 음악 → 집중력 인과 효과 정확 추정.
→ IV 가 randomness 의 부분적 활용.
2 3 조건 자세히
2.1 Relevance
비유: 알람의 음악 시작 비율.
- 알람 100% → 음악 (relevance 강함)
- 알람 60% → 음악 (relevance 중간)
- 알람 5% → 음악 (relevance 매우 약함)
Z 의 X 에 대한 영향이 약하면:
- Stage 1 의 X̂ 가 noise 많음
- Stage 2 의 추정 unstable
- IV 결과 unreliable
→ 강한 instrument 가 IV 의 첫 조건.
2.2 Exclusion
\[ P(Y | X, Z) = P(Y | X) \quad \text{(Z 가 X 통제 후 Y 와 독립)} \]
또는 CD 에서 Z → Y 직접 화살표 없음.
검증의 어려움:
- 통계적 검증 불가능 (Z 와 Y 의 상관 = relevance 효과 + direct 효과 합계)
- 오직 도메인 직관으로 점검
분석가의 자문:
- “Z 가 X 외 다른 path 로 Y 에 영향 줄 가능성?”
- “Z 가 Y 에 직접 영향?”
AirCnC 사례:
- Z = SOP 무작위 배정
- Y = M6Spend
- “SOP 가 customer 의 M6Spend 에 직접 영향?” — 가능 path:
- SOP 가 reps 의 cross-sell 능력 향상 → 추가 구매 (직접 path) → 위반
- SOP 가 reps 의 사기 향상 → 더 좋은 service → 다른 메커니즘 (간접) → exclusion 미세 위반
분석가의 결정:
- 도메인 인터뷰로 가능 path 점검
- Sensitivity analysis (가정 위반 시 결과 변화)
- 위반 의심 시 IV 결과의 한계 명시
2.3 Independence (Randomization)
\[ Z \perp U \]
즉 instrument 가 confounder 와 독립.
검증:
- Z 가 무작위 배정 → 자동 만족
- Z 가 자연 실험 (natural experiment) → 도메인 검증 필요
자연 instrument 의 함정:
- “거리 (집과 학교의)” 를 instrument 로 (학생의 출석에 영향)
- 그러나 거리가 가족 소득과 상관 (confounder)
- → Independence 위반
무작위 instrument:
- SOP 무작위 배정
- 무작위 자체가 confounder 와 독립 보장
분석가의 default:
- 가능하면 randomized instrument
- 자연 instrument 시 independence 강한 증거 필요
3 2SLS — Two-Stage Least Squares
3.1 절차
Stage 1: \(X\) 를 \(Z\) 로 회귀
\[ \hat{X} = \alpha_0 + \alpha_Z \cdot Z \]
Stage 2: \(Y\) 를 \(\hat{X}\) 로 회귀
\[ Y = \beta_0 + \beta_X \cdot \hat{X} + \epsilon \]
\(\beta_X\) = causal effect of \(X\) on \(Y\).
Stage 1 의 의미:
- \(Z\) 의 변동만 활용해 \(X\) 의 일부 (\(\hat{X}\)) 추출
- \(\hat{X}\) 가 confounder \(U\) 와 독립 (Z 의 randomness 덕분)
Stage 2 의 의미:
- 깨끗한 \(\hat{X}\) → \(Y\) 회귀
- Confounding 제거된 효과 추정
수식 도출:
\[ \beta_X = \frac{\text{Cov}(\hat{X}, Y)}{\text{Var}(\hat{X})} = \frac{\text{Cov}(Z, Y)}{\text{Cov}(Z, X)} \]
→ Wald estimator 와 같음.
3.2 Python 코드
3.3 Manual 2SLS
Library 없을 때:
import statsmodels.formula.api as smf
# Stage 1
m_s1 = smf.ols("CSAT ~ sop_treatment", data=df).fit()
df["CSAT_hat"] = m_s1.predict()
# Stage 2
m_s2 = smf.ols("M6Spend ~ CSAT_hat", data=df).fit()
print(m_s2.summary())주의: Standard error 가 부정확 (manual 의 한계). linearmodels 가 정확한 SE 제공.
4 AirCnC 사례
4.1 비즈니스 문제
4.2 CSAT → M6Spend
분석 질문: “CSAT 가 M6Spend 에 미치는 인과 효과?”
기존 데이터:
- Customer 별 CSAT (0~10), M6Spend ($)
- Confounders: customer wealth, loyalty, 등 (미관측)
단순 회귀:
M6Spend ~ CSAT
beta = $80/point (overestimate)
이 추정이 confounded.
해결: SOP 무작위 배정 (Ch.10) 을 instrument 로.
4.3 IV 분석
4.4 단계별
import statsmodels.formula.api as smf
from linearmodels.iv import IV2SLS
# Stage 1 점검 (Relevance)
m_s1 = smf.ols("CSAT ~ sop_treatment", data=df).fit()
print(f"F-statistic: {m_s1.fvalue}") # > 10?
# IV 추정
iv_result = IV2SLS(
dependent=df["M6Spend"],
exog=None,
endog=df[["CSAT"]],
instruments=df[["sop_treatment"]],
).fit()
# OLS 비교
m_ols = smf.ols("M6Spend ~ CSAT", data=df).fit()
print(f"\n=== OLS (confounded): {m_ols.params['CSAT']:.2f}")
print(f"=== IV (causal): {iv_result.params['CSAT']:.2f}")가상 결과:
F-statistic: 50 (relevance OK)
OLS: $80/point (confounded)
IV: $45/point (causal)
차이 35 의 의미:
- OLS 의 confounding bias = +$35
- 즉 confounders (loyalty, wealth) 가 CSAT 의 효과를 35 만큼 inflate
- IV 가 진짜 인과 효과 = $45
비즈니스 함의:
- “CSAT 1 점 향상 의 진짜 ROI = $45”
- 잘못된 OLS 사용 시 ROI 과대 추정
- 정책 (CSAT 향상 program) 의 ROI 정확 계산
→ IV 의 가치는 인과 효과의 정확한 측정.
5 Weak Instrument 함정
5.1 진단
Stage 1 의 F-statistic 으로 strength 판단:
F > 10: 강한 instrument (안전)
F < 10: weak instrument (위험)
F < 5: 매우 weak (절대 사용 안 함)
Weak instrument 의 결과:
- \(\hat{X}\) 가 noise 많음
- IV 추정 의 standard error 폭증
- 95% CI 가 매우 넓음
- Causal estimate 의 robustness ↓
비유: 흐릿한 망원경.
- 강한 instrument: 선명한 망원경 (X̂ 가 X 의 정확한 부분)
- Weak instrument: 흐릿한 망원경 (X̂ 가 noise 많음)
흐릿하면:
- Y 와의 관계 추정 부정확
- CI 매우 넓음
- 의사결정 어려움
분석가의 default:
- F > 10 확인 후 IV 사용
- F < 10 → 다른 instrument 또는 도구 변경
5.2 해결
5.3 강한 instrument 찾기
1. 도메인 직관: 어떤 변수가 X 에 큰 영향?
2. 무작위 배정 (가능 시): randomized intervention
3. Multiple instruments: 여러 instrument 결합
AirCnC 사례:
- SOP 무작위 배정이 강한 (F = 50)
- Independence + Relevance 모두 강함
- 표준 IV 적용 가능
6 IV 의 함정
6.1 Exclusion 위반
6.2 CSAT 외 다른 path
만약 SOP 가 다른 메커니즘으로 M6Spend 영향:
SOP → Reps' cross-sell skill → M6Spend
(CSAT 와 무관 path)
이 path 가 있으면 Exclusion 위반:
- IV 추정이 (CSAT 효과 + cross-sell 효과) 의 합
- Causal CSAT 효과 안 받음
해결:
- 도메인 인터뷰로 path 식별
- Sensitivity analysis: “만약 cross-sell 효과 = $10 이면 진짜 CSAT 효과 = ?”
- 보고서에 한계 명시
6.3 부분 모집단 효과
6.4 LATE (Local Average Treatment Effect)
IV 가 추정하는 효과는 ATE (Average Treatment Effect) 가 아닌 LATE.
LATE = “Compliers (Z 가 변하면 X 가 변하는 사람들) 의 효과”.
- Always-takers (Z 무관 X = 1): IV 추정에 미반영
- Never-takers (Z 무관 X = 0): IV 추정에 미반영
- Compliers: IV 추정의 대상
→ IV 는 모집단의 일부에만 적용. ATE 가정 시 추가 가정 필요.
6.5 직관 — LATE vs ATE
비유: 약 처방 실험.
- 처방 받음 + 약 먹음 = compliers
- 처방 받음 + 약 안 먹음 = never-takers
- 처방 안 받음 + 약 어디서든 구해 먹음 = always-takers
IV 가 측정하는 효과:
- 처방 → 복용 → 회복 의 chain
- Compliers 만의 효과
- Always-takers 와 never-takers 는 measure 안 됨
비즈니스 함의:
- “정책 변경 시 compliers 의 효과만 변함”
- 다른 그룹에 일반화 시 주의
→ LATE 의 한계 인식.
7 시뮬레이션
7.1 OLS vs IV 비교
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
np.random.seed(42)
n = 5000
# Confounder
loyalty = np.random.normal(0, 1, n)
# Instrument
sop = np.random.binomial(1, 0.5, n)
# X (CSAT)
csat = 7 + 0.5 * sop + 0.8 * loyalty + np.random.normal(0, 0.5, n)
# Y (M6Spend)
true_beta = 45
m6spend = 100 + true_beta * csat + 50 * loyalty + np.random.normal(0, 30, n)
df = pd.DataFrame({"csat": csat, "m6spend": m6spend, "sop": sop})
# OLS
m_ols = smf.ols("m6spend ~ csat", data=df).fit()
# Manual 2SLS
m_s1 = smf.ols("csat ~ sop", data=df).fit()
df["csat_hat"] = m_s1.predict()
m_s2 = smf.ols("m6spend ~ csat_hat", data=df).fit()
print(f"True beta: {true_beta}")
print(f"OLS: {m_ols.params['csat']:.2f}")
print(f"IV: {m_s2.params['csat_hat']:.2f}")
print(f"OLS bias: {m_ols.params['csat'] - true_beta:.2f}")
print(f"IV bias: {m_s2.params['csat_hat'] - true_beta:.2f}")7.2 직관 — 결과의 검증
예상:
- True: 45
- OLS: ~80 (large bias)
- IV: ~45 (정확)
이 시뮬레이션이 IV 의 가치 직접 입증.
비즈니스 분석가는:
- 정책 결정 (CSAT 향상) 의 진짜 ROI 측정
- OLS 만 보면 정책 효과 과대 추정
- IV 로 정확
8 종합 — IV 의사결정
8.1 분석가의 default
1. 인과 추론 필요 + confounding 의심
2. Instrument 후보 식별
- 무작위 배정 (가능 시)
- 자연 실험 (natural variation)
- 도구 변수 (외부 shock)
3. 3 조건 점검
- Relevance: F > 10
- Exclusion: 도메인 인터뷰
- Independence: 무작위 또는 외생성
4. 2SLS 실행
- linearmodels.iv (Python)
- ivreg (R)
5. OLS 와 비교
- 큰 차이 → confounding 큼
- 작은 차이 → confounding 작음
6. 보고
- LATE 의 한계 명시
- Exclusion 가정 검증
- Sensitivity analysis
이 워크플로가 IV 분석의 표준.
9 관련 주제
9.1 Ch.12 의 형제 글 (Ch.12 완결)
9.2 이전 챕터
- E-BUI9-2 Bootstrap 검정력 + ITT/CACE — CACE = IV 의 응용
9.3 Phase D (Hernan) cross-link
- Causal_Inference/14 (예정) IV — IV 의 학술 처리
9.4 카테고리 진입점
- Experimentation 학습 로드맵 — 11 Phase × 7 교재 매핑
10 Phase E 완결 (44/44)
E-BUI12-4 의 완성으로 Phase E (행동 데이터 인과분석, Buisson) 의 44 편 모두 완료.
| 챕터 | 주제 | 편수 |
|---|---|---|
| Ch.1 | Causal-Behavioral Framework | 4 |
| Ch.2 | Behavioral Data | 4 |
| Ch.3 | Causal Diagrams Intro | 4 |
| Ch.4 | Building DAGs | 4 |
| Ch.5 | Deconfounding | 3 |
| Ch.6 | Missing Data | 5 |
| Ch.8 | Experimental Design | 4 |
| Ch.9 | Stratified Randomization | 3 |
| Ch.10 | Cluster Randomization | 4 |
| Ch.11 | Moderation | 4 |
| Ch.12 | Mediation·IV | 5 |
| 총 | - | 44 |
다음 단계: Phase F (Kohavi A/B Testing) 또는 Phase B/G/H 진행.