인간 행동의 복잡성과 교란 변수 — 회귀가 망가지는 이유 (Buisson Ch.1.3~1.4)

왜 인간 행동은 풍력 터빈처럼 예측되지 않는가, 그리고 변수를 잘못 추가하면 분석이 왜 더 나빠지는가

Buisson (2021) Ch.1 의 두 절 — “Human Beings Are Complicated” 와 “Confound It!” 를 정리한다. 인간 행동의 5 특성 (다원성·맥락·비결정성·혁신성·전략성) 이 왜 단순 예측을 어렵게 하는지, 차원의 저주와 Lucas 비판이 그 수학적 근거임을 보인다. 후반부에서는 C-Mart 아이스크림 사례로 교란 변수(confounder) 가 회귀에서 어떻게 인과 계수를 망가뜨리는지를 직관적으로 시연한다.

Experimentation
Causal Inference
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: 교란 변수 (Confounder)

처치 변수 \(A\) 와 결과 변수 \(Y\) 양쪽에 인과적 영향을 미치는 제3의 변수 \(L\) 이다. \(L\) 이 회귀에 포함되지 않으면 \(A\)\(Y\) 사이의 가짜 상관을 인과 효과로 오인하게 된다 (Buisson, 2021, Ch.1).

직관적으로 말하면, “진짜 원인은 \(L\) 인데 \(A\) 가 잘못 지목 받는” 상황이다. 마치 우산을 든 사람이 늘 비를 맞는 모습을 보고 “우산이 비를 부른다” 고 결론 내리는 것과 같다 — 실제로는 비 예보(=\(L\))가 우산 사용(\(A\))과 비 (\(Y\)) 둘 다의 원인이다.

2 개념 및 원리 — 인간 행동의 5 특성

Buisson 은 풍력 터빈과 인간을 대비하여 설명한다. 비유가 강력하다.

풍력 터빈의 행동은 그것의 성격, 터빈 공동체의 사회 규범, 또는 성장 환경에 영향받지 않는다.

물리 법칙은 휴일에 쉬지 않고 새 법칙이 갑자기 등장하지도 않는다. 그래서 공학자는 풍속 데이터로 출력을 매우 정확히 예측한다. 하지만 인간은 다르다. 다음 5 특성이 그 이유다.

2.1 1. 다원적 원인 (Has multiple causes)

직관

같은 광고를 본 두 사람이 한 명은 즉시 구매하고 한 명은 무시한다. 이유는? 한 명은 마침 그 상품이 필요했고, 다른 한 명은 어제 비슷한 상품을 산 직후였다. 개인의 필요·시점·재정 상태·기분 등 수많은 요인이 동시에 작용한다.

단일 변수의 예측력은 거의 항상 실망스럽다. 공학적 시스템에서는 1~3개 변수로 충분하지만, 인간 행동은 수십~수백 개의 잠재 요인이 결합한다. 회귀 모형에 변수 5개를 추가해도 \(R^2\) 가 0.15 에 머무는 게 흔한 이유다.

2.2 2. 맥락 의존 (Is context-dependent)

직관 — 행동경제학의 고전 사례

장기 기증 등록률이 독일은 ~12%, 오스트리아는 ~99%. 두 나라 사람의 가치관이 정말 그렇게 다른가? 아니다. 차이는 default 옵션:

  • 독일: opt-in (등록하려면 적극 선택)
  • 오스트리아: opt-out (거부하려면 적극 선택)

옵션 표시 한 줄의 차이가 87% 의 행동 차이를 만든다.

이는 행동 설계자에게는 축복이다 — 작은 개입으로 큰 변화 가능. 분석가에게는 저주다 — 어제까지 작동하던 모형이 UI 한 줄 바꾼 후 무용지물이 된다.

2.3 3. 비결정성 (Is variable / nondeterministic)

직관

같은 사람이 매일 같은 시간 같은 카페에 가서 — 어떤 날은 아메리카노, 어떤 날은 라떼, 어떤 날은 차를 시킨다. 본인이 의식하지 못해도 기분·날씨·전날 잠·길에서 본 광고 등이 작용한다.

분석에서는 이를 “noise” 라 부르지만, 사실 측정되지 않은 원인의 합이다. 같은 입력에 다른 출력이 나오는 시스템은 결정론적 모형으로는 설명할 수 없다.

2.4 4. 혁신성 (Is innovative)

직관

평소 7시 출근하는 사람이 어느 날 사고로 우회 도로를 발견한다. 다음 날부터 우회 도로가 새 default 가 된다 — 한 번도 해 본 적 없던 행동 이 즉흥적으로 채택된다.

머신러닝 모형은 훈련 데이터에 없는 행동을 예측 못한다. COVID-19 직후 e-커머스 행동이 한 달 만에 5년치 변화한 사례가 대표적이다. 모든 예측 모형이 무너졌다.

2.5 5. 전략성 (Is strategic)

직관

체스에서 의도적으로 약한 수를 두어 상대를 함정에 빠뜨린다. 사기 거래 탐지 모형이 공개되면 사기범이 그 모형을 회피하는 패턴으로 진화한다. 다른 사람의 행동·의도에 반응 하는 것은 인간만의 특징이다.

이 5 특성을 종합하면 결론은 하나다.

표면 변수가 아니라 더 깊은 모수(원인) 를 측정해야 한다.

“월요일 오트밀을 먹었다” 는 화요일에도 그렇다고 보장할 수 없지만, “어떤 아침이든 먹는다” 는 더 안정적이다. 표면(특정 메뉴) 이 아니라 더 깊은 원인(아침을 먹는 습관) 을 잡아야 한다.

3 차원의 저주 — 수학적 근거

위 5 특성의 수학적 표현이 차원의 저주(curse of dimensionality) 다.

3.1 보간 vs 외삽

먼저 두 용어를 구분한다.

정의
  • 보간(Interpolation): 관측된 점들 사이 의 값을 추정 (inter = “between”). 일반적으로 안전·신뢰 가능.
  • 외삽(Extrapolation): 관측 범위 으로 나가는 추정 (extra = “outside”). 항상 추측적 — “안에서 적용된 규칙이 밖에서도 적용된다” 는 가정의 도약(leap of faith).
직관

다음과 같은 데이터가 있다고 하자.

x: [10, 20, 30, 40, 50]
y: [12, 21, 31, 39, 51]
  • “x = 25 일 때 y 는?” → 20과 30 사이의 값. 보간 — 안전.
  • “x = 100 일 때 y 는?” → 관측 범위 밖. 외삽 — 직선이 그 영역에서도 유지된다는 가정 필요.

직선 가정이 깨지는 상황 (예: x 가 너무 크면 y 가 saturate 됨) 을 모르면 외삽은 위험하다.

3.2 차원의 저주 직관

데이터 차원이 늘어날수록 외삽 위험이 폭증한다.

차원 1차원 2차원 10차원
같은 점 수 (1000개) 가 채우는 공간 비율 100% 잘 채움 거의 빈 공간
새 점이 외삽 영역에 떨어질 확률 낮음 중간 매우 높음
직관 — 풍선과 사방치기

1차원 (선) 위에 100개의 점을 찍으면 빈 구간이 적다. 2차원 (정사각형) 에 100개를 찍으면 빈 영역이 늘어난다. 10차원 입방체에 100개를 찍으면 거의 모든 점이 다른 점에서 멀리 떨어져 있다 — 모든 새 예측이 외삽 인 셈이다.

물리 시스템 (풍력 터빈) 은 영향 차원이 적고 일정 → 보간 영역. 인간 행동은 차원이 많고 가변 → 외삽 영역. 이게 인간 행동 예측이 어려운 본질적 이유다.

3.3 Lucas 비판 — 역사적 맥락

직관 — 1970년대 거시경제학의 위기

1960년대 케인즈 모형은 “인플레이션이 늘면 실업률이 줄어든다 (Phillips curve)” 를 데이터로 발견. 정부가 이를 정책에 활용 — 일부러 인플레이션을 일으켜 실업률을 낮추려 함.

결과는 stagflation (인플레이션·실업률 모두 상승). 모형이 무너졌다.

Robert Lucas 가 지적한 이유: 사람들이 정책을 학습한다. “정부가 인플레이션을 일으킬 것 같다” 를 예상하면 임금 협상에서 그만큼 미리 올린다. 표면적 관계 (Phillips curve) 는 더 깊은 모수 (사람들의 인플레이션 기대) 가 만든 결과였고, 정책 변화는 그 기대를 변화시켰다.

Lucas 의 결론: 표면 관계가 아니라 더 깊은 모수 (consumer preferences, expectations 등) 를 식별해야 한다. Buisson 의 인과 분석 권고는 같은 메시지의 분석 버전이다.

4 왜 필요한가 — Confound It! (교란 변수가 회귀를 망가뜨리는 방식)

C-Mart 아이스크림 사례 (Buisson, 2021, Ch.1)

가상의 미국 슈퍼마켓 체인 C-Mart 에서 다음 데이터를 본다.

“기온이 1도 오르면 아이스크림 매출이 X 만큼 늘어난다” 라는 회귀 결과를 얻었다.

이 결과는 인과적인가?

가능한 함정:

  1. 여름방학(=\(L\)) 이 따로 영향. 아이들이 학교 안 가서 낮에 집·놀이공원에 모이고 → 기온 높음 + 아이스크림 매출 높음. 회귀가 여름방학 효과를 기온에 잘못 귀속 시킨다.

  2. 즉, 기온의 진짜 인과 효과는 회귀 계수 X 보다 작다. X 의 일부는 여름방학이 만든 가짜 상관이다.

4.1 직관 — 왜 confounder 가 위험한가

직관 — “공통 친구의 함정”

두 사람 A 와 Y 가 자주 같은 시간에 같은 장소에 있는 것을 본다. “둘이 친한가 보다” 라고 결론 내린다.

진실은? 공통 친구 L 의 생일파티에 둘 다 초대받은 것. A 와 Y 는 서로 모르는 사이다.

이 상황에서 “A가 가면 Y도 간다” 는 관찰적으로 참이지만, “A 가 안 가면 Y 도 안 갈 것이다” (반사실) 은 거짓. Y 는 그래도 갈 것이다 — L 이 부르니까.

회귀에서도 같다. \(A\)\(Y\) 가 상관되어 보이지만, 진짜 원인은 \(L\) 이다. \(L\) 을 회귀에 포함하지 않으면 \(A\) 의 계수가 가짜 상관을 흡수한다.

4.2 수식으로 보는 confounding

진짜 인과 모형이 다음과 같다고 하자.

\[ Y = \beta_A A + \beta_L L + \varepsilon, \quad \text{여기서 } \beta_A \text{ 가 진짜 인과 효과} \]

그런데 분석가가 \(L\) 을 알지 못해서 \(L\) 없이 회귀한다.

\[ Y = \tilde{\beta}_A A + \tilde{\varepsilon} \]

이때 OLS 추정량은:

\[ \tilde{\beta}_A = \beta_A + \beta_L \cdot \frac{\text{Cov}(A, L)}{\text{Var}(A)} \]

직관 — 편향의 부호와 크기

추정 계수 \(\tilde{\beta}_A\) 는 진짜 효과 \(\beta_A\)편향 항 이 더해진 값이다.

  • 편향 항 \(= \beta_L \cdot \dfrac{\text{Cov}(A, L)}{\text{Var}(A)}\)
  • \(\beta_L \neq 0\) 이고 \(\text{Cov}(A, L) \neq 0\) 일 때 편향 발생
  • 부호: \(L\)\(A\) 가 양의 상관이고 \(L\)\(Y\) 를 양으로 증가시키면 → \(\tilde{\beta}_A\)\(\beta_A\) 보다 크게 추정됨
  • 크기: \(L\) 의 효과 (\(\beta_L\)) 와 \(A, L\) 상관 (\(\text{Cov}/\text{Var}\)) 모두 클수록 편향 큼

C-Mart 사례:

  • \(A\) = 기온, \(Y\) = 아이스크림 매출, \(L\) = 여름방학
  • \(\beta_L > 0\) (방학 → 아이스크림 ↑)
  • \(\text{Cov}(A, L) > 0\) (방학 = 여름 = 더운 시기)
  • \(\tilde{\beta}_A > \beta_A\) → 기온 효과 과대 추정

이 편향은 \(L\) 을 회귀에 포함하면 사라진다.

\[ Y = \beta_A A + \beta_L L + \varepsilon \]

이게 회귀의 인과 사용 의 핵심 원리다. 변수 mix 를 짤 때 “어떤 변수를 추가해야 인과 계수가 비편향이 되는가” 가 기준이다.

5 응용 분야 — 흔한 confounding 함정 사례

영역 처치 \(A\) 결과 \(Y\) 잠재 confounder \(L\)
의료 신약 복용 회복률 환자 중증도 (의사가 중증 환자에게 약을 더 처방)
마케팅 광고 노출 구매 사용자 의도 (이미 구매 의도 있는 사람에게 광고가 더 노출됨)
교육 보충 수업 시험 성적 부모 교육 수준 (열심인 부모가 보충 + 가정 교육 모두)
채용 면접 통과 1년 후 성과 학력 (학력 좋은 사람이 면접 통과 + 성과 모두)

공통 패턴: 처치 배정이 무작위가 아닐 때 confounder 가 거의 항상 존재한다. RCT 가 강력한 이유는 무작위 배정 으로 \(A\) 와 모든 \(L\) 의 상관을 끊기 때문이다.

6 예시 — 시뮬레이션으로 confounder 효과 보기

기온이 아이스크림 매출에 미치는 진짜 효과는 작은데(예: \(\beta_A = 0.3\)), 여름방학을 무시하면 추정치가 부풀려지는 것을 확인한다.

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression

np.random.seed(42)

n = 1000

# 잠재 confounder: 여름방학 (1=방학, 0=학기)
summer_break = np.random.binomial(1, 0.4, n)

# 기온: 여름방학과 강한 양의 상관
temperature = 15 + 10 * summer_break + np.random.normal(0, 3, n)

# 진짜 인과 효과 (data-generating process)
beta_A_true = 0.3   # 기온의 진짜 효과 (작음)
beta_L_true = 30    # 여름방학의 진짜 효과 (큼)

ice_cream = (beta_A_true * temperature
             + beta_L_true * summer_break
             + np.random.normal(0, 5, n))

df = pd.DataFrame({
    "temperature": temperature,
    "summer_break": summer_break,
    "ice_cream": ice_cream,
})

# 1. 잘못된 회귀 (confounder 빠짐)
m1 = LinearRegression().fit(df[["temperature"]], df["ice_cream"])
print(f"[1] 기온만 회귀: 계수 = {m1.coef_[0]:.3f}")
print(f"    → 진짜 효과 0.3 인데 부풀려진다 (편향)")

# 2. 올바른 회귀 (confounder 포함)
m2 = LinearRegression().fit(df[["temperature", "summer_break"]], df["ice_cream"])
print(f"\n[2] 기온 + 방학 회귀:")
print(f"    기온 계수 = {m2.coef_[0]:.3f} (진짜 0.3 에 가까움)")
print(f"    방학 계수 = {m2.coef_[1]:.3f} (진짜 30 에 가까움)")
직관 — 시뮬레이션이 보여주는 것

회귀 [1]은 기온만 보고 “기온 1도 = 매출 ~3.3 증가” 같은 큰 효과를 보고한다. 하지만 진짜 효과는 0.3 — 10배 부풀려진 것이다.

회귀 [2]는 여름방학을 함께 통제하므로 기온의 계수가 진짜 값 0.3 에 가까워진다.

같은 데이터, 같은 도구(OLS), 다른 변수 mix → 정반대 결론. 이게 회귀를 인과 분석에 쓸 때의 가장 큰 함정이다.

7 코드 예시 — 편향의 부호를 직접 확인

위 식 \(\tilde{\beta}_A = \beta_A + \beta_L \cdot \text{Cov}(A,L)/\text{Var}(A)\) 의 부호를 시뮬레이션으로 확인한다.

# 위 시뮬레이션 데이터로
cov_AL = np.cov(df["temperature"], df["summer_break"])[0, 1]
var_A = np.var(df["temperature"])
predicted_bias = beta_L_true * cov_AL / var_A

print(f"이론적 편향 = β_L × Cov(A,L)/Var(A)")
print(f"           = {beta_L_true} × {cov_AL:.3f} / {var_A:.3f}")
print(f"           = {predicted_bias:.3f}")
print(f"\n실제 편향 (m1.coef - β_A_true) = {m1.coef_[0] - beta_A_true:.3f}")
print(f"→ 이론과 시뮬레이션 일치")
직관 — 편향 공식의 의미

이 공식은 “분석가가 confounder 를 얼마나 무시하는가”“confounder 가 처치와 얼마나 상관되어 있는가” 두 인자의 곱으로 편향이 결정됨을 보여준다.

  • \(L\) 을 안 포함했을 때 → \(\beta_L\) 효과가 다른 변수로 “흘러나감”
  • 그 흘러나감이 \(A\) 로 가는 비율은 \(\text{Cov}(A, L) / \text{Var}(A)\) — 즉 \(L\)\(A\) 로 회귀했을 때의 계수 (proxy 강도)

시사점: 처치와 강하게 상관된 confounder 일수록 위험. 무작위 배정(RCT) 은 정의상 \(\text{Cov}(A, L) = 0\) 으로 만들어 모든 confounder 의 편향을 0 으로 만든다. 이게 RCT 가 인과 추론의 황금 표준인 이유다.

8 관련 주제

8.1 Ch.1 의 다음 sub-section

8.2 Ch.1 이전 sub-section

8.3 Confounder 의 본격 처리 (후속)

8.5 카테고리 진입점

Subscribe

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