ある産地のミカンを3個食べました。3個とも「甘い」ミカンでした。改めてこの産地のミカンをひょいと1つとって食べたとき、このミカンが「甘い」確率は?ただし、ミカンは「甘い」「酸っぱい」の2種類しかないとし、その確率は、それぞれ $\theta,1-\theta$。

共役分布を使った計算

$x_i$は、$i$番目のミカンが甘い($x_i=1$)か酸っぱいか($x_i=0$)の離散変数。
3個分のデータ得られた$\theta$の事後確率は、
$$
\Pr(\theta|x_1,x_2,x_3)=\frac{\Pr(x_1,x_2,x_3|\theta)\Pr(\theta)}{\Pr(x_1,x_2,x_3)}
$$
このうち、尤度は、
$$
\Pr(x_1,x_2,x_3|\theta)={}_3C_3\theta^3(1-\theta)^{3-3}=\theta^3
$$
の二項分布となる。

事前分布$\Pr(\theta)$に一様分布$\Pr(\theta)=1$を仮定すると、事後分布は、
$$
\Pr(\theta|x_1,x_2,x_3)=k\theta^3\propto \theta^3
$$
であり、$Be(4,1)$のベータ分布となる。

事前分布を一様分布とした場合
curve(dunif,0,1,ylim=c(0,4))
curve(4*x^3,0,1,add=T,col=2)
legend(0,4,c("事前分布","事後分布"),lty=c(1,1),col=c(1,2),cex=0.8)

事前分布$\Pr(\theta)$にベータ分布$Be(2,2)$を仮定すると、
$$
\Pr(\theta)=k\theta^{2-1}(1-\theta)^{2-1}
$$
であり、事後分布は、
$$
\Pr(\theta|x_1,x_2,x_3)
\propto \theta^3\times k\theta^{2-1}(1-\theta)^{2-1}
\propto \theta^{5-1}(1-\theta)^{2-1}
$$
であり、$Be(5,2)$のベータ分布となる。

事前分布をベータ分布$Be(2,2)$とした場合。
f01<-function(x) dbeta(x,2,2)
f02<-function(x) 30*x^4*(1-x)
curve(f01,0,1,ylim=c(0,4))
curve(f02,0,1,add=T,col=2)
legend(0,4,c("事前分布","事後分布"),lty=c(1,1),col=c(1,2),cex=0.8)

MCMCによる計算

まずは事前分布を一様分布で

RMarkdownで以下を記述。
model{}theta~uniform(0,1)と事前分布を記述してもよいが、Stanはデフォルトで、一様分布なので省略できる。


```{stan,output.var="mikan01"}
data{
  int N;
  int y;
}

parameters{
  real<lower=0,upper=1> theta;
}

model{
  y~binomial(N,theta);
}
```

データを作成!

d01<-list(N=3,y=3)

MCMC実行!

fit01<-sampling(mikan01,d01)

結果のサマリー

summary(fit01)$summary
            mean     se_mean        sd      2.5%        25%        50%        75%
theta  0.7945553 0.004674643 0.1689501  0.389770  0.6963226  0.8373022  0.9323246
lp__  -3.0953976 0.023468577 0.7917435 -5.441765 -3.3238426 -2.7864350 -2.5677014
           97.5%    n_eff    Rhat
theta  0.9927365 1306.231 1.00069
lp__  -2.5024634 1138.140 1.00602

事後分布

stan_dens(fit01,pars="theta")
事前分布が一様分布の場合

事前分布をベータ分布$Beta(2,2)$で


```{stan,output.var="mikan02"}
 data{
   int N;
   int y;
 }

 parameters{
   real<lower=0,upper=1> theta;
 }

 model{
   y~binomial(N,theta);
   theta~beta(2,2);
 }
```

MCMC実行!

fit02<-sampling(mikan02,d01)

結果のサマリー

summary(fit02)$summary
            mean     se_mean        sd       2.5%        25%        50%        75%
theta  0.7120068 0.004321131 0.1600423  0.3420686  0.6162984  0.7319016  0.8357492
lp__  -4.7194705 0.019542178 0.7538810 -6.8582568 -4.8917791 -4.4233716 -4.2449272
           97.5%    n_eff     Rhat
theta  0.9480958 1371.749 1.001601
lp__  -4.1883397 1488.194 1.000210

事後分布

stan_dens(fit02,pars="theta")
beta prior
事前分布がベータ分布