MCMC Geweke診断


14

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

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

Zn=θ¯Aθ¯B1nASθA^0+1nBSθB^0

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

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

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


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

回答:


4

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


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

pλ

fλ=σ21j=1pαjexp2πιjλ2
αj

p0

f0=σ21j=1pαj2

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

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.