MCMCとMetropolis-Hastingsアルゴリズムについて


13

過去数日間、私はマルコフ連鎖モンテカルロ法(MCMC)の仕組みを理解しようと試みてきました。特に、Metropolis-Hastingsアルゴリズムを理解して実装しようとしています。これまでのところ、私はアルゴリズムの全体的な理解を持っていると思いますが、私にはまだ明確ではないいくつかの事柄があります。MCMCを使用して、一部のモデルをデータに適合させたい。このため、観測データDに直線を当てはめるためのMetropolis-Hastingsアルゴリズムの理解について説明します。f(x)=axD

1)の初期推測を行い。このセットAを私たちの現在とA0)。また、マルコフ連鎖の最後にaを追加ます(C)。aaaa0aC

2)以下の手順を数回繰り返します。

3)0およびDが与えられ現在の尤度()を評価します。L0a0D

4)μ = a 0およびσ = s t e p s i z eの正規分布からサンプリングすることにより、新しいa 1)を提案します。今のところ、s t e p s i z eは一定です。aa1μ=a0σ=stepsizestepsize

5)1Dが与えられた場合、新しい尤度()を評価します。L1a1D

6)L 0よりも大きい場合、新しいa 0として1を受け入れ Cの末尾に追加してステップ2に進みます。L1L0a1a0C

7)L 0よりも小さい場合、一様分布から範囲[0,1]の数(U)を生成しますL1L0U

8)が2つの尤度の差(L 1 - L 0)より小さい場合、新しいa 0として1を受け入れ Cの末尾に追加してステップ2に進みます。UL1L0a1a0C

9)が2つの尤度の差(L 1 - L 0)よりも大きい場合、Cの末尾にa 0を追加し、同じa 0を使用し続け、手順2に進みます。UL1L0a0Ca0

10)繰り返しの終わり。

11)の開始からいくつかの要素を削除します(バーンインフェーズ)。C

12)の値の平均を取ります。この平均が推定されますCa

今、私は上記の手順に関するいくつかの質問があります:

  • だけでなく、任意の関数の尤度関数を構築するにはどうすればよいですか?f(x)=ax
  • これはMetropolis-Hastingsアルゴリズムの正しい実装ですか?
  • 手順7で乱数生成方法を選択すると、結果がどのように変わりますか?
  • 複数のモデルパラメーターがある場合、このアルゴリズムはどのように変化しますか?たとえば、モデルf(x)=ax+b

注/クレジット:上記のアルゴリズムの主な構造は、MPIA Python Workshopのコードに基づいています。

回答:


11

Metropolis-Hastings(MH)アルゴリズムがアルゴリズムの説明に含まれているものについて、いくつかの誤解があるようです。

まず、MHはサンプリングアルゴリズムであることを理解する必要があります。ウィキペディアで述べられているように

統計および統計物理学では、Metropolis–Hastingsアルゴリズムは、直接サンプリングが困難な確率分布からランダムサンプルのシーケンスを取得するためのマルコフ連鎖モンテカルロ(MCMC)メソッドです。

Q(|)f()

  1. x0
  2. xQ(|x0)
  3. 比率α =を計算するα=f(x)/f(x0)
  4. 受け入れの実現として、F確率でαxfα
  5. テイク新しい初期状態として、あなたが所望のサンプルサイズを取得するまでサンプリングを続けます。x

サンプルを取得したら、それを焼き付け薄くする必要があります:サンプラーが漸近的に機能するため、最初のサンプルを削除する必要があり(バーンイン)、サンプルが依存している場合、k回の繰り返しごとにサブサンプリングする必要があります(間引き)。Nk

Rの例は、次のリンクにあります。

http://www.mas.ncl.ac.uk/~ndjw1/teaching/sim/metrop/metrop.html

この方法は、モデルパラメーターの事後分布からサンプリングするためのベイズ統計で主に使用されます。

あなたが使用している例は、境界セットでxを制限しない限り、は密度ではないことを考えると、私には不明瞭に思えます。私の印象では、直線回帰のコンテキストでMetropolis-Hastingsアルゴリズムの使用を確認することをお勧めする点のセットに直線を当てはめることに興味があるということです。次のリンクは、このコンテキストでMHを使用する方法に関するいくつかのアイデアを示しています(例6.8):f(x)=axx

Robert&Casella(2010)、Rを使用したモンテカルロ法の紹介、Ch。6、「Metropolis–Hastingsアルゴリズム」

このサイトには、尤度関数の意味について議論している興味深い参考文献へのポインタを含む多くの質問があります。

可能性のある別のポインタはRパッケージですmcmc。これはコマンドでガウスの提案を持つMHアルゴリズムを実装しmetrop()ます。


こんにちは私の友人。はい、私は線形回帰の文脈でMHを検討しています。あなたが私に与えたURLは本当に素晴らしいすべてを説明しています。ありがとうございました。MHに関する他の質問があれば、もう一度質問を投稿します。再度、感謝します。
AstrOne
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.