読者です 読者をやめる 読者になる 読者になる

マルコフ連鎖の収束判定に関連するトピック

機械学習 MCMC ベイズ統計

以前までのMCMCのシミュレーションでは、不変分布に収束したかと見なせるかは、時系列plotをして、変な動きをしていなければ収束しているんじゃね?という大雑把なものだった。ということで、今回はマルコフ連鎖がどういう状況ならば収束していると判定していいかについてまとめてみる。

標本経路による方法

これは前でやっていたような時系列plotのことである。初期値に依存せず、安定的な動きをしているところから収束しているんじゃね?という方法。初期値に依存する期間はburn-in periodと呼ばれる。まあ、目視によるものなので、曖昧性が残ると言えば残るんだけど、とりあえず手っ取り早い方法ではある。

標本平均が安定的であるか

スペクトル密度関数とか出てきて、その辺よく知らないのでかいつまんで分かる付近を書いてみる。

中心となる考え方は「標本分布が事後分布に収束してれば、標本を2つにぶったぎった時に前半の平均も後半の平均も同じじゃね?」というもの。そこでもう忘れつつある、平均値の差の検定のようなものを行なうという感じらしい。

この方法はさっきの目視による標本経路の方法と似たようなこと(標本系列の平均の安定性)を見るためのもの。が、さっきも書いたように図による方法だと曖昧性が残ってしまうので、こういう風に数値で、こっから収束してんじゃね?ということが示せるとうれしいよね、ということのようだ。

なんだけど

  • ベイズなのに仮説検定なのかよ
  • スペクトル密度関数の推定に用いられるwindowのとり方に左右されやすいという問題があるらしい
    • ここは意味が分からないけど、とりあえず飛ばす

などの方法があるらしい。この辺は論文を見てみて、どういう判定方法が実際に使われていて、などを見てみないとなのかなー。

サンプリングの効率性

今度は収束性の話ではなくて、サンプリングの効率性の話。例えば、酔歩連鎖において分散のパラメータを変えると採択率などがかなり変化することは前の自分のシミュレーションでもあった。そういうわけなので、どういうパラメータを使うとサンプリングが効率よくできるのかな?という問題を解決する方法らしい。

ちなみに、MCMCにおいて効率よくサンプリングできない、というのは

  • 標本が今の場所からなかなか移動しないで、状態空間を自由にいききしない

という状況をようだ。同じ場所に留まっていると効率が悪いということ。

方法

で、どういう方法でサンプリングの効率性を見ていくか、ということについてだけど、自己相関係数を使うようだ。Rならacfが使えるので、簡単にチェックできますね!!MCMCやる人はRでやってみるといいよ、とか言ってみる。

自己相関係数というのは時系列の勉強をしたときに出てきたものだが、

  • 自己相関係数をplotしたものが、線形に減っていっていれば、
  • 自己相関係数をplotしたものが、指数関数的に減っていれば、

という関係がある。単位根があるかどうかの判断に使ったりしますね。サンプリングの効率性の話のところでは、

  • 自己相関係数をplotしたものが、線形に減っていっていれば、効率が悪い
  • 自己相関係数をplotしたものが、指数関数的に減っていれば、効率がよい

ということになっている。「自由に動いて欲しいんだから、遠い前の期の相関は早く消えたほうがいい」という直感にも当ってますね。ふむふむ。

非効率性因子、有効標本数

上では、自己相関係数によりサンプリングの効率性について、acfを書いて診断した。が、これも(割と分かりやすと俺は思うんだけど)目視によるものなので数値により効率性の診断しようぜ!!というのが非効率性因子または自己相関時間を使った診断らしい。

非効率性因子は、仮想的な独立標本から計算される標本平均と同じ精度を達成するめには、マルコフ連鎖モンテカルロ法では何倍の標本数を発生することが必要かを示す目安である。

と書いてある。