도구변수와 2SLS — IV 의 3 조건과 AirCnC CSAT 사례 (Buisson Ch.12.4)

Instrumental Variable 의 정의·가정·추정, 2-Stage Least Squares 자세히

Buisson (2021) Ch.12 의 IV 절을 자세히 정리한다. Instrumental Variable 의 정의와 3 조건 (Relevance, Exclusion, Independence), 2SLS 추정의 단계별 도출, AirCnC 의 SOP 무작위 배정을 instrument 로 활용한 CSAT → M6Spend 인과 효과 추정, Weak Instrument 진단, IV 의 한계와 함정을 단계별로 시연한다.

Experimentation
Causal Inference
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: Instrumental Variable (IV)

Confounded 관계에서 인과 효과를 추정하는 도구 (Buisson, 2021, Ch.12).

CD:

   U (unobserved confounder)
   ↓             ↓
Z → X ────────→ Y
   (instrument) (treatment) (outcome)

3 조건:

  1. Relevance: \(Z\)\(X\) 에 영향 (Cov(Z, X) ≠ 0)
  2. Exclusion: \(Z\)\(Y\) 에 직접 영향 X (오직 \(X\) 통해)
  3. Independence: \(Z\)\(U\) (confounder) 가 독립

조건 만족 시 Z 의 randomness 가 X → Y 인과 효과 식별 가능.

수식:

\[ \beta_{XY} = \frac{\text{Cov}(Z, Y)}{\text{Cov}(Z, X)} \]

직관 — IV 의 본질

비유: 음악 효과 측정.

  • 음악 (X) 이 집중력 (Y) 에 영향 (가설)
  • 그러나 mood (U) 가 양쪽에 영향 (confounder)
  • 단순 비교 (음악 들음 vs 안 들음) → confounded

해결: 무작위 알람 (instrument Z).

  • 알람이 음악 시작 결정 (relevance)
  • 알람 자체가 집중력에 직접 영향 X (exclusion)
  • 알람이 mood 와 독립 (randomization)

알람의 무작위성으로 음악 → 집중력 인과 효과 정확 추정.

→ IV 가 randomness 의 부분적 활용.

2 3 조건 자세히

2.1 Relevance

정의

\[ \text{Cov}(Z, X) \neq 0 \]

또는 Stage 1 회귀의 F-statistic > 10 (rule of thumb).

검증:

# Stage 1
m_stage1 = smf.ols("X ~ Z", data=df).fit()
print(f"F-statistic: {m_stage1.fvalue}")

F < 10 → Weak instrument (다음 절).

직관 — 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 효과 합계)
  • 오직 도메인 직관으로 점검
직관 — Exclusion 의 검증

분석가의 자문:

  • “Z 가 X 외 다른 path 로 Y 에 영향 줄 가능성?”
  • “Z 가 Y 에 직접 영향?”

AirCnC 사례:

  • Z = SOP 무작위 배정
  • Y = M6Spend
  • “SOP 가 customer 의 M6Spend 에 직접 영향?” — 가능 path:
    1. SOP 가 reps 의 cross-sell 능력 향상 → 추가 구매 (직접 path) → 위반
    2. SOP 가 reps 의 사기 향상 → 더 좋은 service → 다른 메커니즘 (간접) → exclusion 미세 위반

분석가의 결정:

  • 도메인 인터뷰로 가능 path 점검
  • Sensitivity analysis (가정 위반 시 결과 변화)
  • 위반 의심 시 IV 결과의 한계 명시

2.3 Independence (Randomization)

정의

\[ Z \perp U \]

즉 instrument 가 confounder 와 독립.

검증:

  • Z 가 무작위 배정 → 자동 만족
  • Z 가 자연 실험 (natural experiment) → 도메인 검증 필요
직관 — Randomization 의 가치

자연 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\).

직관 — 2SLS 의 작동

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 코드

linearmodels 사용
from linearmodels.iv import IV2SLS

iv_result = IV2SLS(
    dependent=df["M6Spend"],
    exog=None,
    endog=df[["CSAT"]],
    instruments=df[["sop_treatment"]],
).fit()
print(iv_result.summary)

Output:

                  Coefficient   Std.Error
CSAT              45.0          12.0

해석:

  • \(\beta_X = 45\) → CSAT 1 점 ↑ → M6Spend +$45 (causal)

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)
직관 — OLS vs IV 의 의미

차이 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 진단

F-statistic < 10

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 ↓
직관 — Weak Instrument 의 비유

비유: 흐릿한 망원경.

  • 강한 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 이전 챕터

9.4 카테고리 진입점


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 진행.

Subscribe

Enjoy this blog? Get notified of new posts by email: