马尔可夫链蒙特卡罗样本数

机器算法验证 样本量 马尔可夫链蒙特卡罗 蒙特卡洛 马尔科夫过程
2022-03-04 14:43:59

很多关于马尔可夫链蒙特卡罗 (MCMC) 收敛诊断的文献,包括最流行的 Gelman-Rubin 诊断。然而,所有这些都评估了马尔可夫链的收敛性,从而解决了老化问题。

一旦我弄清楚老化,我应该如何确定有多少 MCMC 样本足以继续我的估计过程?大多数使用 MCMC 的论文都提到他们运行马尔可夫链进行了次迭代,但没有说明他们为什么/如何选择这个数字nn

此外,一个所需的样本量不能是所有采样器的答案,因为马尔可夫链中的相关性因问题而异。那么是否有一个规则可以找出所需的样本数量?

3个回答

您需要多少样品(老化后)取决于您尝试对这些样品做什么以及您的链条如何混合。

通常我们对后验期望(或分位数)感兴趣,我们通过后验样本的平均值来近似这些期望,即 其中是来自您的 MCMC 的样本。根据大数定律,MCMC 估计几乎肯定会收敛到期望的期望。

E[h(θ)|y]1Mm=1Mh(θ(m))=EM
θ(m)

但是为了解决需要多少样本来确保我们足够接近预期期望的问题,我们需要一个中心极限定理 (CLT) 结果,即类似于 有了这个 CLT,我们就可以做出诸如“有 95% 的概率之间。" 这里的两个问题是

EME[h(θ)|y]MdN(0,vh2)
E[h(θ)|y]EM±1.96vh

  1. CLT 适用吗?
  2. 我们如何估计vh2

我们有一些关于何时应用 CLT 的结果,例如离散状态链、可逆链、几何遍历链。有关此方向的一些结果,请参见Robert 和 Casella(第 2 版)第 6.7.2 节。不幸的是,绝大多数马尔可夫链都没有证据证明 CLT 存在。

如果 CLT 确实存在,我们仍然需要估计 CLT 中的方差。估计这种差异的一种方法是将链分解成块,请参阅Gong 和 Flegal以及其中的参考资料。该方法已在mcmcse具有函数的 R 包中实现,mcsemcse.q用于估计期望和分位数的方差。

John Kruschke 在Doing Bayesian Data Analysis中建议,对于感兴趣的参数,应该运行 MCMC 链,直到其有效样本量至少为 10,000。尽管没有提供模拟,但我相信他的理由是 ESS > 10,000 可以确保数值稳定的估计。但是,我看到 Andrew Gelman 和其他 Stan 开发人员推荐较少(例如 2000 - 3000 很好;不幸的是,没有确切的链接,但请参阅 Stan Google 用户组的讨论)。此外,对于复杂的模型,运行足够长的 ESS > 10,000 的链可能很困难!

这确实是 MCMC 模拟的一大缺点,因为没有对样本数量的一般和先验估计。我认为这里的一篇很好的文献是 Persi Diaconis 的“我们学到的一些东西(关于 MCMC)”,它处理了 MCMC 模拟的许多微妙之处,这可能表明这个问题没有简单的答案。

一般来说,要很好地估计链的运行时间,需要对马尔可夫链的混合时间有很好的理解,这在很大程度上取决于底层图的属性。有许多“无老化”方法可以从上面限制混合时间,但所有这些方法都有一个共同点,即它们需要对底层马尔可夫链有更深入的了解,并且所涉及的常数通常很难计算. 例如参见 King 的“Conductance and Rapidly Mixing Markov Chains”,Bubley 等人的“Path Coupling: a Technique for Proving Rapid Mixing in Markov Chains”,或 Diaconis 等人的“Nash inequalities forfinite Markovchains”。