MCMCで自己相関プロットを解釈する方法


12

「子犬の本」としても知られるジョンK.クルシュケの本Doing Bayesian Data Analysisを読んで、ベイジアン統計に精通しています。第9章では、この単純な例で階層モデルを紹介します: 及びベルヌーイ観察は3枚のコイン、それぞれ10のフリップあります。1つは9つのヘッド、他の5つはヘッド、もう1つは1つのヘッドです。

yjBernoあなたはllθjθjBetaμκ1μκμBetaAμBμκGammaSκRκ

ハイパーパラメーターを推測するためにpymcを使用しました。

with pm.Model() as model:
# define the     
    mu = pm.Beta('mu', 2, 2)
    kappa = pm.Gamma('kappa', 1, 0.1)
    # define the prior
    theta = pm.Beta('theta', mu * kappa, (1 - mu) * kappa, shape=len(N))
    # define the likelihood
    y = pm.Bernoulli('y', p=theta[coin], observed=y)

    # Generate a MCMC chain
    step = pm.Metropolis()
    trace = pm.sample(5000, step, progressbar=True)
    trace = pm.sample(5000, step, progressbar=True)


burnin = 2000  # posterior samples to discard
thin = 10  # thinning 
pm.autocorrplot(trace[burnin::thin], vars =[mu, kappa])

私の質問は自己相関に関するものです。自己相関をどのように解釈しますか?自己相関プロットの解釈を手伝ってもらえますか?

ここに画像の説明を入力してください

サンプルがお互いから離れるにつれて、サンプル間の相関が減少すると言います。正しい?これを使用して、最適な間伐を見つけるためにプロットできますか?間伐は後部サンプルに影響しますか?結局のところ、このプロットの用途は何ですか?

回答:


13

まず、MCMC出力を処理するためのメモリと計算時間が制限されていない場合、間引きは決して「最適」ではありません。MCMCの反復回数が等しい場合、チェーンの細線化は常に(平均して)MCMC近似の損失精度につながります。

したがって、自己相関やその他の診断に基づいて定期的に間引くことはお勧めできませ。Link、WA&Eaton、MJ(2012)MCMCのチェーンの間引きについてを参照してください。生態学と進化の方法、3、112-115。

ただし、毎日の練習では、サンプラーがあまりうまく混合していないモデル(高自己相関)で作業しなければならないという一般的なケースがあります。この場合

1)クローズチェーン要素は非常に似ています。つまり、1つを捨てても多くの情報が失われないことを意味します(自己相関プロットが示すものです)

2)収束するために多くの繰り返しが必要です。つまり、細くしなければ非常に大きなチェーンが得られます。そのため、フルチェーンでの作業は非常に遅くなる可能性があり、大量のストレージを必要とし、多くの変数を監視するときにメモリの問題を引き起こすことさえあります。

3)さらに、間引きによってJAGSが少し速くなるので(同時に体系的にテストしたことはありません)、同時にいくつかの反復を取得できる可能性があると感じています。

だから、私のポイントは次のとおりです:自己相関プロットは、間引きによって失われている情報の大まかな見積もりを提供します(これは後部全体の平均ですが、特定の地域では損失が大きくなる可能性があることに注意してください)。

この価格を支払う価値があるかどうかは、コンピューティングリソースを節約し、時間を節約するという観点から間引きすることによって得られるものによって異なります。MCMC反復が安価な場合は、さらに数回反復を実行することで、間引きの損失をいつでも補償できます。


フロリアン、答えてくれてありがとう。それは私にとって非常に役に立ちました。
アダム14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.