統計検定1級の範囲表によると、いつのまにやらMCMCやベイズが追加されていますね。
しかし、公式教科書は2013年出版の物しか出ていないため、その辺の範囲には対応していません。そこで、一通り何個かの記事を通して解説を行い、関連問題も上げていこうと思います。
目次
スポンサーリンク
MCMCとは何か
MCMCは、マルコフ連鎖モンテカルロ法(Markov Chain Monte Carlo method)の略です。
ベイズ統計では、複雑な事後分布の期待値や分散を考える必要が出てきます。
その際、そうした期待値や分散は簡単に計算することが出来ない場合が多くあります。
そうした場合に対応するために、事後分布を定常分布とするマルコフ連鎖を構成することで、近似的な事後分布からのサンプルを得ることで、期待値や分散を計算しようというわけです。
そういった手法群を総称してMCMCと呼びます。
MCMCを考えるには、大雑把に言って次の3つを考える必要があるかと思います。
・マルコフ連鎖はどのような条件の下で収束するのか(定常分布が存在するのか)
・得たい事後分布を定常分布とするマルコフ連鎖をどうやって見つけるのか
・効率の良いアルゴリズムはどのようなものを考えればよいのか
今回は主に上二つに焦点を当てて説明していきます。
マルコフ連鎖
マルコフ連鎖と定常分布
一つ前の状態によって分布が変化する確率過程をマルコフ連鎖と呼びます。
例えば、次のような例を見てみます。
この表は、状態A~Cから状態A~Cへの遷移行列です。
読み方は、例えば2行1列目には0.1が入っていますが、これは「状態Bから状態Aへ行く確率が0.1である」ことを表します。
ここで、経験的に初期状態で状態Aになる確率が0.3、状態Bになる確率が0.4,状態Cになる確率が0.3であったとしましょう。
この時、先ほどの遷移行列から考えれば
初期状態がAで、Bに遷移する確率は0.3×0.5=0.15であることがわかりますね。
同様にして初期状態BからBに遷移する確率は0.12
初期状態CからBへ遷移する確率は0.03
つまり、2時点目で状態Bである確率は0.3ということになります。
この計算を、全てのパターンで10回やってみることにします。ちょっと大変なので、Rに計算を投げてやると次の通り。
> XX=matrix(c(0.2,0.1,0.6,0.5,0.3,0.1,0.3,0.6,0.3),3,3) > initV=c(0.3,0.4,0.3) > res=initV > > for(i in 1:10){ + res=res%*%XX + print(round(res,digit=3)) + } [,1] [,2] [,3] [1,] 0.28 0.3 0.42 [,1] [,2] [,3] [1,] 0.338 0.272 0.39 [,1] [,2] [,3] [1,] 0.329 0.29 0.382 [,1] [,2] [,3] [1,] 0.324 0.289 0.387 [,1] [,2] [,3] [1,] 0.326 0.287 0.387 [,1] [,2] [,3] [1,] 0.326 0.288 0.386 [,1] [,2] [,3] [1,] 0.326 0.288 0.386 [,1] [,2] [,3] [1,] 0.326 0.288 0.386 [,1] [,2] [,3] [1,] 0.326 0.288 0.386 [,1] [,2] [,3] [1,] 0.326 0.288 0.386
結果を見てみるとわかる通り、あるところから、確率が0.326 0.288 0.386で動かなくなっています。
この状態を、マルコフ連鎖が収束したと呼び、この時の定常分布は0.326 0.288 0.386です。
定常分布への収束条件
マルコフ連鎖は必ず定常分布へ収束するわけではありません。
次の3条件を満たしている必要があります。
・既約性
ある状態からある状態へ、有限回の遷移でたどり着けるという条件が既約性です。
・正再帰性
任意の要素が、有限期間内で何度も発生しうることを正再帰性と呼びます。
つまり、正再帰性を満たさないとは、70回目の遷移以降、状態Aは発生しなくなるなどと言った状況です。
・非周期性
遷移に周期が存在しないことを非周期性と呼びます。
先ほど用意した遷移行列は、この3条件をしっかり満たしているため、定常分布へ収束したというわけです。
詳細つり合い条件
定常分布への収束条件はわかりました。
しかし、私たちがやりたいことは、ある特定の定常分布へ収束するようなマルコフ連鎖を構成することです。
つまり、ある特定の定常分布へ収束するような遷移行列を考えたいということになります。
そこで登場するのが詳細つり合い条件です。
ある状態iから状態jへ遷移する確率をとおくと、詳細つり合い条件は次のようになります。
この条件が全てので成り立つとき、この遷移行列を用いた、マルコフ連鎖は定常分布へ収束することが知られています。
つまり、私たちはこれで、欲しい事後分布を定常分布とするようなマルコフ連鎖を考えることが出来るようになったというわけです。
これらの条件を踏まえると、次に考えるべきは、
じゃあ、事後分布からのサンプルを取ってこれるような効率的なアルゴリズムって何?ってことですよね。
それについてはまた次回。