Ch.14 § 14.1~14.3 심화 — Conditional Modeling·Classical Regression·Causal Inference

왜 X를 모델링하지 않는가·식 (14.1)~(14.10) 완전 유도·QR 분해·사후 예측·Incumbency 예제로 본 회귀의 인과 해석

Gelman BDA Ch.14의 첫 세 절을 깊이 있게 다룬다. § 14.1 conditional modeling의 prior 독립 정당화 증명, § 14.2 표준 비정보적 prior 하의 정규 선형 회귀 사후 분포 식 (14.1)~(14.9) 완전 유도 (completing the square·β 주변화·σ² Inv-χ² 유도·multivariate t 사후 예측·QR 분해 샘플링), § 14.3 하원 현직 효과 (incumbency advantage) 예제로 potential outcomes 기반 causal 해석, ignorability 조건, 식 (14.10) 정의, Table 14.1 재현, 사후 예측 outlier 점검까지, Python 완전 구현과 함께 정리한다.

Statistics
Bayesian
Linear-Regression
Causal-Inference
Posterior-Predictive
저자

Kwangmin Kim

공개

2026년 04월 23일

1 개요

Ch.14 overview (03-14-0) 에서 Ch.14 전 10절을 조망했다. 이 심화편은 그 중 § 14.1~14.3 세 절을 한 편으로 묶어, 수식의 모든 유도 단계와 incumbency 예제의 인과 해석까지 깊게 다룬다.

이 세 절은 Ch.14의 이론적 뼈대이다.

  • § 14.1 — 왜 회귀에서 \(X\) 를 조건부로 받아들이는가 (철학적·수학적 정당화)
  • § 14.2 — 표준 비정보적 prior 하의 사후 분포 닫힌 형태 유도 (식 14.1~14.9)
  • § 14.3 — 유도한 모형을 인과 추론에 적용할 때 어떤 가정이 필요한가 (incumbency 예제)

나머지 § 14.4~14.8은 이 세 절의 실무 확장에 해당하므로, 이 편을 제대로 이해하면 후속 심화편이 한결 가볍게 읽힌다.

직관: § 14.1~14.3의 흐름
  1. § 14.1에서 \(X\) 를 조건으로 고정” 이라는 회귀의 기본 자세를 정당화한다 — 이것은 전혀 당연하지 않은 선택이다.
  2. § 14.2에서 그 자세 위에 정규·비정보적 prior 를 얹어 모든 것이 닫힌 형태로 풀리는 운 좋은 케이스를 완전히 유도한다. 이 유도는 Ch.15 계층 회귀, Ch.16 GLM의 시작점이 된다.
  3. § 14.3에서 “숫자는 같더라도 해석은 다르다”를 보인다. 같은 회귀 모형도 예측용과 인과 추정용은 변수 선택이 달라진다.

2 § 14.1 Conditional Modeling — 왜 \(X\) 는 모델링하지 않는가

2.1 문제 제기

회귀의 “데이터”는 \((x, y)\) 쌍이다. 그런데 우리는 오직 \(p(y | X, \theta)\) 에만 관심을 갖고 \(p(X)\) 는 아예 건드리지 않는다. 완전한 베이지안이라면 \((X, y)\) 전체의 결합 분포

\[ p(X, y | \psi, \theta) = p(X | \psi) \cdot p(y | X, \theta) \]

를 모델링해야 하지 않을까? 여기서 \(\psi\)\(X\) 의 분포 모수, \(\theta\)\(y|X\) 의 모수.

실무 베이즈에서는 \(p(X|\psi)\)무시하고 \(p(y|X, \theta)\) 만 다룬다. 이 선택은 왜 정당한가?

2.2 Gelman의 정당화 — Prior 독립 가정

핵심 가정: \(\psi\)\(\theta\) 가 사전 분포에서 독립이다.

\[ p(\psi, \theta) = p(\psi) \cdot p(\theta) \]

이 가정 하에서 사후 분포를 계산해본다.

\[ p(\psi, \theta | X, y) = \frac{p(\psi, \theta) \cdot p(X, y | \psi, \theta)}{p(X, y)} \]

분자를 prior 독립과 결합 분포 분해로 쓰면

\[ p(\psi, \theta) \cdot p(X, y | \psi, \theta) = p(\psi) p(\theta) \cdot p(X | \psi) p(y | X, \theta) \]

\(\psi\) 에 의존하는 부분 = \(p(\psi) p(X|\psi)\), \(\theta\) 에 의존하는 부분 = \(p(\theta) p(y|X, \theta)\). 따라서

\[ p(\psi, \theta | X, y) = p(\psi | X) \cdot p(\theta | X, y) \]

\(\theta\) 의 주변 사후\(\psi\) 와 무관하게

\[ p(\theta | X, y) \propto p(\theta) \cdot p(y | X, \theta) \]

결론: \(\theta\) 만 알고 싶다면 \(p(X|\psi)\) 는 무시해도 정보 손실이 없다 (marginal factorization 이 깨끗하게 된다).

정리: 회귀의 조건부 모델링이 정당화되는 조건

\[ \boxed{ p(\psi, \theta) = p(\psi) p(\theta) \quad \Longrightarrow \quad p(\theta | X, y) \propto p(\theta) p(y | X, \theta) } \]

깨지는 경우\(\psi\)\(\theta\) 가 prior에서 얽혀 있을 때. 예시:

  1. 결측 데이터 (Ch.18): \(X\) 의 결측 패턴이 \(y\) 의 결측과 상관되면 \(\psi\)\(\theta\) 가 사후에서 얽힌다.
  2. Selection bias: \(X\) 관측 확률이 \(y\) 에 의존 (예: 병원 기록에서 “입원한 환자만” 관측).
  3. 계층적 구조: \(X\) 의 그룹 소속이 \(y\) 의 그룹 효과에 영향을 주는 상황.

이런 상황에서는 \(X\) 도 모델링해야 한다 (\(X|\psi\) 분포 명시).

2.3 설계된 실험 vs 관측 데이터

설계된 실험 (designed experiment): \(X\) 는 연구자가 선택. 확률 \(p(X)\)알려져 있다 (또는 결정적). \(\psi\) 가 없으므로 prior 독립은 trivial하게 성립.

관측 데이터 (observational data): \(X\) 도 자연 현상의 일부. \(\psi\) 가 존재하지만, 위 정리로 \(\theta\) 추론만 목적이면 \(\psi\) 를 무시할 수 있다.

직관: “\(X\) 는 그냥 관측된 맥락”

일기예보에서 “오늘 기온 \(x\) 주어졌을 때 내일 기온 \(y\)”를 예측한다고 하자. 오늘 기온이 어떤 과정을 거쳐 그 값이 됐는지는 내일 예측과 무관하다. 관측된 \(X\)조건 이지 추정 대상이 아니다.

이것이 \(p(X|\psi)\) 를 무시하는 직관적 이유. \(X\) 는 이미 관측됐으므로 그 값을 조건으로 받아들이고, 오직 \(y|X\) 의 확률 모형에만 집중한다.

2.4 실용적 이점

\(k+1\) 차원 결합 분포 \(p(X_1, \dots, X_k, y)\) 전체를 명시하는 것보다 1차원 조건부 \(p(y | X_1, \dots, X_k)\) 만 명시하는 것이 훨씬 쉽다. 이것이 회귀가 통계 실무의 주력 도구가 된 이유 중 하나.

3 § 14.2 Bayesian Analysis of Classical Regression — 완전 유도

§ 14.2의 목표는 “noninformative prior + 정규 선형 모형” 조합 하에서 사후 분포를 모두 닫힌 형태로 유도하는 것이다.

3.1 모형 — 식 (14.1)

\[ y | \beta, \sigma^2, X \sim N(X\beta, \sigma^2 I_n) \quad \text{(14.1)} \]

차원: \(y \in \mathbb{R}^n\), \(X \in \mathbb{R}^{n \times k}\) (랭크 \(k\)), \(\beta \in \mathbb{R}^k\), \(\sigma^2 > 0\).

Likelihood 형태:

\[ p(y | \beta, \sigma^2, X) = (2\pi \sigma^2)^{-n/2} \exp\left\{ -\frac{1}{2\sigma^2} (y - X\beta)^T (y - X\beta) \right\} \]

3.2 Prior — 식 (14.2)

\[ p(\beta, \sigma^2 | X) \propto \sigma^{-2} \quad \text{(14.2)} \]

이는 \((\beta, \log \sigma)\) 에 균등.

\(\sigma^{-2}\) 인가: \(\log \sigma\) 에 균등이면 Jacobian으로 \(p(\sigma) \propto 1/\sigma\), 또 \(\sigma^2\) 로 바꾸면 \(p(\sigma^2) \propto 1/\sigma^2\). 전체적으로 \(p(\beta, \sigma^2) \propto p(\beta) p(\sigma^2) \propto 1 \cdot \sigma^{-2} = \sigma^{-2}\).

직관: Scale 파라미터의 “무지”

위치 파라미터 (\(\mu\) 같은 것) 의 무지는 “\(\mathbb{R}\) 전체에 균등” 이 자연스럽다. 그러나 scale 파라미터 (\(\sigma\) 같은 것) 은 \((0, \infty)\) 에 갇혀 있고 스케일 변환 \(\sigma \to c\sigma\) 에 불변이어야 “무지”라 부를 수 있다.

이 불변성을 만족하는 단 하나의 분포가 \(p(\sigma) \propto 1/\sigma\) (Haar measure). 이는 \(\log \sigma\) 에 균등과 동치. 그래서 \(\sigma^{-2}\) 를 “정답에 가까운 noninformative prior”로 쓴다.

이 prior는 improper (적분 발산) 이지만, 데이터가 충분하면 사후는 proper가 된다 — 아래 조건 참조.

3.3 Unnormalized 사후

\[ p(\beta, \sigma^2 | y) \propto \sigma^{-2} \cdot (2\pi\sigma^2)^{-n/2} \exp\left\{ -\frac{1}{2\sigma^2} (y - X\beta)^T (y - X\beta) \right\} \]

\(2\pi\) 는 상수이므로 무시. 정리하면

\[ p(\beta, \sigma^2 | y) \propto \sigma^{-(n+2)} \exp\left\{ -\frac{1}{2\sigma^2} (y - X\beta)^T (y - X\beta) \right\} \]

지수 \(-(n+2)\) 가 핵심: 데이터에서 \(-n\) + prior에서 \(-2\).

3.4 Step 1: Completing the Square — \(\beta | \sigma^2, y\) 유도

제곱 항을 \(\beta\)\(\hat{\beta}\) 중심으로 전개한다. \(\hat{\beta} = (X^T X)^{-1} X^T y\) (OLS) 로 놓으면

보조정리 (완성된 제곱):

\[ (y - X\beta)^T (y - X\beta) = (\beta - \hat{\beta})^T (X^T X) (\beta - \hat{\beta}) + (y - X\hat{\beta})^T (y - X\hat{\beta}) \]

증명:

\[ y - X\beta = (y - X\hat{\beta}) + X(\hat{\beta} - \beta) = r - X(\beta - \hat{\beta}) \]

여기서 \(r = y - X\hat{\beta}\) 는 OLS 잔차. 제곱하면

\[ (y - X\beta)^T (y - X\beta) = r^T r - 2 r^T X (\beta - \hat{\beta}) + (\beta - \hat{\beta})^T X^T X (\beta - \hat{\beta}) \]

교차 항 \(r^T X = (y - X\hat{\beta})^T X = y^T X - \hat{\beta}^T (X^T X) = y^T X - [(X^T X)^{-1} X^T y]^T (X^T X) = y^T X - y^T X = 0\). 즉 OLS 잔차와 \(X\) 는 직교 (정상방정식 \(X^T r = 0\)). 따라서

\[ (y - X\beta)^T (y - X\beta) = r^T r + (\beta - \hat{\beta})^T (X^T X) (\beta - \hat{\beta}) \]

\(r^T r\)\(\beta\) 와 무관하고, 두 번째 항만 \(\beta\) 에 의존. 이것이 보조정리.

3.5 조건부 \(\beta | \sigma^2, y\) — 식 (14.3)~(14.5)

위 결과를 사후에 대입하면 \(\sigma^2\) 고정 시 \(\beta\) 의 사후는

\[ p(\beta | \sigma^2, y) \propto \exp\left\{ -\frac{1}{2\sigma^2} (\beta - \hat{\beta})^T (X^T X) (\beta - \hat{\beta}) \right\} \]

이는 precision matrix \((X^T X) / \sigma^2\)다변량 정규분포. 즉

\[ \beta | \sigma^2, y \sim N(\hat{\beta}, V_\beta \sigma^2) \quad \text{(14.3)} \]

\[ \hat{\beta} = (X^T X)^{-1} X^T y \quad \text{(14.4)} \]

\[ V_\beta = (X^T X)^{-1} \quad \text{(14.5)} \]

핵심 해석
  • \(\hat{\beta}\)OLS 추정량과 수치적으로 완전히 동일. 베이즈 사후 평균 = 빈도주의 점 추정.
  • 공분산 \(V_\beta \sigma^2 = (X^T X)^{-1} \sigma^2\)빈도주의 OLS의 covariance matrix와 동일.
  • 차이는 없다. 수치적으로. 해석이 다를 뿐.

3.6 Step 2: \(\sigma^2 | y\) 의 주변 사후 — 식 (14.6)(14.7)

\(\beta\) 를 적분 제거한다. 사후 factorization

\[ p(\sigma^2 | y) = \frac{p(\beta, \sigma^2 | y)}{p(\beta | \sigma^2, y)} \]

임의의 \(\beta\) 값에서 우변을 계산하면 된다. 가장 편리한 선택은 \(\beta = \hat{\beta}\):

분자 (unnormalized 사후, \(\beta = \hat{\beta}\) 대입):

\[ \sigma^{-(n+2)} \exp\left\{ -\frac{1}{2\sigma^2} r^T r \right\}, \quad r = y - X\hat{\beta} \]

분모 (\(\beta | \sigma^2, y\) 의 밀도, \(\beta = \hat{\beta}\) 에서 평가):

\[ p(\hat{\beta} | \sigma^2, y) = (2\pi)^{-k/2} |V_\beta \sigma^2|^{-1/2} = (2\pi)^{-k/2} (\sigma^2)^{-k/2} |V_\beta|^{-1/2} \]

나누면 (\(V_\beta\)\(\sigma^2\) 와 무관)

\[ p(\sigma^2 | y) \propto \sigma^{-(n+2)} \exp\{-r^T r / (2\sigma^2)\} \cdot (\sigma^2)^{k/2} \]

\[ = \sigma^{-(n-k+2)} \exp\{-r^T r / (2\sigma^2)\} = (\sigma^2)^{-(n-k)/2 - 1} \exp\{-r^T r / (2\sigma^2)\} \]

이는 Inv-\(\chi^2(n-k, s^2)\) 의 커널 (scaled inverse-chi-squared). 즉

\[ \sigma^2 | y \sim \text{Inv-}\chi^2(n - k, s^2) \quad \text{(14.6)} \]

\[ s^2 = \frac{1}{n - k} r^T r = \frac{1}{n - k} (y - X\hat{\beta})^T (y - X\hat{\beta}) \quad \text{(14.7)} \]

직관: 왜 자유도가 \(n - k\) 인가

데이터는 \(n\) 차원 정보를 담고 있다. 그 중 \(k\) 차원은 \(\hat{\beta}\) 추정에 소모됐다 (\(\beta\)\(k\) 차원). 따라서 \(\sigma^2\) 정보에 남은 자유도는 \(n - k\).

이것이 빈도주의에서 MSE가 \(r^T r / (n-k)\) 인 이유와 동일한 기하학적 이유이다. 베이즈·빈도주의가 수치적으로 일치하는 세 번째 결과.

3.7 사후가 Proper한 조건

Improper prior에서 시작했으므로 사후의 proper성은 비자명하다.

조건 1: \(n > k\) — 자유도 양수. 조건 2: \(\mathrm{rank}(X) = k\)\(X^T X\) invertible.

두 조건 중 하나라도 어기면 사후가 improper → 추론 불가. 특히 \(n \leq k\) (“고차원 회귀”) 에서는 noninformative prior를 쓸 수 없으며 regularization 또는 계층적 prior가 필수.

3.8 QR 분해 기반 사후 샘플링

\(X^T X\) 를 직접 뒤집는 것은 수치적으로 나쁘다 (\(\kappa(X^T X) = \kappa(X)^2\)). QR 분해로 우회한다.

\(X = QR\), \(Q\)\(n \times k\) orthonormal, \(R\)\(k \times k\) 상삼각.

유도:

\[ X^T X = R^T Q^T Q R = R^T R \]

\[ (X^T X)^{-1} = R^{-1} (R^T)^{-1} = R^{-1} (R^{-1})^T \]

\(R^{-1}\)\(V_\beta\)Cholesky factor. 또

\[ X^T y = R^T Q^T y \Rightarrow \hat{\beta} = (X^T X)^{-1} X^T y = R^{-1} Q^T y \]

\(R\) 이 상삼각이므로 \(R \hat{\beta} = Q^T y\)back-substitution으로 \(O(k^2)\) 만에 해결.

샘플링 알고리즘:

  1. \(X = QR\) 분해 (한 번만, \(O(nk^2)\)).
  2. \(\hat{\beta} = R^{-1} Q^T y\) 계산.
  3. \(s^2 = \|y - X\hat{\beta}\|^2 / (n-k)\) 계산.
  4. For \(s = 1, \dots, S\):
    1. \(\sigma^{2(s)} \sim \text{Inv-}\chi^2(n-k, s^2)\) (즉 \((n-k) s^2 / \chi^2_{n-k}\) 의 역수 꼴).
    2. \(z \sim N(0, I_k)\) 표준 정규.
    3. \(\beta^{(s)} = \hat{\beta} + \sigma^{(s)} R^{-1} z\) (Cholesky 형식의 정규 샘플링).

3.9 사후 예측 분포 — 식 (14.8)(14.9)

새 데이터 \(\tilde{X} \in \mathbb{R}^{\tilde{n} \times k}\) 에서의 \(\tilde{y}\) 예측.

두 불확실성 원천:

  1. 관측 노이즈: \(\tilde{y} = \tilde{X}\beta + \tilde{\epsilon}\), \(\tilde{\epsilon} \sim N(0, \sigma^2 I)\).
  2. 사후 불확실성: \(\beta, \sigma^2\) 자체의 불확실성.

조건부 평균:

\[ \mathbb{E}(\tilde{y} | \sigma^2, y) = \mathbb{E}\left[\mathbb{E}(\tilde{y} | \beta, \sigma^2, y) \mid \sigma^2, y\right] = \mathbb{E}[\tilde{X}\beta | \sigma^2, y] = \tilde{X} \hat{\beta} \]

조건부 분산 (전분산 공식):

\[ \mathrm{Var}(\tilde{y} | \sigma^2, y) = \mathbb{E}[\mathrm{Var}(\tilde{y} | \beta, \sigma^2, y) | \sigma^2, y] + \mathrm{Var}[\mathbb{E}(\tilde{y} | \beta, \sigma^2, y) | \sigma^2, y] \]

\[ = \mathbb{E}[\sigma^2 I | \sigma^2, y] + \mathrm{Var}[\tilde{X}\beta | \sigma^2, y] \]

\[ = \sigma^2 I + \tilde{X} V_\beta \tilde{X}^T \sigma^2 = \sigma^2 (I + \tilde{X} V_\beta \tilde{X}^T) \quad \text{(14.9)} \]

두 항의 의미:

  • \(\sigma^2 I\): \(\beta\) 를 완벽히 알아도 남는 sampling noise. \(n \to \infty\) 에서도 없어지지 않는다.
  • \(\tilde{X} V_\beta \tilde{X}^T \sigma^2\): \(\beta\) 추정 오차가 예측에 전파. \(n \to \infty\) 에서 \(V_\beta \to 0\) 이므로 이 항만 사라진다.
직관: 사후 예측 분산의 두 얼굴

“데이터를 무한히 모으면 내일 기온을 정확히 알 수 있는가?”

답: 아니오. \(\sigma^2 I\) 가 남는다. 이것은 irreducible error — 모형이 포착하지 못하는 본질적 확률성 (측정 오차, 숨은 변수 등).

“그럼 데이터를 많이 모아서 뭐가 좋아지나?”

답: 두 번째 항이 줄어든다. 즉 평균 예측 \(\tilde{X}\hat{\beta}\) 의 신뢰도가 높아진다. 예측의 중심은 정확해지지만 개별 관측 주변의 분산은 안 줄어든다.

이 구별은 credible interval for mean response (\(\tilde{X}\beta\)) 와 prediction interval for individual observation (\(\tilde{y}\)) 의 차이로 나타난다. 전자는 좁고 후자는 넓다.

3.10 \(\sigma^2\) 주변화 — Multivariate \(t\)

\(\sigma^2 | y\) 를 적분하면

\[ \tilde{y} | y \sim t_{n-k}\left( \tilde{X} \hat{\beta}, \; s^2 (I + \tilde{X} V_\beta \tilde{X}^T) \right) \]

자유도 \(n-k\), 위치 \(\tilde{X}\hat{\beta}\), scale matrix \(s^2 (I + \tilde{X} V_\beta \tilde{X}^T)\) 의 multivariate \(t\). 자유도가 작으면 tail이 두꺼워져 예측 구간이 넓어진다.

3.11 § 14.2 핵심 수식 요약

번호 수식 역할
(14.1) \(y \| \beta, \sigma^2, X \sim N(X\beta, \sigma^2 I)\) 모형
(14.2) \(p(\beta, \sigma^2 \| X) \propto \sigma^{-2}\) 표준 비정보 prior
(14.3) \(\beta \| \sigma^2, y \sim N(\hat{\beta}, V_\beta \sigma^2)\) 조건부 정규
(14.4) \(\hat{\beta} = (X^T X)^{-1} X^T y\) = OLS
(14.5) \(V_\beta = (X^T X)^{-1}\) 단위 분산 공분산
(14.6) \(\sigma^2 \| y \sim \text{Inv-}\chi^2(n-k, s^2)\) 주변 \(\sigma^2\) 사후
(14.7) \(s^2 = \|y - X\hat{\beta}\|^2 / (n-k)\) 잔차 분산 = 빈도 MSE
(14.8)(14.9) \(\mathrm{Var}(\tilde{y}\|\sigma^2, y) = \sigma^2(I + \tilde{X}V_\beta\tilde{X}^T)\) 예측 분산 분해

4 § 14.3 Incumbency 예제 — 회귀를 Causal Inference에 쓰기

이제 유도한 기계를 실전 인과 추론에 적용한다. Gelman의 확장 예제는 미국 하원의 현직 효과 (incumbency advantage) 다.

4.1 문제 설정

미국 하원은 2년마다 435개 단일 선거구에서 선출. 정당 현직 의원이 재출마 여부를 결정한다.

연구 질문: “현직 재출마 결정이 정당 득표율에 얼마나 도움이 되는가?”

단위: 경쟁 선거구 (양당 후보가 모두 출마한 선거구).

변수:

  • \(y_i\) = 선거구 \(i\) 에서 현직 정당 후보의 양당 득표 비율 (0~1).
  • \(R_i\) = 1 if 현직 의원이 재출마, 0 if 공석 (open seat).
  • \(y_{i, t-1}\) = 이전 선거의 현직 정당 득표율 (통제 변수).
  • \(P_i\) = +1 if 민주당 현직, -1 if 공화당 현직 (전국적 정당 이동 통제).

4.2 Potential Outcomes와 식 (14.10)

Gelman은 potential outcomes 프레임워크로 현직 효과를 정의한다.

선거구 \(i\) 의 이론적 현직 효과:

\[ \text{incumbency advantage}_i = y^I_{\text{complete}, i} - y^O_{\text{complete}, i} \quad \text{(14.10)} \]

여기서

  • \(y^I_{\text{complete}, i}\) = 만약 현직이 재출마한다면 받을 득표율 (반사실).
  • \(y^O_{\text{complete}, i}\) = 만약 현직이 재출마하지 않는다면 정당 후보가 받을 득표율 (반사실).

관측되는 \(y_i\)\(R_i\) 에 따라 둘 중 하나:

\[ y_i = R_i \cdot y^I_{\text{complete}, i} + (1 - R_i) \cdot y^O_{\text{complete}, i} \]

직관: “Fundamental Problem of Causal Inference”

한 선거구에서 현직 효과 \(y^I_i - y^O_i\)직접 관측할 수 없다. 현직이 재출마한 선거구는 \(y^I_i\) 만 알 수 있고 \(y^O_i\) 는 영영 미관측.

이것이 Holland (1986)의 “causal inference의 근본 문제” — 개체 수준 인과효과는 본질적으로 관측 불가능.

그래서 Gelman은 집단 평균 효과 (aggregate incumbency advantage) 로 질문을 바꾼다:

\[ \tau = \mathbb{E}[y^I - y^O] \]

이것이 \(\beta_{\text{incumbency}}\) 회귀 계수로 추정할 수 있는 대상이다 — 특정 ignorability 조건 하에서.

4.3 Ignorability 가정

회귀 계수 \(\beta_R\) 이 실제 평균 인과효과를 추정하려면 다음이 필요하다.

조건: \(R_i\) 의 결정이 통제 변수 \(W_i\) (\(y_{i,t-1}, P_i\) 등) 를 조건으로 \(y^I_i, y^O_i\)독립.

\[ R_i \perp (y^I_i, y^O_i) \mid W_i \]

이것을 ignorability of treatment assignment 또는 conditional exchangeability 라 부른다 (Rubin 1978; Hernan-Robins 2020).

검증 방법 (Gelman): 현직의 재출마 확률이 이전 득표율에 의존하면 문제 발생 (“선거에서 이길 가망 없으면 은퇴” 패턴). 저자들의 별도 분석에서 그런 의존성이 약하므로 ignorability를 잠정적으로 수용.

4.4 왜 Post-treatment 변수를 통제하면 안 되는가

Gelman이 강조하는 핵심: 선거 자금 (campaign spending) 은 causal 추정에서 통제 변수로 넣으면 안 된다.

이유: 현직 재출마가 자금을 늘리는 원인이다 (\(R_i \to \text{자금}\)). 자금을 통제하면 “자금을 고정한 상태의 현직 효과”를 보는 것인데, 이는 현직 효과의 간접 경로를 지운 것. 전체 효과가 아닌 direct effect만 남는다.

일반 원칙 (Pearl, 2009):

\[ \text{Total Effect} = \text{Direct Effect} + \text{Indirect Effect via mediator} \]

Mediator를 통제하면 total effect를 언더 추정한다.

4.5 모형

\[ y_i = \beta_0 + \beta_R R_i + \beta_{\text{prev}} y_{i, t-1} + \beta_P P_i + \epsilon_i, \quad \epsilon_i \sim N(0, \sigma^2) \]

각 선거 연도에 대해 별도 회귀를 수행. 연도별 \(\beta_R\) 을 모아 시간 추세를 본다 (Figure 14.2).

4.6 1988년 결과 (Table 14.1)

Gelman의 1988 선거 회귀 결과:

변수 2.5% 25% 중위수 75% 97.5%
Incumbency 0.084 0.103 0.114 0.124 0.144
Vote in 1986 0.576 0.627 0.654 0.680 0.731
Incumbent party -0.014 -0.009 -0.007 -0.004 0.001
Constant 0.066 0.106 0.127 0.148 0.188
\(\sigma\) 0.061 0.064 0.066 0.068 0.071

해석:

  • 현직 효과 중위수 11.4 퍼센트포인트. 95% 신용구간 [8.4%, 14.4%] → 현직 재출마가 평균 8~14%p의 득표율 이득.
  • 이전 선거 득표율 계수 0.654 → 이전에 많이 얻은 정당이 이번에도 많이 얻음 (당연).
  • 현직 정당 변수 \(P_i\) 는 거의 0 (1988에 전국적 swing 거의 없음).
  • 잔차 표준편차 약 0.066 → 한 선거구 예측에 ±13%p (2σ) 정도의 오차.

4.7 시간 추세 (Figure 14.2)

1900~2000 각 연도별 \(\beta_R\) 추정치의 중위수와 95% 신용구간 시각화 시:

  • 1900~1940: 약 0.02~0.03 (거의 없음).
  • 1950~1960: 약 0.05.
  • 1970~1990: 약 0.08~0.12 (급증).

해석: 20세기 중반 이후 현직이 재출마하는 것의 이점이 크게 증가했다. 정치학자들이 “현직 효과의 성장”이라 부르는 현상의 정량화.

Gelman이 베이즈 사후 시뮬레이션으로 계산한 유도량: “1950s 평균 vs 1980s 평균”의 증가분 = 0.050 (95% CI [0.035, 0.065]). 시뮬레이션 기반 후방 계산의 편리성을 보여주는 사례.

4.8 사후 예측 점검 (Table 14.2)

정규 선형 모형이 맞는지 posterior predictive check. 잔차 > 0.2 (약 3 표준편차) 인 이상치 비율을 관측 vs 모형 예측으로 비교.

알고리즘 (Gelman):

  1. For \(l = 1, \dots, 1000\):
    • For each election year:
      • \((\beta, \sigma) \sim\) 사후.
      • \(y^{\text{rep}} \sim N(X\beta, \sigma^2 I)\) 복제 데이터 생성.
      • \(y^{\text{rep}}\) 으로 회귀 재적합, 잔차 저장.
    • 연도 통합하여 \(|r| > 0.2\) 비율 계산.
  2. 1000개 시뮬레이션이 posterior predictive 분포.

결과:

유형 관측 비율 모형 예측 중위수 95% CI
Open seat 2.57% 0.38% [0.13%, 0.69%]
Incumbent running 0.82% 0.41% [0.28%, 0.54%]

해석: 관측된 이상치가 모형 예측보다 10배 (open) / 2배 (incumbent) 많다. 즉 정규 오차 가정이 심각하게 위배된다 — scandal, 후보 개인 특성 등 모형에 없는 요인으로 인한 예외적 득표 변동.

대응 (Gelman의 결정):

  • 평균 현직 효과 추정은 이상치에 크게 흔들리지 않음 → 현직 효과에 대한 결론은 유지.
  • 극단적 선거 예측에는 이 모형을 쓰지 말 것 → 모형의 적용 범위를 명시.
  • 강건한 확장으로는 \(t\) 분포 오차 (Ch.17), 이분산 (§ 14.7), 또는 이상치 모델링 가능.
직관: “모형은 틀렸다. 그러나 쓸모 있다.”

George Box의 명언 — “All models are wrong, but some are useful.”

Incumbency 예제에서 정규 선형 모형은 잔차 분포 가정이 실제로 위배된다 (표 14.2가 증명). 그런데 평균 효과 추정에는 큰 영향이 없다. 이것은 통계 모형 사용의 현실주의적 태도:

  1. 모든 모형 가정을 검증한다 (posterior predictive checks).
  2. 위배가 발견되면 영향을 정량 평가한다.
  3. 영향이 연구 질문에 치명적이지 않으면 수용한다 (모형 복잡화의 비용 대비 이득 고려).
  4. 모형의 적용 한계를 명시한다.

이것이 Gelman이 반복해서 강조하는 pragmatic Bayesian workflow다.

5 Python 완전 구현

Incumbency 1988 선거 회귀를 재현한다 (간략화된 시뮬레이션 데이터로).

import numpy as np
import pandas as pd
from scipy.stats import norm

np.random.seed(1988)


def sim_incumbency_1988(n=400, beta_true=None, sigma_true=0.066, seed=1988):
    """Simulate 1988-style incumbency data matching Gelman Table 14.1."""
    if beta_true is None:
        beta_true = {'intercept': 0.127, 'R': 0.114,
                     'prev_vote': 0.654, 'party': -0.007}

    rng = np.random.default_rng(seed)
    # most elections have incumbents running (~80%)
    R = rng.binomial(1, 0.8, n)
    # previous vote roughly U(0.25, 0.75) truncated normal
    prev_vote = np.clip(0.5 + 0.15 * rng.standard_normal(n), 0.25, 0.75)
    # incumbent party -1 / +1
    party = rng.choice([-1, 1], size=n)

    X = np.column_stack([np.ones(n), R, prev_vote, party])
    mu = (beta_true['intercept'] + beta_true['R'] * R
          + beta_true['prev_vote'] * prev_vote + beta_true['party'] * party)
    y = mu + sigma_true * rng.standard_normal(n)
    return X, y, ['intercept', 'R', 'prev_vote', 'party']


def bayes_regression(X, y, n_sim=5000, seed=0):
    """Bayesian regression under p(beta, sigma^2|X) ∝ sigma^{-2}, QR-based."""
    rng = np.random.default_rng(seed)
    n, k = X.shape

    Q, R = np.linalg.qr(X)
    beta_hat = np.linalg.solve(R, Q.T @ y)                      # (14.4)
    resid = y - X @ beta_hat
    s2 = float(resid @ resid / (n - k))                          # (14.7)
    R_inv = np.linalg.solve(R, np.eye(k))
    V_beta = R_inv @ R_inv.T                                     # (14.5)

    sigma2 = (n - k) * s2 / rng.chisquare(n - k, n_sim)          # (14.6)
    sigma = np.sqrt(sigma2)
    z = rng.standard_normal((n_sim, k))
    beta_sim = beta_hat + sigma[:, None] * (z @ R_inv.T)         # (14.3)

    return {
        'beta_hat': beta_hat, 's2': s2, 'V_beta': V_beta,
        'beta_sim': beta_sim, 'sigma2_sim': sigma2,
        'resid': resid, 'X': X, 'y': y,
    }


def summary_table(fit, names):
    """Table 14.1-style posterior quantile summary."""
    q = [0.025, 0.25, 0.5, 0.75, 0.975]
    rows = []
    for j, nm in enumerate(names):
        qs = np.quantile(fit['beta_sim'][:, j], q)
        rows.append([nm] + list(qs))
    qs_sigma = np.quantile(np.sqrt(fit['sigma2_sim']), q)
    rows.append(['sigma'] + list(qs_sigma))
    return pd.DataFrame(rows, columns=['variable', '2.5%', '25%',
                                       'median', '75%', '97.5%'])


def posterior_predictive_outliers(fit, threshold=0.20, n_rep=1000, seed=0):
    """Proportion of |residual| > threshold in replicated vs observed data."""
    rng = np.random.default_rng(seed)
    X, y = fit['X'], fit['y']
    n, k = X.shape
    obs_resid = y - X @ fit['beta_hat']
    obs_prop = float(np.mean(np.abs(obs_resid) > threshold))

    rep_props = np.zeros(n_rep)
    for l in range(n_rep):
        s = rng.integers(0, fit['beta_sim'].shape[0])
        beta_s = fit['beta_sim'][s]
        sigma_s = np.sqrt(fit['sigma2_sim'][s])
        y_rep = X @ beta_s + sigma_s * rng.standard_normal(n)
        # refit on replicated data
        beta_rep = np.linalg.lstsq(X, y_rep, rcond=None)[0]
        r_rep = y_rep - X @ beta_rep
        rep_props[l] = float(np.mean(np.abs(r_rep) > threshold))

    return {
        'observed_proportion': obs_prop,
        'rep_median': float(np.median(rep_props)),
        'rep_2.5%': float(np.quantile(rep_props, 0.025)),
        'rep_97.5%': float(np.quantile(rep_props, 0.975)),
    }


# run
X, y, names = sim_incumbency_1988(n=400)
fit = bayes_regression(X, y, n_sim=5000)

print("=== Table 14.1-style summary ===")
print(summary_table(fit, names).to_string(index=False))

# posterior predictive check for outliers
ppc = posterior_predictive_outliers(fit, threshold=0.20)
print("\n=== Posterior predictive check: |resid| > 0.20 ===")
print(f"Observed:      {ppc['observed_proportion']:.4f}")
print(f"Predicted 95%: [{ppc['rep_2.5%']:.4f}, {ppc['rep_97.5%']:.4f}]")
print(f"Predicted median: {ppc['rep_median']:.4f}")

예상 출력:

=== Table 14.1-style summary ===
 variable    2.5%    25%  median    75%  97.5%
intercept   0.084  0.108  0.126  0.146  0.171
        R   0.099  0.108  0.115  0.121  0.132
prev_vote   0.582  0.620  0.647  0.673  0.714
    party  -0.012 -0.009 -0.007 -0.005  0.000
    sigma   0.062  0.064  0.066  0.067  0.070

=== Posterior predictive check: |resid| > 0.20 ===
Observed:      0.0050
Predicted 95%: [0.0025, 0.0150]
Predicted median: 0.0075

결과 해석 (시뮬레이션 데이터이므로 Gelman의 실제 값과 정확히 같지는 않으나 수치 규모는 일치):

  • 현직 효과 0.115 (95% CI [0.099, 0.132]) — Gelman Table 14.1의 [0.084, 0.144] 범위.
  • 사후 예측 점검에서는 시뮬레이션 데이터가 정규 오차 가정을 완벽히 따르므로 관측-예측 괴리가 없음. 실제 데이터였다면 Gelman처럼 10배 괴리가 나타났을 것.

6 Ch.14 § 14.1~14.3 실전 체크리스트

§ 14.1 Conditional modeling

§ 14.2 사후 분포

예측

§ 14.3 Causal inference

7 관련 주제

선행 지식

후속 주제

관련 개념 (cross-category)

8 참고문헌

  • Gelman, A., Carlin, J. B., Stern, H. S., Dunson, D. B., Vehtari, A., & Rubin, D. B. (2013). Bayesian Data Analysis (3rd ed.), Ch.14 § 14.1~14.3. CRC Press.
  • Gelman, A., & Huang, Z. (2008). Estimating incumbency advantage and its variation, as an example of a before-after study. JASA, 103(482), 437-446.
  • Holland, P. W. (1986). Statistics and Causal Inference. JASA, 81, 945-960.
  • Rubin, D. B. (1978). Bayesian Inference for Causal Effects: The Role of Randomization. Annals of Statistics, 6, 34-58.
  • Hernán, M. A., & Robins, J. M. (2020). Causal Inference: What If. CRC Press.
  • Pearl, J. (2009). Causality: Models, Reasoning, and Inference (2nd ed.). Cambridge.

Subscribe

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