실습 · 연습문제 1개
시뮬레이션 기반 보정(SBC)의 순위 통계량 sbc-ranks
사후분포를 계산하는 코드가 맞는지 확인하는 일반적인 방법이 시뮬레이션 기반 보정(simulation-based calibration, SBC)이다. 한 번의 시뮬레이션은 다음과 같다.
- 사전분포에서 참값 를 뽑는다.
- 그 참값으로 데이터 를 시뮬레이션한다.
- 검사할 추론 코드로 사후 표본 을 얻는다.
- 참값의 순위 를 기록한다. 은 중 하나다.
추론이 정확하면 은 위에서 균일분포를 따른다.
두 함수를 완성한다.
sbc_ranks(prior_sample, simulate, posterior_sample, n_sims, L, rng): 위 과정을n_sims번 반복해 순위 배열(정수, shape(n_sims,))을 반환한다. 세 함수 인자의 호출 방식은 다음과 같다.prior_sample(rng)→ 참값 하나simulate(theta, rng)→ 데이터posterior_sample(data, L, rng)→ 사후 표본 배열 shape(L,)
rank_counts(ranks, L, n_bins): 순위를 범위의 같은 너비 구간n_bins개로 나눈 개수. 이n_bins로 나누어떨어진다고 가정한다(예: , 10칸). 합은len(ranks)다.
테스트는 Gamma–Poisson 켤레 모델로 확인한다. 올바른 사후분포에서는 순위가 균일하고, 분산을 줄인(과신한) 사후분포에서는 양 끝 칸에 순위가 몰리며, 평균을 옮긴(편향된) 사후분포에서는 한쪽으로 몰린다.