MCMC Geweke诊断


14

我正在运行Metropolis采样器(C ++),并希望使用以前的示例来估计收敛速度。

我发现一种易于实施的诊断程序是Geweke诊断程序,它可以计算两个样本平均值之间的差除以其估计的标准误差。由零处的光谱密度估计标准误差。

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

其中,B是马尔可夫链中的两个窗口。我做了什么有一些研究^ 小号一个θ(0 )和^ 小号乙θ(0 ),但进入文学的能量谱密度和功率一塌糊涂谱密度,但我不会在这些议题的专家; 我只需要一个简单的答案:这些数量是否与样本方差相同?如果没有,计算它们的公式是什么?AB小号θ一种^(0)SθB^(0)

对Geweke诊断的另一个疑问是如何选择?上述文献所述,这是一些功能θ (X )和应该意味着频谱密度的存在^ 小号甲θ(0 ),但为了方便起见,我想的最简单的方法是使用恒等函数(使用样品本身)。它是否正确?θθ(X)SθA^(0)

R coda程序包有描述,但也没有指定如何计算值。小号


您可以查看该coda函数的内容geweke.diag以了解其功能...
— Ben Bolker 2012年

Answers:


4

您可以通过调用该函数查看包中该geweke.diag函数的代码,coda以了解如何计算方差spectrum.ar0。


这是计算AR光谱密度的简短动机(p

pλ

F(λ)=σ2(1个-∑Ĵ=1个pαĴ经验值⁡(-2πιĴλ))2
αĴ

p0

F(0)=σ2(1个-∑Ĵ=1个pαĴ)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

检查Wikipedia页面。你会看到的小号XX(ω),这是频谱密度。在您的情况下,您应该使用小号XX(0)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.