ここでは、ベイズルールの離散型分布の扱いを R の実装例で紹介。
実習 6.1 beta(θ, 8, 4) を離散型で示せ。
> nIntervals <- 10
> width <- 1/nIntervals
> Theta <- seq(from=width/2,to=1-width/2,by=width)
> approxMass <- dbeta(Theta,8,4)*width
> pTheta <- approxMass / sum(approxMass)
> plot(Theta,pTheta,type="h", main="Discretizing beta(θ,8,4) distribution")
> sum(approxMass)
[1] 0.9991421
たかだか 10 個の θ だが、最後の確率合計は 1.0 にかなり近い。
ここで先のコードで
> Theta <- seq(from=width/2,to=1-width/2,by=width)
が
> Theta <- seq(from=0,to=1,by=width)
のように θ が「0 から 1」でない理由は、最初と最後の θ の幅が違うから。左のグラフのように、結果も違ったものになる。
実習 6.2 コインが「公正、表に偏っている、裏に偏っている」というピークが 3つの事前確率を想定して「20 回の試行で 15 回の表」の観測データで事後確率を求めよ。
この事前確率の実装方法は一つではないが、今回は次を採用する。
> pTheta <- c(50:1,rep(1,50),1:50,50:1,rep(1,50),1:50)
> pTheta <- c(50:1,rep(1,50),1:50,50:1,rep(1,50),1:50)
> pTheta <- pTheta/sum(pTheta)
> width <- 1/length(pTheta)
> Theta <- seq(from=width/2,to=1-width/2,by=width)
> post <- BernGrid(Theta,pTheta,c(rep(1,15),rep(0,5)))
実習 6.3 実習 6.3 の事前確率を使って、4 回の試行で表 3 回、その後の 12 回の試行で表が 12 回であった。事後確率を求めよ
> pTheta <- c(50:1,rep(1,50),1:50,50:1,rep(1,50),1:50)
> pTheta <- pTheta/sum(pTheta)
> width <- 1/length(pTheta)
> Theta <- seq(from=width/2,to=1-width/2,by=width)
> post <- BernGrid(Theta,pTheta,c(rep(1,3),rep(0,1)))
> post <- BernGrid(Theta,post,c(rep(1,12),rep(0,4)))
> pTheta <- pTheta/sum(pTheta)
> width <- 1/length(pTheta)
> Theta <- seq(from=width/2,to=1-width/2,by=width)
> post <- BernGrid(Theta,pTheta,c(rep(1,15),rep(0,5)))
実習 6.3 実習 6.3 の事前確率を使って、4 回の試行で表 3 回、その後の 12 回の試行で表が 12 回であった。事後確率を求めよ
> pTheta <- c(50:1,rep(1,50),1:50,50:1,rep(1,50),1:50)
> pTheta <- pTheta/sum(pTheta)
> width <- 1/length(pTheta)
> Theta <- seq(from=width/2,to=1-width/2,by=width)
> post <- BernGrid(Theta,pTheta,c(rep(1,3),rep(0,1)))
> post <- BernGrid(Theta,post,c(rep(1,12),rep(0,4)))




0 件のコメント:
コメントを投稿