原文链接:http://tecdat.cn/?p=26324 

介绍

Metropolis Hastings 算法是一种非常简单的算法,用于从难以采样的散布中生成样本。

假如咱们要从散布 中进行采样,咱们将其称为“指标”散布。为简略起见,咱们假如 是实线上的一维散布,只管它很容易扩大到一维以上(见下文)。

MH 算法通过模仿马尔可夫链来工作,其安稳散布为 。这意味着,从久远来看,来自马尔可夫链的样本看起来像来自 的样本。正如咱们将看到的,该算法非常简单和灵便。

MH算法

转移核

要实现 MH 算法,用户必须提供一个“转移核”QQ。转移核只是一种在 给定以后地位(例如 xx)的状况下随机挪动到空间中新地位(例如 y)的形式。也就是说,Q 是给定 x 在 y 上的散布,咱们将其写成 Q(y|x)。在许多利用中,Q将是一个间断散布,在这种状况下 Q(y|x) 将是 y 上的密度,因而∫Q(y|x)dy=1(对于所有 x)。

例如,从以后地位 x 生成新地位 y 的一种非常简单的办法是向 x增加一个 N(0,1) 随机数。即设置y=x+N(0,1),或者转移y|x∼N(x,1)。所以

这种在以后地位x加上一些随机数失去y的核,在理论中常常应用,被称为“随机游走”核。

MH算法

应用转移核 Q 从指标散布  中采样的 MH 算法包含以下步骤:

  • 初始化,X1=x1 。
  • 对于 t=1,2,…
  • 从 Q(y|xt)中采样 y。将 y 视为 xt+1 的“倡议”值。
  • 计算
  • AA通常被称为“承受概率”。
  • 以概率 A“承受”提议的值,并设置 xt+1=y。否则设置 xt+1=xt。
  • Metropolis 算法

    请留神,下面给出的示例随机游走倡议 Q 对于所有 x,y 满足 Q(y|x)=Q(x|y) 任何满足这一点的倡议都称为“对称”。当 Q 是对称时,MH 算法中 A 的公式 简化为:

     

该算法的这种非凡状况,具备 Q 对称,首先由 Metropolis 等人在 1953 年提出,因而它有时被称为“Metropolis 算法”。

示例

为了帮忙了解 MH 算法,咱们当初做一个简略的例子:咱们实现算法以从指数分布中采样:

当然,以其余形式从指数分布中采样会容易得多;咱们只是用它来阐明算法。

请记住, 被称为“指标”散布,因而咱们调用函数来计算   target

当初咱们实现 MH 算法,应用下面提到的简略正态随机游走转移核 Q。

这是代码:

x = rep(0,10000)x\[1\] = 3     #初始化;我任意地将其设置为3for(i in 2:10000){  if(){    x\[i\] = proposed_x       # 以最小(1,A)的概率承受挪动。  } else {    x\[i\] = current_x        # 否则就 "回绝 "挪动,并留在原地。  }}

运行此代码后,咱们能够绘制马尔可夫链 x 拜访的地位(有时称为轨迹图)。

请记住,咱们设计此算法是为了从指数分布中采样。这意味着(只有咱们运行算法足够长的工夫!)x 的直方图应该看起来像一个指数分布。在这里咱们检查一下:

hist(x)lines

x 中的值的直方图的确提供了与指数分布的严密拟合。

结束语

MH 算法的一个特地有用的个性是,即便 只晓得 是一个常数,它也能够实现:也就是说,对于一些已知的 f,(x)=cf(x) , 但未知常数 c。这是因为该算法仅通过比率依赖于 。

这个问题呈现在贝叶斯利用中,其中后验散布与先验概率成正比,但比例常数通常是未知的。因而,MH 算法对于从后验散布进行采样以执行难以解析的贝叶斯计算特地有用。


最受欢迎的见解

1.应用R语言进行METROPLIS-IN-GIBBS采样和MCMC运行

2.R语言中的Stan概率编程MCMC采样的贝叶斯模型

3.R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样

4.R语言BUGS JAGS贝叶斯剖析 马尔科夫链蒙特卡洛办法(MCMC)采样

5.R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

6.R语言Gibbs抽样的贝叶斯简略线性回归仿真剖析

7.R语言用Rcpp减速Metropolis-Hastings抽样预计贝叶斯逻辑回归模型的参数

8.R语言应用Metropolis- Hasting抽样算法进行逻辑回归

9.R语言中基于混合数据抽样(MIDAS)回归的HAR-RV模型预测GDP增长回归的HAR-RV模型预测GDP增长")