관찰자료에서 인과효과를 추정하는 잠재 결과와 IV·성향 점수 매칭
잠재 결과 프레임워크, 도구 변수, 성향 점수 매칭을 바탕으로 관찰자료의 인과효과를 추정하고 가정을 검증하는 방법을 정리한다.
2026-08-14 · 최초 발행 2024-04-29
관찰자료에서는 처치 여부가 무작위로 정해지지 않는 경우가 많다. 정책, 마케팅, 의료 개입의 효과를 추정할 때는 이 할당 편향을 다루기 위한 식별 가정과 검증 절차가 필요하다.
관측값 하나로는 보이지 않는 반사실
잠재 결과 프레임워크에서는 단위 (i)의 처치 상태별 결과를 (Y_i(1)), (Y_i(0))로 둔다. 실제로 관측되는 값은 다음과 같다.
(Y = T_i·Y(1) + (1−T_i)·Y(0))
여기서 처치 변수는 (T_i ∈ {0,1})이다. 같은 단위에서 두 잠재 결과를 동시에 관측할 수 없다는 점이 인과추론의 출발점이다.
평균 처리 효과는 (ATE = E[Y(1) − Y(0)]), 처치군 평균 처리 효과는 (ATT = E[Y(1) − Y(0)|T=1])로 정의한다. 공변량 (X=x)에 따라 효과가 달라지는 경우에는 (CATE = E[Y(1) − Y(0)|X=x])를 사용한다.
이 해석은 SUTVA(간섭 없음·일관성), 교란 없는성/가시성(ignorability: ((Y(1),Y(0)) ⟂ T | X)), overlap((0 < P(T=1|X) < 1)) 가정에 의존한다. 무작위화가 가능하면 처치 할당 자체가 식별 근거가 되고, 그렇지 않으면 관측 가능한 공변량에 조건부 독립성을 기대할 수 있어야 한다.
산출물은 ATE·ATT·CATE 추정치, 신뢰구간, 그리고 가정 위반 신호다.
미관측 교란을 다루는 도구 변수의 조건
도구 변수 (Z)는 처치 (T)에 영향을 주어야 한다(relevance). 동시에 결과 (Y)에는 처치를 거치지 않고 직접 영향을 주지 않아야 하며(exclusion restriction), 교란과 독립이어야 한다(independence).
모노토니시티(monotonicity)가 성립하면 LATE(Local Average Treatment Effect)를 추정할 수 있다. 대표적인 추정 방식은 2SLS와 Wald 추정이다.
2SLS는 먼저 (T ~ Z,X)를 적합해 예측치 (\hat{T})를 만들고, 이어서 (Y ~ \hat{T},X) 회귀를 수행한다. 도구의 relevance는 1단계 유의성으로 점검하며, 배제제약은 도메인 지식과 플라시보 테스트로 검토한다. independence는 설계와 외생성 논증으로 뒷받침해야 한다.
약한 도구 변수(weak instrument)는 추정을 불안정하게 만들 수 있다. 1단계 F-통계량은 > 10을 권고하며, 약한 도구가 의심되면 Anderson–Rubin, LIML 같은 강건 추정을 고려한다. 결과는 LATE 또는 구조적 파라미터로 해석하되, 적용 범위를 함께 명시해야 한다.
성향 점수로 공변량 차이를 맞추는 방법
성향 점수는 (e(X)=P(T=1|X))이며, 고차원 공변량을 1차원으로 축약한다. 동일한 (e(X)) 안에서는 공변량 균형(balancing) 성질을 기대할 수 있다.
성향 점수 매칭은 common support/overlap 영역에서 최근접, 칼리퍼, 커널 방식으로 처치군과 대조군을 연결한다. 매칭 이후에는 SMD(Standardized Mean Difference) < 0.1을 기준으로 균형을 평가하는 방식을 권장한다. KS 테스트도 진단에 활용할 수 있다.
이 방법은 무작위 배정이 불가능한 상황에서 선택편향을 완화하지만, 미관측 교란에는 취약하다. overlap이 약한 구간은 trimming으로 제외할 수 있고, 매칭 뒤 가중 회귀를 적용해 ATE 또는 ATT를 보정할 수 있다. 산출물은 매칭 샘플 또는 가중치, 균형 리포트, 효과 추정치와 불확실성이다.
추정 전에 확인할 데이터와 가정
분석용 데이터는 동일 기간·정의를 갖는 스냅샷으로 확보한다. 결측과 이상치를 전처리한 뒤 overlap, SMD, VIF, 공선성을 확인한다.
IV 분석에서는 1단계 F-통계량을 점검하고, 위약(placebo)·감도분석(Γ-분석)을 수행한다. PSM에서는 성향 점수 분포의 중첩과 매칭 후 균형을 다시 확인해야 한다.
overlap이 성립하지 않으면 trimming 또는 재표집을 검토한다. 도구 변수가 약하면 대안 도구를 찾거나 설계를 변경해야 한다. 이 과정을 데이터 추출 → 전처리 → 식별·추정 → 진단·감도 → 리포팅 흐름으로 자동화하면 반복 분석의 일관성을 높일 수 있다.
특성 정의, 코드, 모형, 가정은 버전 관리 대상이다. 주기적으로 균형과 약한 IV 신호를 점검하고 데이터 분포 드리프트를 감지하는 운영 체계도 필요하다.
방법별 선택 기준과 리스크
| 방법 | 성능(효율성) | 확장성(대규모) | 일관성(가정 충족 시) | 안정성(노이즈 민감도) | 운영 편의 | 핵심 리스크 |
|---|---|---|---|---|---|---|
| 잠재 결과(조건부 독립) | 높음(풍부한 X) | 높음(병렬화 용이) | 높음 | 중간(모형 미스펙에 민감) | 높음 | 미관측 교란 |
| 도구 변수(IV) | 중간(1단계에 좌우) | 중간(모형 복잡성) | 높음(LATE) | 낮음(약한 IV 시 불안정) | 중간 | 배제제약 위반, 약한 IV |
| 성향 점수 매칭(PSM) | 중간(샘플 손실) | 중간(매칭 비용) | 중간~높음 | 중간 | 높음(해석 용이) | overlap 부족, 잔여 편향 |
관찰자료 분석에서의 적용 맥락
마케팅 캠페인이 지역이나 고객군마다 비무작위로 집행됐다면 할당 편향이 생긴다. 성향 점수를 추정한 뒤 최근접+칼리퍼 매칭으로 SMD<0.1을 달성하고 ATT를 보고할 수 있다. 가중치와 아웃컴 회귀를 병행하는 DR(Doubly Robust)은 편향과 분산의 절충안이 될 수 있다. 시즌성과 동시 프로모션은 통제해야 하며, overlap 확보를 위해 하위군을 나눌 수 있다.
가격 정책 평가에서는 원가 충격(환율·원자재)만이 가격을 움직이고 수요 쇼크와 독립인 상황을 가정할 수 있다. 원가 충격을 (Z)로 선택하고 1단계 강도 검증(F>10) 뒤 2SLS로 가격의 인과효과를 추정한다. (Z)가 결과에 직접 영향을 주지 않는다는 점은 도메인 근거와 위약 테스트로 검증하며, 지역·기간 고정효과를 포함한다. 구조적 파라미터를 해석할 때는 LATE 범위를 명시한다.
의료·헬스케어 관찰자료에서는 환자 특성이 처치 선택에 영향을 줄 수 있다. 진단 코드·바이탈·연령 등 (X)로 성향 점수를 추정하고, overlap 영역을 유지한 채 안정화 가중치로 ATE·ATT를 추정한다. Rosenbaum Γ 분석은 미관측 교란에 대한 강건성 보고에 활용한다. 시간의존 교란이 있으면 MSM/IV를 고려하고, 사망·중도절단도 처리해야 한다.
공공정책 평가에서는 특정 기준선 근처에 다른 정책이 함께 작동할 수 있다. 정책 강제력 차이를 도구로 쓰거나 RD와 병용해 LATE를 보고하고, DR/PSM 보조 분석으로 결과의 일관성을 검증할 수 있다. 예산 컷오프의 외생 변동은 도구 변수 후보가 될 수 있다.
재현 가능한 추정·검증 흐름
데이터 프리즈는 동일 기준일과 정의를 보장해야 한다. 결측·이상치 처리에는 MICE/단순대치와 윈저라이징 규칙화를 사용할 수 있으며, 변수는 사전등록(feature registry)으로 관리해 누수를 막는다.
성향 모형 학습과 효과 추정 샘플은 분리하거나 교차적용한다. PSM에서는 SMD, variance ratio, (e(X)) 분포 중첩을 확인한다. IV에서는 1단계 F, over-identification(J-테스트), AR/CLR 강건성을 점검한다. 공통적으로는 이질적 효과(CATE), 위약·리버스 카우절티 테스트를 수행한다.
리포트에는 효과치, 95% CI, 샘플 크기, 가정 상태, 트리밍율, 민감도 매개변수(Γ/F)를 포함한다.
Python으로 확인하는 IV와 최근접 매칭
전제조건은 Python 3.10+, pandas, numpy, scikit-learn, linearmodels 설치다.
pip install pandas numpy scikit-learn linearmodels
도구 변수를 이용한 2SLS
import pandas as pd
from linearmodels.iv import IV2SLS
# 데이터: Y 결과, T 처치, Z 도구, X1,X2 공변량
df = pd.read_csv("data.csv")
y = df["Y"]
X = df[["X1", "X2"]]
T = df["T"]
Z = df["Z"]
# 2SLS: Y ~ 1 + [T ~ Z] + X
exog = X.assign(const=1) # 상수 포함
mod = IV2SLS(dependent=y, exog=exog, endog=T, instruments=Z).fit(cov_type="robust")
print(mod.summary)
# 점검: mod.first_stage.f_stat > 10 권고
1단계 F-통계량을 확인하고, over-identification이 가능하면 Hansen J-test를 보고한다. 약한 IV가 의심되면 LIML 또는 Anderson–Rubin/CLR 테스트를 검토한다.
성향 점수와 최근접 매칭으로 ATT 계산
import numpy as np, pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import NearestNeighbors
df = pd.read_csv("data.csv") # 포함: T, Y, 그리고 공변량 X1..Xp
X = df[[c for c in df.columns if c.startswith("X")]]
T = df["T"].values
Y = df["Y"].values
# 성향 점수 추정
ps = LogisticRegression(max_iter=1000).fit(X, T).predict_proba(X)[:,1]
# overlap 확보(예: [0.05,0.95])
mask = (ps >= 0.05) & (ps <= 0.95)
Xo, To, Yo, pso = X[mask], T[mask], Y[mask], ps[mask]
# 처치군과 대조군 분리
Xt, Xc = Xo[To==1], Xo[To==0]
Yt, Yc = Yo[To==1], Yo[To==0]
# 최근접 매칭(k=1, 칼리퍼=0.05 in propensity space)
nbrs = NearestNeighbors(n_neighbors=1).fit(pso[To==0].reshape(-1,1))
dist, idx = nbrs.kneighbors(pso[To==1].reshape(-1,1))
caliper = 0.05
keep = (dist.flatten() <= caliper)
matched_idx_c = idx.flatten()[keep]
att = (Yt[keep] - Yc[matched_idx_c]).mean()
print(f"ATT={att:.4f}, matched pairs={keep.sum()}")
매칭 후에는 공변량 균형(SMD)을 다시 평가한다. 균형이 충분하지 않으면 칼리퍼 확장·다중대조 매칭·가중회귀 병행을 검토하며, 표준오차는 부트스트랩을 권장한다.
효과를 보고할 때 남겨야 할 수치
PSM의 균형 지표는 모든 공변량에서 SMD < 0.1을 달성하는 비율 목표 ≥ 90%로 관리할 수 있다. IV는 1단계 F-통계량 > 10 충족 여부와 weak-IV 민감도를 함께 보고한다.
DR/가중 회귀를 병행했을 때 신뢰구간 폭과 관련해 분산 1030% 감소 관측 사례가 다수 있다. overlap을 유지하기 위해 표본 520%를 절단하는 경우에는 편향-분산 트레이드오프를 보고한다.
자동화 파이프라인은 리포팅 TAT와 주기적 재평가를 50% 이상 단축하는 효과를 목표로 삼을 수 있다. 재현성과 감사 추적성을 확보하면 거버넌스 준수에도 도움이 된다.
잠재 결과의 가정을 점검하고 절차로 고정하는 일이 인과추론의 기반이다. 도구 변수는 미관측 교란을 다룰 수 있지만 강력한 설계 근거가 필요하고, 성향 점수 매칭은 선택편향을 체계적으로 완화한다. 데이터 스냅샷, overlap과 1단계 강도 진단, DR·감도분석을 결합해야 신뢰 가능한 의사결정으로 이어질 수 있다.