• 検索結果がありません。

57

MCMC乱数発生/基本統計

58

即ち、リープ・フロッグ法で新しく得られた変数

q

については、上に与えた確率

 ( , | , ) q p q p  

採択の可否を決める。これは1に近い値のため、採択率はかなり高くなる。

最後に、オイラー法とリープ・フロッグ法の計算法を与えておく。

n

次元オイラー法

( 1) ( )

( 1) ( ) ( )

p t p t h q

q t q t p t

    

  

n

次元リープ・フロッグ法

(2 )

(2 2)

(2 1) (2 ) ( 2)

(2 2) (2 ) (2 1)

(2 2) (2 1) ( 2)

q t

q t

p t p t dh dq

q t p t p t

p t p t dh dq

  

   

   

実際の計算でのHMC法の使い勝手はどうであろうか。標準正規乱数を発生させるごとにリープ・

フロッグ法を用いるため、計算量(特に微分の部分)がかなり多くなる。採択率は上がるが、その分 計算量が増えるため、計算時間は MH 法に比べて長くなっている。しかし、乱数の精度から見ると 改良されているのではないかと思われる。

次に初期値が最尤値から離れている場合の収束性について、これまでの計算では、遠くの最尤値ま で速く収束するようには感じられない。むしろ初期値に対して最尤値が離れている場合は、密度関数 が計算誤差で0となってしまうところが問題のように思われる。これについてはMH法もHMC法 もあまり変わらないように思う。

59

図1 MCMC乱数発生メニュー

乱数発生には基本的にメトロポリス・ヘイスティングス法とハミルトニアン・モンテカルロ法があ り、メニューで変更できる。

プログラムを利用する際、まず「密度関数」テキストボックスに、出力させる目的分布の乱数の密 度関数を入力する。「例」のコンボボックスにサンプルが入っているので、それを参考にしてもらい たい。ここではまず、密度関数 = 1/6*exp(-abs(x)/3) の1次元の例を用いて説明を行う。

目的分布の密度関数を入力したら、描画範囲のx軸の上限と下限を入力する。この範囲はあくまで 描画する際の表示範囲で、乱数発生はこれにとらわれない。乱数の発生範囲は、「最大・最小」ボタ ンで、図2のように表示される。

図2 乱数発生の最小・最大 描画範囲が不明の場合はこの結果を参考にしてもよい。

描画範囲として下限-20と上限20を入力したら、まず、「ヒストグラム」ボタンで図3aのようなヒ ストグラムを描いてみる。

MCMC乱数発生/基本統計

60

図3a 乱数のヒストグラムと理論曲線(Seed=1)

ヒストグラムと同時に出力した乱数の統計量も表示される。採択率は、Metropolis-Hastingsアル ゴリズムの抽出率をいう。

図3aの中の曲線は目的分布の密度関数を利用した理論値である。この場合少しずれているが、乱 数の「Seed」を変えることによって分布が異なってくる。例として、図3bにSeed = 2 の場合を示 す。

図3b 乱数のヒストグラムと理論曲線(Seed=2)

ヒストグラムの階級幅は「x分割」の数によって決まる。この場合、範囲が40でx分割数が20で あるので階級幅は2になっている。

密度関数の形は、「描画」ボタンで見ることができる。但し、1変量関数グラフのプログラムを利 用するので、そのメニューが表示されるが、その中の「グラフ描画」ボタンをクリックすると図4の ようなグラフが表示される。

図4 密度関数グラフ

61

関連したドキュメント