用马尔可夫链抽样器表示抽样分布
对于复杂的概率分布,或不在支持的分布列表中的概率分布金宝app随机数生成中描述的方法,您可能需要更高级的方法来生成样本常见伪随机数生成方法.这种分布出现在贝叶斯数据分析和大的组合问题中马尔科夫链蒙特卡罗(MCMC)模拟。另一种方法是构造一个稳定分布等于目标抽样分布的马尔可夫链,使用链的状态在状态分布收敛到目标的初始磨合期后生成随机数。
使用Metropolis-Hastings算法
大都会-黑斯廷斯算法从一个只知道一个常数的分布中抽取样本。随机数是由具有概率密度函数的分布生成的,该概率密度函数等于或正比于提议函数。
生成随机数:
假设一个初始值x(t).
画一个样本,y(t),从建议书分发问(y|x(t)).
接受y(t)作为下一个样品x(t+ 1)概率r(x(t),y(t)),并保存x(t)作为下一个样品x(t+ 1),概率是1 -r(x(t),y(t)),地点:
增量t→t+ 1,重复步骤2和3,直到得到所需的样本数量。
生成随机数使用大都会-黑斯廷斯方法与mhsample函数。为了有效地利用Metropolis-Hastings算法生成高质量的样本,选择一个好的建议分布是至关重要的。如果很难找到一个有效的建议分布,则使用切片抽样(slicesample)或哈密顿蒙特卡洛(hmcSampler)。
使用切片抽样
在很难找到有效的Metropolis-Hastings提案分布的情况下,切片采样算法不需要明确的规范。切片采样算法从密度函数下的区域中使用一系列垂直和水平步骤抽取样本。首先,它从0到密度函数之间随机选择一个高度f(x).然后,它选择一个新的x通过从所选高度以上的水平密度“切片”中抽样随机值。类似的切片采样算法用于多元分布。
如果一个函数f(x)与密度函数成正比,然后执行以下操作生成随机数:
假设一个初始值x(t在…的范围内f(x).
画一个实值y从(0,f(x(t))),从而将水平“切片”定义为年代= {x:y<f(x)}。
找到一个区间我= (l,R周围)x(t),包含全部或大部分“切片”年代.
画一个新的点x(t+ 1)在此区间内。
增量t→t+ 1,重复步骤2到4,直到你得到所需的样本数量。
切片采样可以从具有任意形式的密度函数的分布中生成随机数,前提是可以使用有效的数值程序来查找间隔我= (l,R),即密度的“切片”。
的切片抽样方法生成随机数slicesample函数。
用哈密顿蒙特卡罗
大都会-黑斯廷斯和切片采样可以产生混合缓慢且需要很长时间才能收敛到平稳分布的MCMC链,特别是在中维和高维问题中。使用基于梯度的哈密顿蒙特卡罗(HMC)采样器来加快这些情况下的采样速度。
要使用HMC采样,必须指定logf (x)(直到一个附加常数)及其梯度。您可以使用数值梯度,但这会导致较慢的采样。所有抽样变量都必须是无约束的,也就是说logf (x)它的梯度对所有实数都有很好的定义x.要对约束变量进行采样,请在使用HMC采样器之前将这些变量转换为无约束变量。
HMC采样算法引入了一个随机的“动量向量”z并定义了关节密度z还有位置向量x作为P(x,z) = f(x)g(z.目标是从这个联合分布中取样然后忽略的值z的边际分布x具有理想的密度f (x).
HMC算法用协方差矩阵指定高斯密度米(“质量矩阵”)到z:
然后,定义一个“能量函数”为
与U (x) =- - - - - -日志f (x)势能和K(z) = zT米-1z / 2动能。关节密度由∝P (x, z)exp {- e (x, z)}。
为了生成随机样本,HMC算法:
假设一个初始值x位置向量的。
生成动量矢量的样本:Z∼g(Z).
发展国家(x, z)在一段虚构的时间内τ到一个新的国家(x, z)使用“运动方程”:
如果运动方程可以精确求解,能量(因此密度)将保持不变:E(x,z) = E(x ',z ').在实践中,运动方程必须数值求解(通常使用所谓的跳跃式积分),能量是不守恒的。
接受x '作为下一个有概率的样本pacc= min(1, exp{E(x,z) - E(x ',z ')}),并保持x作为下一个概率为1 -的样本pacc.
重复步骤2到4,直到生成所需数量的样本。
要使用HMC采样,请使用hmcSampler函数。创建采样器之后,您可以计算MAP(最大后验)点估计值、调优采样器、绘制样本并检查收敛诊断。有关此工作流的示例,请参见使用哈密顿蒙特卡罗的贝叶斯线性回归.
另请参阅
功能
对于复杂的概率分布,或不在支持的分布列表中的概率分布金宝app 大都会-黑斯廷斯算法从一个只知道一个常数的分布中抽取样本。随机数是由具有概率密度函数的分布生成的,该概率密度函数等于或正比于提议函数。 生成随机数: 假设一个初始值 画一个样本, 接受
增量 生成随机数使用大都会-黑斯廷斯方法与 在很难找到有效的Metropolis-Hastings提案分布的情况下,切片采样算法不需要明确的规范。切片采样算法从密度函数下的区域中使用一系列垂直和水平步骤抽取样本。首先,它从0到密度函数之间随机选择一个高度 如果一个函数 假设一个初始值 画一个实值 找到一个区间 画一个新的点 增量 切片采样可以从具有任意形式的密度函数的分布中生成随机数,前提是可以使用有效的数值程序来查找间隔 的切片抽样方法生成随机数 大都会-黑斯廷斯和切片采样可以产生混合缓慢且需要很长时间才能收敛到平稳分布的MCMC链,特别是在中维和高维问题中。使用基于梯度的哈密顿蒙特卡罗(HMC)采样器来加快这些情况下的采样速度。 要使用HMC采样,必须指定log HMC采样算法引入了一个随机的“动量向量” HMC算法用协方差矩阵指定高斯密度
然后,定义一个“能量函数”为
与 为了生成随机样本,HMC算法: 假设一个初始值 生成动量矢量的样本: 发展国家
如果运动方程可以精确求解,能量(因此密度)将保持不变: 接受 重复步骤2到4,直到生成所需数量的样本。 要使用HMC采样,请使用使用Metropolis-Hastings算法
mhsample
slicesample
hmcSampler
使用切片抽样
slicesample
用哈密顿蒙特卡罗
hmcSampler
另请参阅
功能