§ 6.1~6.3 — 모델 점검의 자리매김·외부 검증·사후 예측 점검의 기초

Gelman BDA Ch.6 심화 — 감도 분석·외부 검증·Bayesian p-value의 유도와 Newcomb 사례

Ch.6 overview 가 모델 점검의 지도였다면, 이 포스트는 § 6.1~6.3 의 실제 여정이다. 모델 점검이 베이즈 분석에서 차지하는 자리(6.1), 외부 지식·예측 구간과의 대조가 드러내는 모형의 약점(6.2), 사후 예측 분포를 이용한 자기 일관성 검사의 수학적 기초(6.3)를 차례로 전개한다. 복제 데이터 \(y^{rep}\) 의 수식 정의, 검정량·불일치 측도의 구분, Classical vs Bayesian p-value 의 유도, 시뮬레이션 기반 계산 알고리즘, 충족 통계량을 검정량으로 쓰면 안 되는 직관, Newcomb 광속 측정의 세 검정량 심화 — 수식 옆에 “왜 그런가” 를 반복해서 붙였다.

Statistics
Bayesian
저자

Kwangmin Kim

공개

2026년 04월 22일

1 개요 — 왜 § 6.1~6.3 을 한 포스트로 묶는가

Ch.6 는 다섯 절로 구성된다. 그중 § 6.1~6.3 은 모델 점검 전체를 떠받치는 개념 지반이다. § 6.4 그래픽 점검과 § 6.5 8 학교 적용은 이 지반 위에 올라가는 기법·사례다. 따라서 세 절을 한 덩어리로 묶어야 “철학 → 외부 기준 → 내부 자기 일관성 검사” 라는 논리적 동선이 끊어지지 않는다.

역할 한 줄 요약
6.1 자리매김 점검은 베이즈 분석의 세 번째 단계이자 감도 분석과 보완 관계다
6.2 외부 기준 모형 바깥 지식·미래 데이터로 사후 추론을 반증한다
6.3 내부 기준 모형이 만든 복제 데이터가 관측과 비슷한지 자체 점검한다

Overview 포스트(01-6-0-model-checking.qmd)가 세 절의 결론과 도구를 지도로 제시했다면, 이 포스트는 각 절의 근거·유도·직관을 실제 수식 단위에서 풀어 낸다. 코드 예제도 Newcomb 광속 데이터를 중심 사례로 삼아 세 검정량을 비교하는 형태로 확장한다.

2 § 6.1 — 모델 점검의 자리매김

2.1 베이즈 분석의 세 단계와 “의무화된” 세 번째 단계

Gelman BDA 는 적용 베이즈 분석을 세 단계로 개념화한다 (Gelman et al., 2013, Ch.1·Ch.6).

  1. 모형 구성 — 사전 \(p(\theta)\) 와 표집 분포 \(p(y \mid \theta)\) 지정.
  2. 사후 계산 — 베이즈 정리로 \(p(\theta \mid y)\) 유도.
  3. 모델 점검 — 구성한 모형이 현실의 어떤 측면을 놓쳤는지 진단.

세 번째 단계는 “하면 좋은 것”이 아니라 “분석의 일부”다. 이유는 수식이 아니라 조건부 논리에 있다. 사후분포 \(p(\theta \mid y)\) 의 모든 추론은 모형이 옳다는 조건부 확률이다. 모형이 현실과 크게 어긋나면, 사후분포는 여전히 “잘 정의된 확률 분포”지만 그 확률이 무엇을 나타내는지가 모호해진다.

직관 — 조건부 확률의 출발점이 잘못되면

사후 평균 \(\mathbb{E}[\theta \mid y]\) 은 “모형이 참일 때 관측 \(y\) 아래 \(\theta\) 의 평균값”이다. 모형이 참이 아니라면, 이 평균은 “참이 아닌 전제 하의 평균”이라는 공허한 수치가 된다. 공학의 비유로는, 두 점을 직선으로 이어 외삽하는데 그 직선이 실제 데이터 경로와 어긋나 있다면, 외삽 결과의 오차가 무한정 커지는 것과 같다. 모델 점검은 외삽의 방향을 확인하는 절차다.

2.2 감도 분석 — “다른 합리적 모형이면 결론이 뒤집히는가”

감도 분석(sensitivity analysis)은 다음 질문에 답한다.

합리적으로 생각할 수 있는 대안 모형 하에서 사후 추론이 얼마나 바뀌는가?

대안은 사전의 변경일 수도, 표집분포의 변경일 수도, 변수 선택의 변경일 수도 있다. 이론적으로는 초거대 결합 모형(super-model) 을 구성해 모든 대안을 포함시키면, 감도 분석이 사후 계산에 자동으로 녹아든다. 그러나 현실에서는 그런 super-model 을 구성하는 것 자체가 불가능하다. 따라서 실제 감도 분석은 여러 모형을 따로 돌려 사후 추론을 나란히 놓고 비교하는 방식으로 이뤄진다.

감도 분석과 모델 점검은 서로 다른 축의 진단이다.

질문 비교 대상
감도 분석 모형을 바꾸면 결론이 얼마나 바뀌는가 모형 간
모델 점검 현 모형이 데이터를 재현하는가 모형 ↔︎ 데이터

두 축을 함께 굴리지 않으면 “데이터에는 잘 맞지만 다른 합리적 모형과 결론이 다르다” 또는 그 반대 상황을 놓친다.

2.3 “참 / 거짓” 이 아니라 “문제에 적절한가”

Gelman 의 입장은 명시적이다.

“모델이 참인가 거짓인가” 가 아니라 “모델의 결함이 관심 추론에 눈에 띄는 영향을 주는가” 를 묻는다 (Gelman et al., 2013, Ch.6).

이 프레임이 실무에서 중요한 이유는 과도한 완벽주의를 막기 위해서다. 완벽한 모형이 불가능하다는 전제를 받아들이면, 초점은 “어떤 축에서 어긋나면 치명적인가” 로 옮겨간다. 예를 들어 보험 손실액 모형에서 평균과 분산은 잘 맞지만 극단 꼬리가 빗나가면, Expected Loss 는 쓸 수 있고 VaR 은 쓸 수 없다는 식의 부분적 사용 판단이 가능해진다. “참 / 거짓” 이분법은 이 부분적 사용 판단을 불가능하게 만든다.

3 § 6.2 — 모형 바깥의 지식으로 모형을 점검한다

3.1 사후 추론이 “말이 되는가” 라는 질문

확률 모형에는 분석자의 모든 실무 지식이 담기지 않는다. 편의상(사전 형태의 대칭성), 혹은 객관성의 이유로(실무 직관을 명시화하면 사전이 주관적으로 보일 수 있음), 많은 정보가 모형 바깥에 남는다. 이 모형 바깥 지식이 사후 추론과 충돌하면, 그 충돌은 모형 확장의 신호다.

Ch.6 는 이 점을 1992 미국 대선 예측 모형 예시로 설명한다. 계층 선형 회귀 모형이 선거 한 달 전 주별 Clinton 승리 확률을 추정했는데, Texas 와 Florida 주의 예측이 당시 주별 여론조사와 맞지 않았다. 모형을 폐기할 수준은 아니지만, 약점이 어디에 있는지를 지도상에 표시해둔다.

직관 — “실무 지식 대비 이상함” 의 활용

실무 지식은 종종 사후 추론의 오류를 국소화해준다. 전체가 이상한 것이 아니라 특정 주, 특정 시점, 특정 집단에서만 이상하다. 국소화는 모형 확장을 작고 구체적으로 만든다 — 전체 모형을 갈아엎지 않고 그 부분만 계층 추가, 상호작용 추가, 외부 공변량 추가 등으로 보강한다. 이것이 “실무 지식을 사후 분석의 오류 탐지기로 쓰는” 방식이다.

3.2 외부 검증 — 엄격한 재현성 테스트

보다 형식화된 점검이 외부 검증(external validation) 이다. 원리는 단순하다.

  1. 모형으로 미래 데이터를 예측한다 (점 예측 + 예측 구간).
  2. 실제 데이터를 수집한다.
  3. 예측 구간의 명목 수준이 지켜지는지 확인한다.

“명목 수준이 지켜진다” 는 말은, 50% 예측 구간이 전체의 절반 정도 실제값을 포함해야 하고, 80% 구간이 80% 정도를 포함해야 한다는 뜻이다. 이것이 지켜지면 모형의 캘리브레이션(calibration) 이 양호하다고 본다.

외부 검증은 원칙적으로 가장 신뢰할 만하지만, 현실의 제약이 크다.

  • 새 데이터를 기다릴 시간이 없다 (의사결정 마감).
  • 데이터 수집 비용이 크다 (임상시험, 센서 배포).
  • 환경이 변하여 “같은 모형의 반복” 이 불가능하다 (시장 구조 변화, 정책 변동).

이 제약을 우회하기 위한 Ch.6·Ch.7 의 전략이 이미 가진 데이터로 외부 검증을 흉내내는 방법이다. Ch.6 의 답이 사후 예측 점검이고, Ch.7 의 답이 교차 검증·WAIC 다.

4 § 6.3 — 사후 예측 점검의 기초

4.1 자기 일관성 검사 — 모형이 만든 세계와 실제 세계

사후 예측 점검의 작동 원리는 한 문장으로 요약된다.

모형이 적절하다면, 그 모형에서 생성된 복제 데이터는 관측 데이터와 비슷하게 보여야 한다 (Gelman et al., 2013, § 6.3).

이것이 자기 일관성 검사(self-consistency check) 다. 외부 기준을 들여오지 않고, 모형 자체가 만든 데이터 세계와 실제 관측 데이터를 나란히 놓고 비교한다. 차이가 크면 차이는 두 원인 중 하나에서 온다.

  • 모형 부적합 — 모형이 진짜 데이터 생성 과정의 어떤 축을 놓쳤다.
  • 우연 — 그 정도 불일치는 이 모형 하에서도 충분히 일어날 수 있다.

사후 예측 p-value 가 “우연으로 설명 가능한 정도”를 수치화한다.

4.2 복제 데이터 \(y^{rep}\) — 정의와 \(\tilde{y}\) 와의 차이

정의 1: 복제 데이터 (Replicated Data)

\(y\) 를 관측 데이터, \(\theta\) 를 모수 벡터(계층 모수 포함)라 하자. 복제 데이터 \(y^{rep}\) 는 오늘 관측된 실험을 같은 모형과 같은 \(\theta\) 로 다시 한 번 수행했을 때 관측될 수 있는 가상의 데이터다.

\(y^{rep}\)미래 예측 일반 표기 \(\tilde{y}\) 와 구분된다.

표기 의미 설계·설명변수
\(y^{rep}\) 같은 실험의 반복 \(y\)동일
\(\tilde{y}\) 임의의 미래 관측 \(y\)다를 수 있음

회귀 문맥으로 보면, \(y^{rep}\)같은 \(x\) 에서 얻은 복제 결과이고, \(\tilde{y}\)새로운 \(\tilde{x}\) 에서의 예측이다.

직관 — 왜 설계를 고정하는가

모델 점검의 목표는 “이 데이터의 이 모양을 모형이 재현하는가” 다. 설명변수가 바뀌면 “모양 비교” 가 의미를 잃는다. 예컨대 같은 선형 회귀 모형으로 \(x\) 범위가 다른 두 데이터를 생성하면 분산·분포 모양이 체계적으로 달라진다 — 이건 모형의 부적합이 아니라 설계의 차이다. 따라서 \(y^{rep}\)\(x\)\(y\) 와 똑같이 두어 모형의 재현력만 분리한다.

4.3 사후 예측 분포 — 수식과 해석

정의 2: 사후 예측 분포 (Posterior Predictive Distribution)

복제 데이터의 분포는 다음 적분으로 정의된다.

\[ p(y^{rep} \mid y) = \int p(y^{rep} \mid \theta) \, p(\theta \mid y) \, d\theta \tag{6.1} \]

사전 예측 분포 \(p(y) = \int p(y \mid \theta) p(\theta) d\theta\)사후 버전이라고 생각하면 된다. 사전 대신 사후를 이용한 평균이다.

이 분포를 직관적으로 읽는 두 가지 방식이 있다.

  1. 모수 불확실성을 담은 예측\(\theta\) 를 한 값으로 고정하지 않고 사후 표본에 걸쳐 평균 낸 예측. “현재 지식으로 판단할 때 나올 법한 데이터 범위” 를 준다.
  2. 일관성의 기준 — “이 모형이 스스로에게 기대하는 데이터 모양” 을 기술. 관측이 이 범위에서 벗어나면 자기 일관성 위반.

4.4 검정량 \(T(y, \theta)\) — 불일치의 방향을 지정한다

정의 3: 검정량 (Test Quantity)

관측과 모형의 불일치 정도를 요약하는 스칼라 함수 \(T(y, \theta)\) 를 검정량이라 한다. 두 가지 특수형이 있다.

명칭 의존성 범주
검정 통계량 (test statistic) \(T(y)\) — 데이터만 고전적 개념과 일치
불일치 측도 (discrepancy measure) \(T(y, \theta)\) — 데이터 + 모수 베이즈 특유

검정량은 모형을 어디에서 부수고 싶은가 를 수학적으로 표현한다. 예시:

관심 축 검정량 해석
중심 \(\bar{y}\) 평균이 맞는가
산포 \(s^2(y)\) 분산이 맞는가
꼬리 극단 \(\min y_i\), \(\max y_i\) 극단값을 재현하는가
이상치 수 \(\#\{i : \lvert y_i - \bar{y} \rvert > 3s\}\) 3 시그마 이탈 개수
비대칭 \(\lvert y_{(q_{0.9})} - \theta \rvert - \lvert y_{(q_{0.1})} - \theta \rvert\) 좌·우 꼬리 비대칭
상관 \(\mathrm{corr}(y_t, y_{t-1})\) 시계열 자기상관

불일치 측도 \(T(y, \theta)\)모수 의존성을 허용하여, 검정량이 “모형이 상정한 잔차 척도” 를 사용할 수 있게 해준다. 예를 들어 잔차를 \(\sigma\) 로 표준화한 뒤의 비대칭을 보려면 \(T(y, \theta) = \mathrm{skew}((y - \mu)/\sigma)\) 같은 형태를 쓴다.

4.5 충족 통계량을 \(T\) 로 쓰면 안 되는 이유

함정 — 충족 통계량(sufficient statistic)을 \(T\) 로 쓰면 \(p_B \approx 0.5\)

표본 분산 \(s^2(y)\) 은 정규 모형에서 \(\sigma^2\) 의 충족 통계량이다. 무정보 사전 하에서 사후분포는 관측 \(s^2\) 근처에 자동으로 중심을 잡는다. 따라서 사후 예측 분포의 \(s^2(y^{rep})\) 도 같은 위치에 중심이 잡히고, \(p_B\) 는 0.5 근처에 박힌다.

즉, “모형이 잘 맞는다” 는 진단이 자동으로 나온다 — 적합해서가 아니라 \(T\) 가 모형이 이미 맞추기로 약속한 양이라서. 점검의 재료로서 충족 통계량은 쓸모가 없다.

이 함정의 직관적 이유를 한 줄로 말하면, “모형이 자기가 잘 맞추는 것을 자기 점검에 쓰면 당연히 잘 맞는다” 는 순환성 이다. 점검의 의미 있는 후보는 모형이 명시적으로 맞추지 않는 측면 이다 — 극단 꼬리, 비대칭, 이상치 빈도, 자기상관 등.

4.6 Classical p-value vs Bayesian p-value — 유도와 차이

고전적 검정에서 p-value 는 다음과 같이 정의된다.

\[ p_C = \Pr\!\left(T(y^{rep}) \geq T(y) \,\middle|\, \theta\right) \tag{6.2} \]

여기서 확률은 \(\theta\) 를 고정한 \(y^{rep}\) 의 분포 위에서 취해진다. \(\theta\) 가 고정되어야 하므로 실전에서는 MLE 같은 점 추정치를 대입하거나 null 값을 쓴다.

베이즈 버전은 \(\theta\) 를 고정하지 않고 사후분포로 처리한다.

정의 4: Bayesian 사후 예측 p-value

\[ p_B = \Pr\!\left(T(y^{rep}, \theta) \geq T(y, \theta) \,\middle|\, y\right) \tag{6.3} \]

여기서 확률은 결합 분포 \(p(\theta, y^{rep} \mid y) = p(y^{rep} \mid \theta) p(\theta \mid y)\) 위에서 취해진다. 적분 형태로는

\[ p_B = \iint I_{\{T(y^{rep}, \theta) \geq T(y, \theta)\}} \; p(y^{rep} \mid \theta) \, p(\theta \mid y) \; dy^{rep} \, d\theta . \]

세 가지 구조적 차이:

항목 고전 \(p_C\) 베이즈 \(p_B\)
조건 \(\theta\) 고정 \(y\) 고정, \(\theta\) 사후분포 위 적분
검정량 의존성 \(T(y)\) (데이터만) \(T(y, \theta)\) 허용
nuisance parameter 별도 처리 필요 자동 적분
직관 — “사후분포가 nuisance를 먹어버린다”

고전적 검정의 고질적 문제는 방해 모수(nuisance parameter) 처리였다. 관심 모수 외의 모수가 있을 때 이들을 어떻게 제거할지 — profile likelihood, plug-in, conditional distribution 등 여러 기법이 필요했다.

베이즈는 이 문제를 사후 시뮬레이션의 구조 안에 녹인다. \(T(y, \theta)\)\(\theta\) 는 이미 \(p(\theta \mid y)\) 에서 뽑히므로, 모든 불확실성이 검정량 값의 분포에 흡수된다. 방해 모수를 따로 처리할 필요가 없다. 계산 관점에서는 “사후에서 \(\theta\) 를 뽑고, 그 \(\theta\)\(y^{rep}\) 를 뽑고, 그 쌍에서 \(T\) 를 평가한다” 는 한 줄 루프로 끝난다.

4.7 시뮬레이션 기반 계산 — 한 줄 루프

실제 계산은 사후 시뮬레이션으로 이뤄진다. \(\theta^{(s)} \sim p(\theta \mid y)\)\(S\) 개 뽑았다면:

  1. \(\theta^{(s)}\) 마다 \(y^{rep,(s)} \sim p(y^{rep} \mid \theta^{(s)})\)한 개 뽑는다.
  2. \((y, \theta^{(s)})\)\((y^{rep,(s)}, \theta^{(s)})\) 에서 각각 \(T\) 를 계산한다.
  3. 근사값

\[ p_B \approx \frac{1}{S} \sum_{s=1}^{S} I\!\left[\, T(y^{rep,(s)}, \theta^{(s)}) \geq T(y, \theta^{(s)}) \,\right] . \]

MCMC 결과가 이미 있다면 추가 비용은 \(S\)\(y^{rep}\) 를 뽑는 \(O(S \cdot n)\) 의 한 번 루프다. 이것이 “베이즈 p-value 는 거의 공짜” 라는 말의 근거다.

4.8 추정된 \(p_B\) 의 해석

\(p_B\) 범위 해석
\(\approx 0.5\) 관측된 \(T\) 가 사후 예측 분포의 중심에 있음 — 이 축에서 모형이 재현
\(\ll 0.5\) 관측 \(T\) 가 복제 예측보다 작은 쪽 극단 — 모형이 그 측면을 과대 예측
\(\gg 0.5\) 관측 \(T\) 가 복제 예측보다 큰 쪽 극단 — 모형이 과소 예측
\(\approx 0\) 또는 \(\approx 1\) 체계적 부적합 — 모형 확장 필요

주의: 고전 p-value 의 0.05 기준을 그대로 가져오지 않는다. 베이즈 점검은 여러 검정량을 종합하여 판단한다. 특정 \(p_B\) 의 값보다 “여러 검정량에서 체계적으로 극단 쪽으로 쏠리는 패턴” 이 더 중요한 신호다.

5 Newcomb 광속 측정 — 세 검정량으로 모형의 약점을 국소화

5.1 사례 배경

Simon Newcomb 는 1882 년 광속을 66 회 측정했다 (Newcomb, 1882; Gelman BDA § 3.2 참조). 데이터의 히스토그램은 중심 주변에서는 대칭적으로 보이지만, 좌측에 큰 음의 이상치 두 개( \(-44\), \(-2\) 단위)가 있다.

단순 정규 모형을 적합해본다.

\[ y_i \mid \mu, \sigma^2 \sim \mathcal{N}(\mu, \sigma^2), \qquad p(\mu, \sigma^2) \propto \sigma^{-2} . \]

이 비정보 사전 하에서 joint posterior 는 \(\mu \mid \sigma^2, y \sim \mathcal{N}(\bar{y}, \sigma^2/n)\), \(\sigma^2 \mid y \sim \text{Inv-}\chi^2(n-1, s^2)\) 로 분해된다 (Gelman BDA Ch.3).

5.2 검정량 세 개의 진단

모형이 적합한지 평가하기 위해 세 가지 \(T\) 를 써본다.

5.2.1 검정량 1 — 표본 분산 \(T_1(y) = s^2(y)\)

\(s^2\)\(\sigma^2\) 에 대해 충족 통계량에 가깝다. 무정보 사전 하에서 사후 예측 분포의 \(s^2(y^{rep})\) 은 관측 \(s^2\) 근처에 자동 중심이 잡힌다.

결과: \(p_B \approx 0.48\) — “잘 맞는다” 처럼 보이지만 이것은 함정이다. 모형 자체가 맞추도록 설계된 양을 점검에 썼기 때문.

5.2.2 검정량 2 — 최솟값 \(T_2(y) = \min y_i\)

관측 최솟값은 \(-44\). 정규 모형의 복제에서 66 개 표본 중 최솟값이 \(-44\) 에 도달할 확률은 매우 낮다.

결과: \(p_B \approx 0\)정규 꼬리가 이상치를 재현하지 못한다 는 명백한 진단.

5.2.3 검정량 3 — 비대칭 \(T_3(y, \theta) = \lvert y_{(61)} - \theta \rvert - \lvert y_{(6)} - \theta \rvert\)

61 번째와 6 번째 순서 통계량은 약 90% 와 10% 분위수에 해당. 중심 주변의 좌·우 편차 차이를 본다.

결과: \(p_B \approx 0.26\) — 중심 근처의 비대칭은 심각하지 않음. 정규 꼬리는 확실히 부적합하지만, 중심 분포 모양은 허용 범위.

5.3 진단의 종합

세 검정량의 조합이 모형의 약점을 국소화한다.

진단
평균·분산 정규 모형이 잘 재현
극단 꼬리 이상치를 거의 재현 못함
중심 비대칭 허용 범위

실무적 결론: 평균·분산이 관심 추론이면 정규 모형이 “쓸 만하다”. 극단값 또는 이상치 확률이 관심 추론이면 t-분포로 표집분포를 바꾸거나 이상치를 별도 성분으로 분리하는 혼합 모형 이 필요하다.

직관 — 한 개 검정량으로는 부족하다

세 검정량이 서로 다른 \(p_B\) 를 보여준다는 사실이 점검의 핵심이다. “모형이 적합한가 / 부적합한가” 는 0-1 답이 아니라 축별 답이다. 실무에서는 관심 추론에 따라 어느 축이 맞는지만 보면 된다. 모든 축이 맞아야 하는 건 아니다.

6 코드 — 세 검정량 사후 예측 점검 구현

Newcomb 데이터를 모방한 합성 데이터로 세 검정량의 \(p_B\) 를 계산한다.

6.1 Step 1 — numpy 로 사후 표본 + 사후 예측 샘플 직접 구현

import numpy as np

rng = np.random.default_rng(42)

# Newcomb 스타일: 정규 + 음의 꼬리 이상치
y_clean = rng.normal(28, 5, size=64)
y = np.concatenate([y_clean, np.array([-44.0, -2.0])])
n = len(y)

ybar = y.mean()
s2 = y.var(ddof=1)

# 무정보 사전 하 joint posterior
S = 4000
sigma2_samples = (n - 1) * s2 / rng.chisquare(df=n - 1, size=S)
sigma_samples = np.sqrt(sigma2_samples)
mu_samples = rng.normal(loc=ybar, scale=sigma_samples / np.sqrt(n))

# 각 사후 표본마다 y^rep 한 세트 (크기 n) 생성
y_rep = rng.normal(
    loc=mu_samples[:, None],
    scale=sigma_samples[:, None],
    size=(S, n),
)

# --- 검정량 1: 표본 분산 ---
T1_obs = np.full(S, y.var(ddof=1))        # y 는 고정, mu 무관
T1_rep = y_rep.var(axis=1, ddof=1)
p_B_1 = np.mean(T1_rep >= T1_obs)

# --- 검정량 2: 최솟값 ---
T2_obs = np.full(S, y.min())
T2_rep = y_rep.min(axis=1)
p_B_2 = np.mean(T2_rep <= T2_obs)  # 극단 작은 값이 관심이므로 <=

# --- 검정량 3: 비대칭 (순서 통계량 61, 6) ---
y_sorted = np.sort(y)
T3_obs = np.abs(y_sorted[60] - mu_samples) - np.abs(y_sorted[5] - mu_samples)

y_rep_sorted = np.sort(y_rep, axis=1)
T3_rep = (
    np.abs(y_rep_sorted[:, 60] - mu_samples)
    - np.abs(y_rep_sorted[:, 5] - mu_samples)
)
p_B_3 = np.mean(T3_rep >= T3_obs)

print(f"p_B(variance)  = {p_B_1:.3f}")   # ~ 0.5 — 충족 통계량 함정
print(f"p_B(min)       = {p_B_2:.3f}")   # ~ 0 — 꼬리 부적합
print(f"p_B(asymmetry) = {p_B_3:.3f}")   # 중간값

결과 해석은 앞 절의 세 검정량 표와 동일하다. p_B(min) 가 0 에 붙으면 정규 꼬리가 이상치를 재현하지 못하는 것이다.

6.2 Step 2 — pymc + arviz 로 실무 워크플로

import numpy as np
import pymc as pm
import arviz as az

rng = np.random.default_rng(42)
y_clean = rng.normal(28, 5, size=64)
y = np.concatenate([y_clean, np.array([-44.0, -2.0])])

with pm.Model() as normal_model:
    mu = pm.Normal("mu", mu=0, sigma=100)
    sigma = pm.HalfNormal("sigma", sigma=100)
    y_obs = pm.Normal("y_obs", mu=mu, sigma=sigma, observed=y)

    idata = pm.sample(2000, tune=1000, target_accept=0.95,
                      random_seed=42, return_inferencedata=True)
    idata.extend(pm.sample_posterior_predictive(idata, random_seed=42))

# 시각적 점검 — 관측 KDE vs 복제 KDE 겹침
az.plot_ppc(idata, num_pp_samples=100)

# 검정량별 Bayesian p-value 시각화
az.plot_bpv(idata, kind="t_stat", t_stat="mean")
az.plot_bpv(idata, kind="t_stat", t_stat="std")
az.plot_bpv(idata, kind="t_stat", t_stat="min")  # 이 그림에서 부적합이 명확해짐

arviz.plot_bpv 는 사후 예측 p-value 시각화를 자동화한다. t_stat="min" 그림에서 관측 최솟값이 복제 분포의 좌측 극단 밖에 위치하는 것이 한눈에 보인다.

6.3 모형 확장 — t-분포 혼합

진단 결과가 나왔다면 모형을 확장한다. Newcomb 예시의 자연스러운 확장은 t-분포 표집 모형 이다.

with pm.Model() as robust_model:
    mu = pm.Normal("mu", mu=0, sigma=100)
    sigma = pm.HalfNormal("sigma", sigma=100)
    nu = pm.Exponential("nu", 1/30)  # 자유도; 값이 클수록 정규에 가까움
    y_obs = pm.StudentT("y_obs", nu=nu, mu=mu, sigma=sigma, observed=y)

    idata_robust = pm.sample(2000, tune=1000, target_accept=0.95,
                             random_seed=42, return_inferencedata=True)
    idata_robust.extend(pm.sample_posterior_predictive(idata_robust, random_seed=42))

az.plot_bpv(idata_robust, kind="t_stat", t_stat="min")

t-분포의 두꺼운 꼬리가 이상치를 더 잘 흡수하므로, t_stat="min"\(p_B\) 가 0 을 벗어나 합리적 범위로 들어오는 것이 관찰된다. 진단 → 확장 → 재진단 의 사이클이 베이즈 모델링의 실전 동선이다.

7 실전 체크리스트

사후 예측 점검을 의사결정 파이프라인에 녹일 때 쓰는 7 단계 체크리스트.

  1. 관심 추론 정렬 — 평균·분산·꼬리·자기상관 중 무엇이 의사결정에 중요한가. 그 축에 해당하는 \(T\) 를 우선 선택.
  2. 검정량 3~5 개 — 한 개로는 부족. 평균·분산·극단·비대칭을 커버하는 조합이 기본.
  3. 충족 통계량 제외 — 모형이 자동 맞추는 양을 \(T\) 로 쓰지 않는다.
  4. 스칼라 + 시각화\(p_B\) 와 KDE·산점도·잔차 플롯을 함께 본다.
  5. 극단 \(p_B\) 는 모형 확장 신호 — 0 또는 1 근처면 확장(t-분포, 혼합, 계층화, 비선형 등).
  6. 확장 후 재진단 — 한 번의 통과로 끝내지 않는다. 확장이 새 부적합을 만들 수 있다.
  7. 도메인 지식과 교차 확인 — 모든 \(p_B\) 가 0.5 근처여도 실무 직관과 충돌하면 외부 검증이 필요하다.

8 관련 주제

선행 지식

Ch.6 후속 절

후속 주제

  • Ch.7 Evaluating, Comparing, and Expanding Models — WAIC·LOO-CV (후속 작성)
  • 혼합 모형·t-분포 표집 (Ch.17 Robust inference)

관련 개념

  • 고전적 p-value (Casella & Berger, 2002, Ch.8) — \(p_C\)\(p_B\) 의 수학적 차이
  • 사후 예측 분포 vs 사전 예측 분포 — 점검 기준이 어느 분포에 기반하는가
  • MCMC 수렴 진단 — 사후 시뮬레이션 품질이 \(p_B\) 의 신뢰도를 좌우

Subscribe

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