2015年10月28日水曜日

実習5 Posterior Predictive Check(予測精度検査)

実習5 支持率状況、不正コインのPrior」からの続き。


Exercise 5.7 モデル評価への影響

実習:不正コインの確信が強く、コインは大抵の場合に表か裏しか出ない。裏に偏ったモデルが beta(θ; 1, 100)、表に偏ったモデルが beta(θ; 100, 1) として、表を一回観測した場合に、この二つのモデルの Bayes' Factor を求めよ。
> BernBeta(c(1,100),c(rep(1,1),rep(0,0)))
> BernBeta(c(100,1),c(rep(1,1),rep(0,0)))

この一度の試行では、表に偏ったモデルが好ましく、その度合いは Bayes factor 0.99 / 0.0099 = 100 となる。


Exercise 5.8 Posterior Predictive Check

実習:前回5.7の実習のモデルで、試行回数 12, 表 8 回を観測した、evidence と Bayes' factor によりモデルを評価せよ。また、優れた方のモデルを使って posterior predictive check を実施せよ。
> BernBeta(c(100,1),c(rep(1,8),rep(0,12-8)))
> BernBeta(c(1,100),c(rep(1,8),rep(0,12-8)))

> 1.49e-07 / 2.02e-12
[1] 73762.38

表に偏ったモデルの方が、裏モデルよりBayes' factor 度合いで約 73,000 好ましい。


Posterior Predictive Check

次に、先の好ましいモデルで Posterior Predictive Check を行う。この日本語訳を知らないのだが、「予測精度検査」という感じか?

やることは、好ましいモデルが実際にデータに対して「良い反応を示すか」を見る。要するに、evidence によるモデル評価は「単に一方より悪くなかっただけ」で「決して良いモデルはない」可能性があるから。

検査の手順は以下の通り。

  1. 好ましいモデルの事後確率から乱数 θ を作成する
  2. その θ を使ってコイン投げを行う
  3. コイン投げの結果から裏の回数を集計(シュミレート標本)
  4. 実際の標本データ(この場合は 12 回の試行で裏が 回)とシュミレート標本の「近さ」を評価

要するに、実際の標本データと似たデータを、好ましいモデルがシュミレートできれば、モデルは更に評価できるということ。

左は本書提供のスクリプト BetaPoteriorPredictions.R の実行結果。試行回数は 10,000 で、表の回数は明らかに 1211 という結果。

よってこのモデルは、表の回数 8 の標本データ(実際のデータ)を生み出すモデルとは言い難いと判断できる。


最後に、スクリプトのポイントを解説。

以下のように sampleTheta を beta 乱数関数で作成

> sampleTheta = rbeta( 1 , postA , postB );

その sampleTheta を使って (0, 1) 、つまり「裏か表」の 12 個の標本データを作成。

> sample( x=c(0,1) , prob=c( 1-sampleTheta , sampleTheta ) , size=simSampleSize , replace=TRUE )

これを 10,000 回繰り返して、表が出た回数の度数分布が先のグラフ。

例えば、上記の二つの関数を 6 回連続で実行した結果が以下の通り。

 [1] 1 1 1 1 0 1 0 1 1 0 1 0
 [1] 1 1 1 1 1 1 1 1 1 1 1 1
 [1] 1 1 1 1 1 1 1 1 1 1 1 1
 [1] 1 1 1 1 1 1 1 1 1 1 1 0
 [1] 1 1 1 1 1 1 1 1 1 1 1 1
 [1] 1 1 1 1 1 1 1 1 1 1 1 1

表が 12 回というパターンが目立つ、度数分布の結果にも納得。

0 件のコメント:

コメントを投稿