2015年10月31日土曜日

実習6.1-3 離散型でのR実装例

離散型分布て素晴らしい(数学的制約からの開放)」からの続き。

ここでは、ベイズルールの離散型分布の扱いを 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)))

度目の事後確率を 度目の事前確率にしている。この順番を入れ替えても結果は同じ。

実習6.4-5 懐疑的な CEO の事前確率」に続く。

0 件のコメント:

コメントを投稿