如何在使用Metropolis-Hastings算法时决定步长

3

我有一个关于Metropolis-Hastings算法的简单问题。

假设分布只有一个变量x,且x的值范围为s=[-2^31,2^31]。

在采样过程中,我需要提出一个新的x值,然后决定是否接受它。

x_{t+1} =x_t+\epsilon 

如果我想自己实现,该如何决定\epsilon的值。

基本解决方案是从Uniform [-2 ^ 31, 2 ^ 31]中选择一个值,并将其设置为\epsilon。如果值范围是无界的,比如[-inf,inf]怎么办?

目前的MCMC库(例如pymc)是如何解决这个问题的?

2个回答

3
假设您有$d$维参数,最佳尺度约为目标分布的$2.4d^{−1/2}$倍,这意味着当 $d = 1$ 时,最佳接受率为0.44,当 $d$趋近于无穷大时,最佳接受率为0.23。
参考文献:《随机行走Metropolis算法中的自动步长选择》,Todd L. Graves,2011年。

2

最好的方法是编写一个自适应算法,该算法从步长方差的任意值开始,并随着算法的进展来调整此方差。您需要让Metropolis算法的接受率在25%到50%之间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接