【概述】
在 Metropolis Hasting 算法 中介绍了 MH 算法,其保证能够从一维随机变量的分布中抽取样本
那么当随机变量 $X$ 服从多维目标分布的情况下,该如何对这个多维目标分布抽样?
最容易想到的一种方式就是将多元变量的每一变量的条件分布依次使用 MH 算法分别进行抽样,从而实现对整个多元变量的一次抽样,这就是单分量 MH 算法(Single component Metropolis Hasting)的基本思路
【算法流程】
假设马尔可夫链的状态由 $k$ 维随机变量表示:
其中,$x_j$ 表示随机变量 $\mathbf{x}$ 的第 $j$ 个分量
用 $\mathbf{x}^{(i)}$ 表示马尔可夫链在时刻 $i$ 的状态:
其中,$x_j^{(i)}$ 是随机变量 $\mathbf{x}^{(i)}$ 的第 $j$ 个分量
为生成容量为 $n$ 的样本集合 $\{\mathbf{x}^{(1)},\mathbf{x}^{(2)},\cdots,\mathbf{x}^{(n)}\}$,单分量 MH 算法由下面的 $k$ 步迭代,实现 MH 算法的一次迭代
设在第 $i-1$ 次迭代结束时,分量 $x_j$ 的取值为 $x_j^{(i-1)}$,在第 $i$ 次迭代的第 $j$ 步,对分量 $x_j$ 根据 MH 算法更新,得到其新的取值 $x_j^{(i)}$,其余分量在第 $j$ 步时不改变
具体步骤如下:
Step 1:由提议分布 $p(x_j^{(i-1)},x_j|x_{-j}^{(i)})$ 抽样,产生分量 $x_j$ 的候选值 $x_j’^{(i)}$
其中,$x_{-j}^{(i)}$ 表示第 $i$ 次迭代的第 $j-1$ 步后的 $x^{(i)}$ 除去 $x_j^{(i-1)}$ 的所有值,即:
其中,分量 $1,2,\cdots,j-1$ 已更新
Step 2:计算接受概率
Step 3:从均匀分布 $U(0,1)$ 中随机抽取一随机数 $u$,若有:
则令 $x_j^{(i)}=x_j’^{(i)}$,否则令 $x_j^{(i)}=x_j^{(i-1)}$
【示例】
下图展示了单分量 MH 算法的迭代过程,目标是对含有两个变量的随机变量 $\mathbf{x}$ 进行抽样
若分量 $x_1$ 或 $x_2$ 更新,那么在水平或垂直方向产生一个移动,连续水平和垂直移动产生一个新的样本点
同时,由于从建议分布抽取出的候选值,可能不会被接受,因此在一些相邻时刻可能不会产生移动