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

How to decide the step size when using Metropolis–Hastings algorithm

我有一个关于 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)如何解决该问题?

最好的方法是编写一个自调整算法,该算法从步长方差的任意方差开始,并随着算法的进行调整此方差。 Metropolis 算法的接受率为 25-50%。

假设您有 $d$ 个维度参数,最佳比例约为 $2.4d^(−1/2)$ 乘以目标分布的比例,这意味着 $d = 1$ 的最佳接受率为 0.44 $d$ 的 0.23 为 \infinity.

参考:Random Walk Metropolis 算法中的自动步长选择, 托德·L·格雷夫斯,2011 年。