了解MCMC和Metropolis-Hastings算法


13

在过去的几天里,我一直在试图了解Markov Chain Monte Carlo(MCMC)的工作方式。特别是,我一直在尝试理解和实现Metropolis-Hastings算法。到目前为止,我认为我对该算法有一个整体的了解,但是有些事情我还不清楚。我想使用MCMC使某些模型适合数据。因此,我将描述我对Metropolis-Hastings算法的理解,该算法用于将直线拟合到一些观测数据Df(x)=axD

1)制作为初始猜测。将此a设置为我们的当前aa 0)。还要在马尔可夫链(C)的末尾添加aaaaa0aC

2)重复以下步骤。

3)评估当前似然()给出一个0dL0a0D

4)通过从正态分布取μ = a 0σ = s t e p s i z e来提出新的a 1)。现在,š È p 小号Ž ê是恒定的。aa1μ=a0σ=stepsizestepsize

5)评估新的可能性()给定的一个1dL1a1D

6)如比更大大号0,接受一个1作为新的一个0,将其追加在年底Ç并转到步骤2。L1L0a1a0C

7)如果小于L 0,则从均匀分布生成范围[0,1] 的数字(UL1L0U

8)如果比两个似然性(之间的差较小的大号1 - 大号0),接受一个1作为新的一个0,将其追加在年底Ç并转到步骤2。UL1L0a1a0C

UL1L0a0Ca0

10)重复结束。

C

Ca

现在,我对上述步骤有一些疑问:

  • f(x)=ax
  • 这是Metropolis-Hastings算法的正确实现吗?
  • 在步骤7中选择随机数生成方法如何改变结果?
  • f(x)=ax+b

注释/信用:上述算法的主要结构基于MPIA Python Workshop的代码。

Answers:


11

关于Metropolis-Hastings(MH)算法在您对算法的描述中似乎存在一些误解。

首先,必须了解MH是一种采样算法。如维基百科所述

在统计和统计物理学中,Metropolis-Hastings算法是一种马尔可夫链蒙特卡洛(MCMC)方法,用于从难以直接采样的概率分布中获取随机样本序列。

Q(|)f()

  1. x0
  2. xQ(|x0)
  3. α=f(x)/f(x0)
  4. xfα
  5. x

Nk

在以下链接中可以找到R中的示例:

http://www.mas.ncl.ac.uk/~ndjw1/teaching/sim/metrop/metrop.html

该方法在贝叶斯统计中大量使用,用于从模型参数的后验分布中采样。

f(x)=axx

Robert&Casella(2010),《带蒙特卡罗方法介绍》,第 6,“ Metropolis-Hastings算法”

在这个站点上,关于似然函数的含义,还有很多问题,以及指向有趣参考的指针。

另一个可能令人感兴趣的指标是R包mcmc,该包使用命令中的高斯建议来实现MH算法metrop()


嗨,我的朋友。是的,我正在线性回归的背景下研究MH。您给我的url解释了所有内容。谢谢。如果我有关于MH的其他问题,我将再次发布一个问题。再次感谢。
AstrOne
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.