如何在MCMC中解释自相关图


12

通过阅读John K. Kruschke 的《做贝叶斯数据分析》一书,我也熟悉贝叶斯统计数据,该书也被称为“小狗书”。在第9章中,通过以下简单示例介绍了层次模型: 和伯努利观察是3枚硬币,每次10个翻转。一个显示9个头,另一个显示5个头,另一个显示1个头。

yjiBernoulli(θj)θjBeta(μκ,(1μ)κ)μBeta(Aμ,Bμ)κGamma(Sκ,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])

我的问题是关于自相关的。我应该如何解释自相关?您能帮我解释自相关图吗?

在此处输入图片说明

它说,随着样本之间的距离越来越远,它们之间的相关性也随之降低。对?我们可以用它来画图以找到最佳的细化吗?细化会影响后部样品吗?毕竟,这个图有什么用?

Answers:


13

首先:如果用于处理MCMC输出的内存和计算时间不受限制,则稀疏永远不会是“最佳”的。在MCMC迭代次数相同的情况下,链的细化总是(平均)导致MCMC近似值的损失精度。

因此,不建议基于自相关或任何其他诊断程序进行常规的间隔变薄。参见Link,WA和Eaton,MJ(2012)关于MCMC中链的细化。《生态与进化方法》,第3卷,第112-115页。

但是,在日常实践中,通常情况下,您必须使用采样器不能很好混合的模型(高自相关)。在这种情况下

1)闭链元素非常相似,这意味着扔掉一个不会丢失很多信息(这是自相关图显示的)

2)您需要进行大量重复才能收敛,这意味着如果您不瘦,您将获得非常大的链。因此,使用全链可能会非常慢,会花费大量存储空间,甚至在监视许多变量时也会导致内存问题。

3)另外,我有一种感觉(但我从未进行过系统测试),它也使JAGS变薄了一些,因此可以同时获得更多迭代。

因此,我的观点是:自相关图可以粗略估计您通过细化丢失的信息量(请注意,尽管这是整个后验的平均值,但在特定区域中的损失可能会更高)。

这个价格是否值得,取决于您通过节省计算资源和节省时间而获得的收益。如果MCMC迭代便宜,那么您也可以通过运行更多的迭代来补偿细化带来的损失。


谢谢Florian的回答。对我来说非常有用。
Adham 2014年
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.