我对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)如何解决这个问题?
答案 0 :(得分:2)
最好的方法是编写一个自调整算法,该算法以步长方差的任意方差开始,并随着算法的进展调整此方差。你正在拍摄Metropolis算法的接受率为25-50%。
答案 1 :(得分:1)
假设您有$ d $维度参数,最佳比例约为目标分布规模的$ 2.4d ^( - 1/2)$倍,这意味着$ d = 1 $和0.23的最佳接受率为0.44 $ d $转到\ infinity。
参考:随机游走大都会算法中的自动步长选择, Todd L. Graves,2011年。