我正在尝试将 MCMC 应用于一个问题,但我的先验(在我的情况下它们是))仅限于一个区域?我可以使用普通的 MCMC 并忽略落在限制区域之外的样本(在我的情况下是 [0,1]^2),即当新的过渡超出限制(受限)区域时重用过渡函数?
有界参数空间上的 MCMC?
你有几个不错的,或多或少简单的选项。您的统一先验有助于使它们更简单。
选项 1:独立采样器。您可以将您的提案分布设置为等于单位正方形上的均匀分布,这样可以确保样本不会落在您所说的限制区域之外。潜在的缺点:如果后验集中在单位正方形的一个很小的区域,你的接受率可能会很低。OTOH,很难比从 U(0,1) 分布更快地生成随机数。潜在的好处:为您减少工作量。
选项 2:将您的参数转换为无界的参数,为转换后的参数提出建议,然后将参数转换回用于似然函数中。请注意,在这种情况下,先验将位于转换后的参数上,因为这就是您要提出的建议,因此您必须弄乱转换的雅可比矩阵才能获得新的先验。当然,为了您的分析,您会将 MCMC 生成的参数随机数转换回原始参数。潜在的缺点:为您做更多的初始工作。潜在的好处:您的提案的接受率更高。
选项 3:构建一个提案分布,而不是在单位平方上的独立采样器。这使您可以保持统一的先验,但在计算提案概率时会以更大的复杂性为代价。这方面的一个例子,让是您的参数之一的当前值,将是带有参数的 Beta 分布。越大,您的提案就越集中在当前值附近。潜在的缺点:为您做更多的初始工作。潜在的好处:你的提议的接受率更高——但如果你让太大,并且靠近角落,你可能会在离开之前在角落里做很多小动作。
选项4:拒绝任何不属于单位平方的提案(Xian 的三心二意的建议)。请注意,这与仅生成另一个提案不同;在这种情况下,您拒绝了提案,这意味着您的参数的下一个值与参数的当前值相同。这是可行的,因为如果您对参数空间的某些区域具有零先验概率并生成落在该区域的随机数,就会发生这种情况。潜在的缺点:如果你靠近一个角落,你可能接受的概率很低,并且会被卡住一段时间。潜在的好处:为您减少工作量。
选项5:在平面上创建一个扩展问题,在单位平方上,与你所面临的实际问题相同,把所有事情都做对,然后在对MCMC采样结果进行后处理时,将所有样本都扔到外面的单位平方。潜在的好处:如果很容易创建扩展问题,那么它对你的工作可能会更少。潜在的缺点:如果马尔可夫链在单位平方之外的某个地方徘徊了一段时间,实际上你可能会有可怕的接受概率,因为你会丢弃大部分样本。
毫无疑问还有其他选择,我很想看看其他人的建议!
2 和 3 之间的区别在某种程度上是概念性的,尽管对你实际所做的事情有真正的影响。我可能会选择 3,因为我只是让 R 告诉我提案概率是多少(如果我在 R 中编程)以及额外的工作量,除了对提案分布参数进行一些调整之外,看起来对我来说很小。当然,如果我使用的是 JAGS 或 BUGS,那将是完全不同的事情,因为这些工具会处理它们自己的建议。