MCMC Geweke診断


14

Metropolisサンプラー(C ++)を実行していますが、以前のサンプルを使用して収束率を推定したいと思います。

私が見つけた診断を実装するのが簡単なのは、2つのサンプル平均の差を推定標準誤差で除算したGeweke診断です。標準誤差は、ゼロでのスペクトル密度から推定されます。

Zn=θ¯A−θ¯B1nASθA^(0)+1nBSθB^(0)、

ここで、、はマルコフ連鎖内の2つのウィンドウです。私はおよびとは何かを研究しましたが、エネルギースペクトル密度とパワースペクトルに関する多くの文献に取りかかりました密度ですが、これらのトピックの専門家ではありません。簡単な答えが必要です。これらの量はサンプル分散と同じですか?そうでない場合、それらを計算するための式は何ですか?ABSθA^(0)SθB^(0)

このGeweke診断に関するもう1つの疑問は、を選択する方法です。上記の文献は、それが何らかの機能的なあり、スペクトル密度存在を暗示すべきだと言っていますが、便宜上、最も簡単な方法はアイデンティティ関数(サンプル自体を使用)。これは正しいです?θθ(バツ)SθA^(0)

R codaパッケージには説明がありますが、値の計算方法も指定されていません。S


あなたはのガッツで見ることができるcoda機能geweke.diag...それが何を見て
— ベンBolker

回答:


4

パッケージgeweke.diag内の関数のコードを調べて、関数codaの呼び出しを介して分散がどのように計算されるかを確認できspectrum.ar0ます。


これは、ゼロでのAR()プロセスのスペクトル密度の計算の短い動機です。p

pλ

f(λ)=σ2(1−∑j=1pαjexp⁡(−2πιjλ))2
αj

p0

f(0)=σ2(1−∑j=1pαj)2

この場合、計算は次のようになります(パラメーターを通常の推定量に置き換えます):

tsAR2 = arima.sim(list(ar = c(0.01, 0.03)), n = 1000)  # simulate an AR(2) process
ar2 = ar(tsAR2, aic = TRUE)  # estimate it with AIC complexity selection

# manual estimate of spectral density at zero
sdMan = ar2$var.pred/(1-sum(ar2$ar))^2

# coda computation of spectral density at zer0
sdCoda = coda::spectrum0.ar(tsAr2)$spec

# assert equality
all.equal(sdCoda, sdMan)

0

Sバツバツ(ω)Sバツバツ(0)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.