본문으로 바로가기
베이지안 통계 with R - 3. 베타-이항분포(beta-binomial dist.)와 사후예측분포(posterior predictive dist.)에 대하여

이전 포스팅에서 우리는 베타분포와 이항분포의 예제를 사용하여 켤레분포(conjugate dist.)에 대하여 알아보았다. 켤레분포를 사용하여 베이지안 모델링을 할 경우 사후분포와 사전분포가 동일한 종류의 분포를 따르게되어, 주어진 데이터의 정보를 사전분포의 모수에 추가하는(데이터의 정보가 사전분포의 모수에 업데이트되는) 형태가 되어 계산과 해석면에서 좋은 점이 있다고 생각한다.

이번 포스팅에서는 구해진 사후 분포를 통하여 앞으로의 데이터의 값을 예측하는데에 사용하는 posterior predictive dist.에 대하여 알아보도록 하겠다.

이전 세팅 복습하기

이전 포스팅의 둘리의 데이터와 길동이의 세팅을 그대로 사용하자. 먼저 길동의 사전분포는 베타분포 \(\alpha=6, \beta=12\)를 따랐으며, 둘리의 시범경기의 데이터는 15차례의 타석 중 7번을 출루하는데 성공했었다. 데이터 분포는 n번 타석에 y을 출루율 \(\theta\)에 따라 출루하는 이항분포를 모델을 설정하였으며,

\[ \begin{align*} Y|\Theta=\theta & \sim Bin\left(n,\theta\right)\\ & \sim p\left(y|\theta\right)=\left(\begin{array}{c} n\\ y \end{array}\right)\theta^{y}\left(1-\theta\right)^{n-y} \end{align*} \]

이러한 정보를 이용하여 길동의 사후분포는 베타분포 \(\alpha^*=\alpha+7=6+7\), \(\beta^*=\beta+8=12+8\)를 따르게 되었다. 따라서, 길동의 사후분포의 밀도함수는 다음과 같다.

\[ p\left(\theta;\alpha^*=13,\beta^*=20\right)=\begin{cases} \frac{\theta^{13-1}(1-\theta)^{20-1}}{B(13,20)}\! & \theta\in\left[0,1\right]\\ 0 & otherwise \end{cases} \]

다음 경기 출루률은?

길동은 내일 열리는 정규시즌에서 둘리를 3번 타석에 들어서게 할 생각이다. 길동은 둘리가 몇 번 출루를 할 것이라고 생각할까? 이 숫자를 예측하기 위해서는 오늘 배울 사후 예측 분포(posterior predictive dist.)를 구해야한다. 둘리의 다음 출루 횟수를 \(y^*\)라고 할 때, \(y^*\)에 대한 사후예측 분포는 다음과 같이 구할 수 있다.

\[ p\left(y^{*}|y\right)=\int_{-\infty}^{\infty}p\left(y^{*}|\theta\right)p\left(\theta|y\right)d\theta \]

위의 식을 살펴보면, 사후 예측 분포는 데이터가 반영된 사후분포의 각 모수에 따라서 \(y^*\)가 가질 수 있는 모든 값을 고려하여 계산이 되는 것을 알 수 있다. 둘리 출루율에 대한 예제를 위의 식을 사용하여 구해보면 다음과 같다.

\[ \begin{align*} p\left(y^{*}|y\right) & =\int_{0}^{1}p\left(y^{*}|\theta\right)p\left(\theta|y\right)d\theta\\ & =\int_{0}^{1}\left(\begin{array}{c} n^{*}\\ y^{*} \end{array}\right)\theta^{y^{*}}\left(1-\theta\right)^{n^{*}-y^{*}}\frac{1}{B\left(\alpha^{*},\beta^{*}\right)}\theta^{\alpha^{*}-1}\left(1-\theta\right)^{\beta^{*}-1}d\theta\\ & =\left(\begin{array}{c} n^{*}\\ y^{*} \end{array}\right)\frac{1}{B\left(\alpha^{*},\beta^{*}\right)}\int_{0}^{1}\theta^{\alpha^{*}+y^{*}-1}\left(1-\theta\right)^{\beta^{*}+n^{*}-y^{*}-1}d\theta\\ & =\left(\begin{array}{c} n^{*}\\ y^{*} \end{array}\right)\frac{B\left(\alpha^{*}+y^{*},\beta^{*}+n^{*}-y^{*}\right)}{B\left(\alpha^{*},\beta^{*}\right)}\\ & =\left(\begin{array}{c} n^{*}\\ y^{*} \end{array}\right)\frac{B\left(\alpha+y+y^{*},\beta+n-y+n^{*}-y^{*}\right)}{B\left(\alpha+y,\beta+n-y\right)} \end{align*} \]

위의 계산에서 \(n, y\)\(n^*, y^*\)를 구분해서 이해해야 하는데, \(n, y\)의 경우는 길동의 사후분포에 사용된 데이터, 즉, 둘리의 시범 경기 성적인 15타석과 7번의 출루에 대응하게 된다. 한편, \(n^*, y^*\)의 경우는 길동이 다음 경기에 둘리를 내보낼 3번의 타석과 그 중 둘리가 출루에 성공할 횟수에 대응한다.

마지막 행은 베타분포의 밀도함수가 적분해서 1이 되어야하므로 성립한다. 이렇게 계산된 분포를 베타-이항 분포(beta-binomial dist.)라고 부르며, 이산형 확률분포 중 하나가 된다.

따라서 둘리의 다음 3타석의 출루 횟수에 대한 기대값은 다음과 같다.

\[ \begin{align*} \mathbb{E}\left[Y^{*}|y\right] & =\frac{n^{*}\left(\alpha+y\right)}{\alpha+\beta+n}\\ & =\frac{3\times\left(6+7\right)}{6+12+15}\\ & =\frac{39}{33}=1.1818 \end{align*} \]

기댓값은 1.18이지만, 둘리의 출루횟수는 0 혹은 자연수이므로, 길동이는 둘리가 다음 경기에서 1번은 출루할 수 있을 것이라고 예측하는 것이 합리적일 것이다.

베타-이항 분포 확률질량함수

마지막으로 길동이의 사후 예측 분포인 베타-이항 분포의 질량 함수를 그려보도록 하자. 베타-이항 분포의 질량함수의 모수 중 \(n\)은 자연수이고, \(\alpha >0, \beta >0\) 인 실수이다.

\[ p(y; n, \alpha, \beta) = {n \choose y}{\frac {{\mathrm {B}}(y+\alpha ,n-y+\beta )}{{\mathrm {B}}(\alpha ,\beta )}}\! \]

위의 함수를 R에서 정의하면 다음과 같다.

dbeta_bin <- function(y, n, a, b, log = FALSE){
  f <- function(k){lchoose(n, k) + lbeta(k+a, n-k+b) - lbeta(a, b)}
  result <- sapply(y, f)
  if (log == TRUE) result else exp(result)
}
prob <- dbeta_bin(0:3, 3, 13, 20)
prob; sum(prob)
## [1] 0.23529412 0.41711230 0.27807487 0.06951872
## [1] 1
barplot(prob, names.arg = 0:3,
        main = "Beta-Binomial pmf n=3, alpha=13, beta=20",
        xlab = "y")


Reference

[1] Wikipedia Beta-binomial distribution: https://en.wikipedia.org/wiki/Beta-binomial_distribution


SHARE TO

신고


티스토리 툴바