인과 vs 예측의 변수 선택과 편향 유발 변수

Hernan Ch.18.1~18.2 — 충돌자·매개자·도구·M-bias·Z-bias

Hernan & Robins (2020) Ch.18.1~18.2 를 다룬다. 인과 분석과 예측 분석의 변수 선택 기준이 본질적으로 다른 이유, ML 알고리즘의 black-box 위험, 5 종류의 편향 유발 변수 (충돌자, 매개자, 충돌자 후손, M-bias, Z-bias) 의 정의와 메커니즘, 그리고 시간 순서만으로 변수의 인과적 역할을 결정할 수 없는 이유를 정리한다.

Experimentation
Causal Inference
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: Confounder vs Bias-Inducing Variable

Confounder: \(A\)\(Y\) 의 공통 원인 (또는 그 surrogate). 보정 시 backdoor 차단 → 편향 감소.

Bias-Inducing Variable: 보정 시 새 편향을 도입하거나 기존 편향을 증폭 하는 변수. 5 종류: - 충돌자 (Collider) - 매개자 (Mediator) - 충돌자의 후손 - M-bias 변수 (pre-treatment 충돌자) - 도구 (Instrument)

직관 — 보정의 양면성: “변수를 더 보정하면 편향 감소” 는 일반적으로 틀린 직관. Confounder 보정 → 편향 감소. 충돌자 보정 → 편향 증가. 변수의 인과적 역할에 따라 보정의 방향이 정반대 — DAG 분석으로 결정.

2 18.1 인과 분석과 예측 분석의 변수 선택

2.1 두 분석의 본질적 차이

인과 vs 예측 비교표
측면 예측 분석 인과 분석
목표 \(\widehat{Y}\)\(Y\) 와 가까움 \(\widehat{\mathrm{E}}[Y^{a=1} - Y^{a=0}]\) 가 진짜 ATE 와 가까움
모수의 의미 예측 도구 — 인과 의미 X 인과 효과 — 직접 해석 가능
변수 선택 기준 예측 정확도 (cross-validation) DAG 분석 (도메인 지식)
표준 도구 Lasso, RF, NN, Boosting g-method, IV, DR + DAG
평가 지표 RMSE, AUC, log-loss E-value, sensitivity, robustness
변수 추가 정확도 향상 시 추가 인과 역할 따라 결정

직관 — Heart Failure 예측의 함정: 환자 데이터로 heart failure 예측 모형 — “prior hospitalization” 이 강한 예측자. 결론: “병원 입원시키지 말라” → nonsense. 입원이 결과를 예측 하지 원인이 아님. 예측 알고리즘이 자동으로 인과 변수 선택 안 함.

직관 — Smoking cessation 의 다른 시나리오: 데이터에서 흡연 중단이 체중 증가와 연관 → 예측 모형이 흡연 중단을 강한 예측자로 선택. 인과 분석에서는 confounder (나이, 이전 건강 상태) 보정 후 ATE 추정. 두 분석이 같은 데이터에서 같은 도구로 다른 결론 — 목표가 결정.

2.2 Tuning Parameters 와 Cross-Validation

예측 분석의 Tuning Parameters

ML 알고리즘은 hyperparameter 가 있음:

  • Lasso/Ridge: regularization parameter \(\lambda\) (계수 shrinkage 정도).
  • Random Forest: number of trees, max depth, min samples per leaf.
  • Neural Network: layer 수, layer 당 unit 수, learning rate.

Cross-validation 으로 예측 정확도 최적화 → \(\lambda\) 선택. 그러나 인과 분석에서 같은 \(\lambda\) 가 confounder 를 zero 로 shrunk 시킬 수 있음 → 보정 안 된 상태.

직관 — Lasso 의 위험: Lasso 는 weak predictor 의 계수를 정확히 0 으로 만듦. 진짜 confounder 가 weak predictor 면 lasso 가 자동 제외 → 보정 안 됨. 인과 분석에서 lasso 는 신중히 사용.

직관 — CV 의 한계: CV 는 예측 정확도 최적화, 인과 추정 정확도 최적화 아님. 인과 분석 의 목표 (편향 감소) 에 직접적으로 작동 안 함. CV 가 적용 가능한 영역은 nuisance 모형의 근사 정확도, 인과 추정량 자체 아님.

2.3 Black-Box Algorithms 의 위험

Deep Learning 의 인과 분석 적용 위험

Black-box ML (deep neural net, complex random forest 등) 의 단점:

  1. 해석 어려움: 어떤 변수가 어떻게 사용됐는지 추적 어려움. Confounder 보정 검증 불가.

  2. 새 환경에서 성능 저하: training set 의 국소 패턴 (often non-causal) 에 의존. 다른 환경에 transport 시 실패.

  3. 차별 패턴 학습: training data 의 사회적 차별 패턴 (예: 인종별 다른 진료) 을 그대로 학습 → 정책 적용 시 차별 재생산.

  4. Confounder 의 implicit 처리: ML 이 confounder 를 명시적으로 보정 안 하고 데이터의 noise 를 fit → 인과 의미 없는 결과.

직관 — Deep Learning 의 매력 vs 위험: 음성 인식, 이미지 분류 같은 영역에서 인간 수준 정확도. 그러나 인과 분석에서 같은 도구가 다른 데이터 분포 에 transport 안 됨. NHEFS 사례에 deep learning 적용해도 confounder 보정 자동화 안 됨 — DAG 가 first authority.

직관 — 의료 AI 의 차별 위험: 인종별 다른 진료 패턴이 training data 에 있으면 ML 이 “흑인 환자에게는 통증약 적게” 같은 차별 패턴 학습. 정책 결정에 적용 시 차별 재생산. 인과 분석은 차별 메커니즘 식별 + 제거 도구, 단순 ML 은 차별 증폭 도구.

3 18.2 편향 유발 변수의 종류

3.1 (1) Collider — Figure 18.1

충돌자 (Collider) 의 메커니즘

DAG: \(A \to L \leftarrow Y\) (또는 \(A \to L \leftarrow U \to Y\))

\(L\)\(A\)\(Y\) (또는 \(Y\) 의 원인 \(U\)) 의 공통 결과.

보정 안 함: \(A\)\(Y\) 사이 backdoor 없음 → \(\mathrm{E}[Y|A=1] - \mathrm{E}[Y|A=0]\) 가 ATE 의 일치 추정.

보정 함: \(A \to L \leftarrow Y\) 의 collider path 활성화 → \(A\)-\(Y\) 가짜 연관 도입 → \(A=0\) 일 때 \(\mathrm{E}[Y^{a=1}] - \mathrm{E}[Y^{a=0}] = 0\) 인데도 추정값 비영. selection bias under the null.

직관 — Berkson’s bias 의 일반화: 의학에서 “병원 입원자는 두 질병이 함께 있는 비율이 일반 인구보다 높다” — 입원 (collider) 으로 conditioning. 두 질병이 인구 수준에서 무관해도 입원 환자 중에서는 가짜 연관. Conditioning on collider = selection bias 의 일반 메커니즘.

직관 — NHEFS 의 잠재 충돌자: “병원 방문 빈도” — 흡연 중단 (건강 의식) 의 결과이자 사망 (건강 악화) 의 결과. 보정 시 \(A\)-\(Y\) 가짜 연관. post-treatment 변수 보정의 흔한 함정.

3.2 (2) Descendant of Collider — Figure 18.2

충돌자 후손의 위험

DAG: \(A \to B \leftarrow U \to Y\), 그리고 \(B \to L\)

\(B\) 는 충돌자, \(L\)\(B\) 의 후손.

\(L\) 보정: \(B\) 의 정보를 부분적으로 전달 → 충돌자 보정과 비슷한 편향 도입.

직관 — 충돌자 후손도 위험: 직접 충돌자 아니지만 충돌자의 정보 전달자. 보정 시 부분적 편향 — 충돌자 직접 보정보다 약하지만 무시 안 됨. DAG 에서 충돌자 후손도 식별 + 제외.

3.3 (3) Mediator — Figure 18.3, 18.4

매개자 (Mediator) 의 over-adjustment

DAG: \(A \to L \to Y\)

\(L\) 은 처치 효과의 일부를 매개.

\(L\) 보정: - \(A \to L \to Y\) 경로 차단 → 매개 효과 추정 안 됨. - \(A \to Y\) 직접 효과만 추정 → ATE 가 아닌 direct effect. - ATE 가 목표면 매개자 보정 안 함.

직관 — Mediation 분석의 위치: ATE = direct effect + indirect effect (매개자 통과). 매개자 보정 시 indirect 차단 → direct effect 만 측정. 연구 질문이 “총 효과” 면 매개자 제외, “직접 효과” 면 매개자 포함. Ch.23 의 mediation 분석.

직관 — NHEFS 의 매개자 가능성: 흡연 중단 → 신체활동 변화 → 체중 변화. “1971-82 사이 신체활동 변화” 가 매개자. NHEFS 의 9 변수는 baseline 만 → 매개자 자동 제외. 좋은 설계 결정.

3.4 (4) Pre-treatment Variable that Blocks Backdoor — Figure 18.5

Post-treatment 라도 보정 가능한 경우

DAG: \(A\)\(L\) 에 영향 안 줌, \(L\)\(A \to Y\) 의 backdoor 차단.

(시간상 \(A\) 후이지만 \(A\)\(L\) 의 원인 아님 — DAG 에서는 \(L \leftarrow U \to Y\) 같은 path)

\(L\) 보정: backdoor 차단 → 편향 감소.

핵심: DAG 가 시간 순서 무관 — \(A\)\(L\) 에 영향 안 주면 \(L\) 보정 가능.

직관 — 시간 순서의 미묘함: “Post-treatment 변수는 보정 안 함” 은 대략 맞지만 절대 아님. \(A\)\(L\)인과적으로 영향 안 주면 (시간상 후라도) 보정 가능. DAG 분석이 시간 순서보다 우선.

직관 — 데이터로 결정 불가: 시간 순서 \(A \to L \to Y\) 같아 보여도 \(A\) 가 진짜 \(L\) 의 원인인지 데이터로 판단 불가 (인과 그래프는 데이터에서 직접 추출 안 됨). 도메인 지식 + DAG 가 first authority.

3.5 (5) M-Bias Variable — Figure 18.6

Pre-treatment Collider (M-Bias)

DAG: \(L \leftarrow U_1 \to A\), \(L \leftarrow U_2 \to Y\)

\(L\) 은 시간상 \(A\) 전에 측정 (pre-treatment) 이지만 \(U_1\)\(U_2\)충돌자.

\(L\) 보정: \(A \leftarrow U_1 \to L \leftarrow U_2 \to Y\) 의 path 활성화 → 가짜 연관.

M-Bias 라 부르는 이유: 화살표 그림이 M 자 모양.

직관 — Pre-treatment 도 충돌자 가능: 시간상 처치 전이라고 보정 안전한 게 아님. 두 미관측 원인의 충돌자면 같은 위험. Greenland (2003), Pearl (2009) 의 강한 경고.

직관 — M-bias 의 검증 어려움: \(U_1, U_2\) 는 미관측 → 데이터로 M-bias 검증 불가. 도메인 지식으로 \(L\) 이 두 미관측 원인의 결과인지 추론. 확실하지 않으면 sensitivity analysis.

3.6 (6) Instrument (Z-Bias) — Figure 18.7

도구 보정의 양면성

DAG: \(Z \to A \to Y\), \(A \leftarrow U \to Y\) (미관측 교란 \(U\))

\(Z\) 는 도구 — backdoor 차단에 도움 안 됨.

\(Z\) 보정: (a) 미관측 교란 \(U\) 의 효과 증폭 (Pearl 2011) — Z-bias. (b) 일부 시나리오에서는 편향 감소 — 사전 결정 불가.

일반 권장: 도구는 보정 제외. 미관측 교란 처리는 IV 분석 (Ch.16) 으로 별도.

직관 — Z-bias 의 메커니즘: \(Z\) 가 처치의 외생적 변동. \(Z\) 보정 시 처치의 내생적 부분 (\(U\) 가 만든 부분) 이 결과와 더 강하게 연관 보임 → \(U\) 의 confounding 효과 과대. 외생적 변동을 보정하면 내생적 변동의 영향이 부풀려짐.

직관 — Bias amplification 의 일반성: 선형 SCM 에서 보장 (Pearl 2011), 일반 비선형에서도 흔함 (Ding et al. 2017). 약한 instrument 일수록 bias amplification 강함.

직관 — IV 와 보정의 분리: \(Z\) 가 도구로 식별되면 (a) 보정에서 제외, (b) 별도 IV 분석으로 미관측 교란 우회. 둘 다 같은 \(Z\) 를 사용하지만 다른 분석. NHEFS 의 담배 가격이 도구 후보 — 보정에 안 넣고 Ch.16 의 IV 분석으로 별도.

4 변수 선택의 의사결정 트리

변수 L 발견
  ↓
$L$ 이 $A$ 와 $Y$ 모두에 인과적으로 영향?
  ├─ 예 (Confounder) → 보정 포함
  └─ 아니오 → 다음 질문
       ↓
$L$ 이 $A$ 의 결과?
  ├─ 예
  │   └─ $L$ 이 $Y$ 에도 영향?
  │       ├─ 예 (Mediator) → ATE 면 제외, mediation 분석이면 포함
  │       └─ 아니오 (단순 후속) → 보정 무관 또는 제외
  └─ 아니오
       ↓
$L$ 이 두 미관측 원인의 충돌자 (M-bias)?
  ├─ 예 → 보정 안 함
  └─ 아니오 → 다음 질문
       ↓
$L$ 이 $A$ 와 $Y$ 의 공통 결과 (Collider)?
  ├─ 예 → 보정 안 함
  └─ 아니오 → 다음 질문
       ↓
$L$ 이 $A$ 만의 원인 (Instrument)?
  ├─ 예 → 보정 제외 (Z-bias 위험), IV 분석에 사용 가능
  └─ 아니오 → 다음 질문
       ↓
$L$ 이 $Y$ 만의 원인 (Predictor of Y, not confounder)?
  ├─ 예 → 보정 시 분산 감소, 편향 영향 미미. Optional 포함.
  └─ 아니오 → 보정 무관

직관 — 의사결정의 본질: 모든 결정이 DAG 분석 에 기반. 통계 도구 (lasso, stepwise) 는 어디에도 사용 안 됨. 인과 변수 선택은 통계 외부의 영역.

5 코드 — 시뮬레이션으로 편향 메커니즘 확인

import numpy as np
import pandas as pd
import statsmodels.formula.api as smf

# === Collider 시뮬레이션 ===
np.random.seed(42)
n = 5000

# Sharp null: A 가 Y 에 영향 없음
A = np.random.binomial(1, 0.5, n)
Y = np.random.normal(0, 1, n)
# Collider: A 와 Y 가 모두 L 의 원인
L = A + Y + np.random.normal(0, 0.5, n)

df = pd.DataFrame({"A": A, "Y": Y, "L": L})

# 보정 안 함 → 편향 0
m1 = smf.ols("Y ~ A", data=df).fit()
print(f"Sharp null + No adjustment: A 효과 = {m1.params['A']:.3f} (진짜 = 0)")

# Collider 보정 → selection bias under null
m2 = smf.ols("Y ~ A + L", data=df).fit()
print(f"Sharp null + Collider 보정: A 효과 = {m2.params['A']:.3f} (편향 발견)")

# === Mediator 시뮬레이션 ===
np.random.seed(42)
n = 5000
A = np.random.binomial(1, 0.5, n)
M = 2 * A + np.random.normal(0, 1, n)   # 매개자
Y_direct = A + np.random.normal(0, 1, n)   # A 의 직접 효과 = 1
Y = Y_direct + M   # 총 효과 = 1 + 2 = 3

df2 = pd.DataFrame({"A": A, "M": M, "Y": Y})

# 보정 안 함 → 총 효과 ~3
m3 = smf.ols("Y ~ A", data=df2).fit()
print(f"\nMediator + No adjustment: A 효과 = {m3.params['A']:.3f} (총 효과 ~3)")

# Mediator 보정 → 직접 효과 ~1
m4 = smf.ols("Y ~ A + M", data=df2).fit()
print(f"Mediator + 보정: A 효과 = {m4.params['A']:.3f} (직접 효과 ~1)")

# === Z-bias 시뮬레이션 ===
np.random.seed(42)
n = 5000
U = np.random.normal(0, 1, n)   # 미관측 교란
Z = np.random.binomial(1, 0.5, n)   # 도구
A = (0.3 * Z + 0.5 * U + np.random.normal(0, 1, n) > 0).astype(int)
Y = 1 * A + 1 * U + np.random.normal(0, 1, n)   # 진짜 효과 1

df3 = pd.DataFrame({"Z": Z, "A": A, "Y": Y, "U": U})

# 보정 안 함 → 편향 (U 의 confounding)
m5 = smf.ols("Y ~ A", data=df3).fit()
print(f"\nNo Z, No U adj: A 효과 = {m5.params['A']:.3f} (진짜 1, U confounding 으로 편향)")

# Z 보정 → bias amplification
m6 = smf.ols("Y ~ A + Z", data=df3).fit()
print(f"Z 보정: A 효과 = {m6.params['A']:.3f} (Z-bias 증폭 가능)")

# U 도 보정 (가상 — 실제로는 미관측)
m7 = smf.ols("Y ~ A + U", data=df3).fit()
print(f"U 보정 (가상): A 효과 = {m7.params['A']:.3f} (~1 — 진짜)")

6 한 줄 요약

인과 분석의 변수 선택은 예측 분석과 본질적으로 다르다 — DAG 가 first authority. 5 종류의 편향 유발 변수: collider, descendant of collider, mediator, M-bias 변수, instrument. 각각 보정 시 다른 메커니즘으로 새 편향 도입 또는 기존 편향 증폭. 시간 순서만으로 변수 역할 결정 불가 — \(L\) 이 pre-treatment 라도 M-bias 위험, post-treatment 라도 안전한 경우 가능. ML 의 자동 변수 선택은 인과 분석에 직접 적용 위험 — 도메인 지식 + DAG 의 결합이 표준.

7 관련 주제

선행 지식

후속 주제

다른 카테고리 연결

Subscribe

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