在 MCMC 中检查收敛的最佳方法是什么?

机器算法验证 贝叶斯 马尔可夫链蒙特卡罗
2022-01-23 02:12:46

在使用马尔可夫链蒙特卡罗进行贝叶斯推理时,您首选的收敛性检查方法是什么,为什么?

4个回答

我也使用 Gelman-Rubin 收敛诊断。Gelman-Rubin 的一个潜在问题是,如果收缩因子碰巧接近 1,它可能会误诊收敛,在这种情况下,您可以使用 Gelman-Rubin-Brooks 图。有关详细信息,请参阅“监视迭代模拟收敛的通用方法”一文。这在 R 中coda中得到支持(用于“马尔可夫链蒙特卡罗模拟的输出分析和诊断”)。 coda还包括其他功能(如格维克的收敛诊断)。

您还可以查看“boa: An R Package for MCMC Output Convergence Assessment and Posterior Inference”

我没有使用 Gelman-Rubin 统计,这是一个很好的帮助但并不完美(与所有收敛诊断一样),我只是使用相同的想法并绘制结果以进行可视化图形评估。在我考虑过的几乎所有情况下(这是一个非常大的数字),绘制从广泛不同的起始位置开始的多个 MCMC 链的轨迹图足以显示或评估在每种情况下是否收敛到相同的后验. 我使用这种方法来:

  1. MCMC 链是否(曾经)收敛
  2. 评估我应该设置多长时间的老化期
  3. 计算 Gelman 的 R 统计量(请参阅 Gelman、Carlin、Stern 和 Rubin,贝叶斯数据分析)以测量 MCMC 采样器中的混合效率和速度。

效率和收敛是稍微不同的问题:例如,你可以以非常低的效率进行收敛(即需要长链来收敛)。我已经使用这种图形方法成功地诊断(后来更正)在特定和一般情况下缺乏收敛问题。

这是争论的晚点,但我们在 2007 年出版的 《用 R 介绍蒙特卡洛方法》一书中有一整章来处理这个问题。您也可以从 CRAN 下载 CODA 包以实现此效果。

我主要喜欢绘制轨迹图,有时我使用 Gelman-Rubin 收敛诊断。