从MCMC采样进行后推的有效样本量


13

当获得MCMC样本以推断特定参数时,应针对哪些有效样本的最小数量进行指导?

而且,随着模型变得越来越复杂,此建议是否会改变?


我的猜测是,它可能取决于错误中的“常量” ,这在不同的模型中会有所不同。O(n12)
概率

Answers:


15

您要问的问题与“收敛诊断”不同。可以说您已经运行了所有收敛诊断(选择您喜欢的),现在准备从后验开始采样。

在有效样本量(ESS)方面有两个选项,您可以选择单变量ESS或多变量ESS。单变量ESS将分别为每个参数提供有效的样本量,保守的方法要求您选择最小的估计值。此方法将忽略组件之间的所有互相关。这可能是大多数人使用了一段时间了

最近,引入了ESS的多元定义。对于要估计的数量,多元ESS返回一个数字作为有效样本量;并通过考虑该过程中的所有互相关来做到这一点。就个人而言,我更喜欢多元ESS。假设您对后验分布的均值的向量感兴趣。mESS的定义如下 这里mESS = n | Λ |p

mESS=n(|Λ||Σ|)1/p.
  1. Λ是后验的协方差结构(如果有独立的样本,也是CLT中的渐近协方差)
  2. ΛΣ是Markov链CLT中的渐近协方差矩阵(与不同,因为样本是相关的。Λ
  3. p是要估计的数量(或在这种情况下,是后验尺寸)。
  4. ||是决定因素。

可通过使用样本协方差矩阵估算和批处理均值协方差矩阵估算来估算mESS 。这已在R包mcmcse的函数中进行了编码。ΣΛΣmultiESS

这个最近的一篇论文提供了一种理论上有效下界需要的有效的样本的数目的。模拟之前,您需要确定

  1. εϵ:精度。是您希望蒙特卡洛与后验误差相比所占的误差比例。这与在经典环境中进行样本量计算时的误差余量思想相似。ϵ
  2. α:构建置信区间的级别。
  3. p:您估计的数量。

通过这三个数量,您将知道需要多少个有效样品。本文要求在第一次

mESS22/pπ(pΓ(p/2))2/pχ1α,p2ϵ2,

其中是伽马函数。可以通过在R包mcmcse中使用来计算此下限。Γ()minESS

因此,现在假设您在后验中有参数,并且希望对估计有置信度,并且希望蒙特卡洛误差为后验误差的5%(),您将需要95 ϵ = 0.05p=2095%ϵ=.05

> minESS(p = 20, alpha = .05, eps = .05)
[1] 8716

对于任何问题(在规则条件下)都是如此。这种方法因问题而异的方式是,缓慢混合马尔可夫链需要更长的时间才能达到该下限,因为mESS会更小。因此,现在您可以使用multiESS您的马尔可夫链是否已到达该界限来检查几次。如果不去,拿更多的样品。


(+1)个极好的答案。您是否知道该函数multiESS是否已使用其他语言(例如MATLAB)进行编码?(还是很难重新实现?)
lacerbi '16

1
它应该很简单,只是在处理矩阵。 我想主要是估计,它已经用C ++编码。因此它可能是可移植的(我对Matlab并不了解)。Σ
Greenparker

1
谢谢@Greenparker。实际上,在Matlab中实现它确实很容易(一旦做一些检查,我可能会将其发布在GitHub上)。我对的估计有疑问,但我将在另一篇文章中提出。Σ
–lacerbi

1
@lacerbi很高兴您能够在Matlab中进行编码。如果可以的话,请在评论结束时回复此评论,以便我使用。谢谢
Greenparker

1
我的multiESS的MATLAB实现在这里提供。这是一个工作版本,尽管需要更多测试(我对R不熟悉,否则我将其与R实现进行比较)。
lacerbi '16

2

收敛取决于几件事:参数的数量,模型本身,采样算法,数据...

我建议避免使用任何通用规则,并在每个特定示例中使用一些收敛诊断工具来检测适当的老化和稀疏迭代次数。又见http://www.johnmyleswhite.com/notebook/2010/08/29/mcmc-diagnostics-in-r-with-the-coda-package/http://users.stat.umn.edu/~geyer/mcmc/diag.html

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.