主要内容

HMCSampler.

Hamiltonian Monte Carlo(HMC)采样器

描述

例子

HMC.= hmcsampler(logpdf.起点创建一个汉密尔顿蒙特卡罗(HMC)采样器,返回汉密尔顿人寻找者目的。logpdf.是一种函数手柄,可评估均衡分布的概率密度及其梯度的对数。栏矢量起点是启动HMC采样的初始点。

创建采样器后,可以使用方法计算地图(最大-A-postiori)点估计,调整采样器,绘制样本和检查收敛诊断汉密尔顿人寻找者班级。有关此工作流程的示例,请参阅使用Hamiltonian Monte Carlo的贝叶斯线性回归

HMC.= hmcsampler(___名称,价值使用一个或多个名称值对参数指定其他选项。在所有其他输入参数后指定名称值对参数。

例子

全部收缩

创建汉密尔顿蒙特卡罗(HMC)采样器,以从正常分布采样。

首先,保存函数QuancleDistrad.在MATLAB®路径上,返回多元正常日志概率密度及其渐变(QuancleDistrad.在该示例的末尾定义)。然后,调用参数的函数来定义logpdf.输入论点HMCSampler.功能。

手段= [1; -3];standevs = [1; 2];logpdf = @(theta)normaldistgrad(θ,意味着,stablevs);

为HMC采样器选择一个起点。

startpoint = Randn(2,1);

创建HMC采样器并显示其属性。

SMP = HMCSampler(logpdf,startpointo);
SMP.
SMP = HamiltonIansampler具有属性:步骤化:0.1000 NumSteps:50 MassVector:[2x1 Double] jitterMethod:'抖动 - 两个'stoupizezezeIzingmethod:'双平均'massvectortuningmethod:'迭代 - 采样'logpdf:@(theta)romancdistgrad(θiqualdistgrad(theta,意味着,standevs)variablenames:{2x1 cell} startpoint:[2x1 double]

QuancleDistrad.功能返回多元正常概率密度的对数用手段和标准偏差Sigma.,指定为标量或列向量相同的长度起点。第二个输出参数是相应的渐变。

功能[lpdf,glpdf] = uscledistgrad(x,mu,sigma)z =(x  -  mu)./ sigma;lpdf = sum(-log(sigma) -  .5 * log(2 * pi) -  .5 *(z. ^ 2));glpdf = -z./sigma;结尾

输入参数

全部收缩

目标密度及其渐变的对数指定为函数手柄。

logpdf.必须返回两个输出参数:[LPDF,GLPDF] = logpdf(x)。这里,LPDF.基础-E日志概率密度(最多常数),GLPDF.是日志密度的梯度,以及点X是一个列向量,元素数量相同起点

输入论点Xlogpdf.必须是不受约束的,这意味着每个元素X可以是任何实数。在使用HMC采样器之前将任何约束采样参数转换为无约束变量。

如果是'usenumericalgradient'值设置为真的, 然后logpdf.不需要将梯度返回为第二个输出。以来,使用数值梯度可以更容易logpdf.不需要计算渐变,但它可以使抽样慢。

数据类型:function_handle.

初始点以开始采样,指定为数字列向量。

数据类型:单身的|双倍的

名称值对参数

指定可选的逗号分离对名称,价值论点。姓名是参数名称和价值是相应的价值。姓名必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'variablenames',{'拦截','beta'},'massvectortuningmethod','hessian'指定采样变量名称和批量向量调整方法'赫索安'

汉密尔顿动态的步长,指定为逗号分隔的配对'一步的大小'和正标量。

为提出Markov链的新状态,HMC采样器使用LeapFrog集成集成了Hamiltonian动态。此参数控制跨越式集成的步骤大小。

您可以使用自动调整步骤尺寸TUNESAMPLER.

例子:'STAPEIZE',0.2

数据类型:单身的|双倍的

哈密​​顿动态的步数,指定为逗号分隔的配对组成'numsteps'和一个正整数。

为提出Markov链的新状态,HMC采样器使用LeapFrog集成集成了Hamiltonian动态。此参数控制LeapFrog集成的步骤数。

您可以使用自动调整步骤数TUNESAMPLER.

例子:'numsteps',20

数据类型:单身的|双倍的

动量变量的质量矢量,指定为逗号分隔对组成'MassVector'和数字列向量,具有正值和相同的长度起点

与感兴趣的变量相关的“群众”的动量变量控制每个马尔可夫链提案中的哈密顿动态。

您可以使用自动调整质量矢量TUNESAMPLER.

例子:'MassVector',Rand(3,1)

数据类型:单身的|双倍的

抖动步骤尺寸和步数的方法,指定为逗号分隔的对'jittermethod'和以下值之一。

价值 描述
'抖动 - 两个'

随机抖动每个跳过轨迹的步长和步骤数。

'抖动 - numsteps'

抖动只有每个跳过轨迹的步数。

'没有任何'

没有抖动。

通过抖动,采样器随机选择每个跳过轨迹的步长或步数,因为比例小于'一步的大小''numsteps'价值观。使用抖动来提高汉密尔顿动态的跨越式集成的稳定性。

例子:'jittermethod','抖动 - 两个'

调整采样器步长的方法,指定为包括的逗号分隔对'stemizizeiningmethod''双平均'或者'没有任何'

如果是'stemizizeiningmethod'值设置为'双平均', 然后TUNESAMPLER.调整HMC采样器的跨越步骤尺寸,以实现模拟长度的固定值的某个接受比率。模拟长度等于步长乘以步数的次数。要设置目标接受率,请使用'targetacceptanceratio'名称 - 值对参数TUNESAMPLER.方法。

例子:'STALIZIZIZETUNINGMETHOD','没有'

调整采样器质量矢量的方法,指定为包括的逗号分隔对'massvectortuningmethod'和以下值之一。

价值 描述
'迭代 - 抽样'

托儿MassVector.通过使用一系列质量矢量估计来绘制样品来通过连续近似。

'赫索安'

设定MassVector.等于负面对角线的阴性logpdf.起点

'没有任何'

没有调整MassVector.

要执行调整,请使用TUNESAMPLER.方法。

例子:'massvectortuningmethod','hessian'

用于检查分析梯度的标志,指定为逗号分隔的配对组成'检查机'和任何一种真的(或者1) 或者错误的(或者0.)。

如果'检查机'真的然后,采样器计算数值梯度起点并将其与分析梯度进行比较logpdf.

例子:'检查',真实

采样变量名称,指定为逗号分隔对'variablenames'和字符串数组或字符向量的单元数组。数组的元素必须是唯一的。阵列的长度必须与长度相同起点

供应A.'variablenames'使用HMC采样器标记要素样本的矢量组件的值。

例子:'variablenames',{'拦截','beta'}

数据类型:细绳|细胞

使用数值梯度的标志,指定为逗号分隔对组成'usenumericalgradient'和任何一种真的(或者1) 或者错误的(或者0.)。

如果你设置了'usenumericalgradient'价值真的然后,HMC采样器以返回的日志密度数值估计梯度logpdf.。在这种情况下,logpdf.功能不需要将日志密度的梯度返回为第二个输出。使用数值梯度使HMC采样较慢。

例子:'usenumericalgradient',真实

输出参数

全部收缩

Hamiltonian Monte Carlo Sppler,返回A.汉密尔顿人寻找者目的。

在R2017A介绍