適応棄却メトロポリス・サンプリング

概要

・パッケージdlmの中にARMSという関数があり、これを使うことで適応棄却メトロポリス・サンプリングが使えるらしいのでメモがでらデモ
・とりあえず動いているように見えるが詳しいロジックまでは追えていないので悪しからず

適応棄却メトロポリス・サンプリング

任意の分布\( \pi \)からのサンプリングを行う単純なアルゴリズムらしい
『正確に目標分布からの独立な抽出系列を生成することができるのに対し、メトロポリスーヘイスティング・アルゴリズムでは、シミュレートされた確率変数には一般に従属性があり、その極限においてのみ目標分布に従う分布を持つ』

系列相関を持たないサンプリングが可能ですと。

ARMSを使ってみる(1変量)

まずはお試しで1変量の簡単な分布のサンプリングをやってみる。対象とする目標分布は適当に正規分布の組み合わせ

140524_1

ARMSを使って上記分布からサンプリングするには以下。

関数fには、先ほどの関数gの対数を返すようにします。
下から2行目でarmsを使ってサンプリングをしておりまして、
第一引数:初期値
第二引数:対象分布(対数)
第三引数:サンプリング範囲?
第四引数:サンプリング個数
というような感じかと。

実際にサンプルのヒストグラムを見ると

140524_2

という感じに、うまくサンプリングされているように見えます。
また、サンプルの系列相関を見てみると、以下のようになり、系列相関はほぼ無いと判断できそうですね。

140524_3

ARMSを使ってみる(2変量)

実はこのARMSは多変量にも対応しているようでして、例えば2変量正規分布の場合

関数fは普通の2変量正規分布の密度関数の定義です。これはcontourで等高線図を書くためにとりあえず定義しています。
ARMS用の対数密度は関数gで定義しています。

140524_4

なんとなーく分布には従っていそうな感じ

ARMSを使ってみる(2変量・多峰性)

普通にギブスサンプリングを行うと多峰性の分布を対象とした場合、1個の山から抜け出すことができなくて正確にサンプリングすることが困難。一方でARMSを使えば大丈夫(らしい)。例えば以下のうような分布の場合。

140524_5

参考文献

Amazon.co.jp: Rによるベイジアン動的線形モデル (統計ライブラリー): G.ペトリス, S.ペトローネ, P.カンパニョーリ, 和合 肇, 萩原 淳一郎: 本
http://www.amazon.co.jp/dp/4254127960