文档帮助中心文档
Hamiltonian Monte Carlo(HMC)采样器
HMC = HMCSampler(logpdf,startpoint)
hmc = hmcSampler (___,名称,价值)
例子
hmc= hmcSampler (logpdf.,起点)创建一个汉密尔顿蒙特卡罗(HMC)采样器,返回汉密尔顿人寻找者对象。logpdf.是一个函数句柄,用于计算均衡分布及其梯度的概率密度的对数。列向量起点是开始HMC抽样的起始点。
hmc= hmcSampler (logpdf.,起点)
hmc
logpdf.
起点
汉密尔顿人寻找者
创建采样器后,可以使用方法计算地图(最大-A-postiori)点估计,调整采样器,绘制样本和检查收敛诊断汉密尔顿人寻找者班级。有关此工作流程的示例,请参阅基于哈密顿蒙特卡罗的贝叶斯线性回归.
hmc= hmcSampler (___,名称,价值)使用一个或多个名称值对参数指定其他选项。在所有其他输入参数后指定名称值对参数。
hmc= hmcSampler (___,名称,价值)
名称,价值
全部收缩
建立一个哈密顿蒙特卡罗(HMC)采样器,从一个正态分布中采样。
首先,保存函数QuancleDistrad.在MATLAB®路径上,返回多元正常日志概率密度及其渐变(QuancleDistrad.在本例的最后定义)。然后,调用带参数的函数来定义logpdf.的输入参数HMCSampler.功能。
QuancleDistrad.
HMCSampler.
手段= [1; -3];standevs = [1; 2];logpdf = @(theta)normaldistgrad(θ,意味着,stablevs);
为HMC采样器选择一个起始点。
startpoint = Randn(2,1);
创建HMC采样器并显示其属性。
smp = hmcSampler (logpdf,曾经繁荣);
SMP.
smp = HamiltonianSampler with properties: StepSize: 0.1000 NumSteps: 50 MassVector: [2x1 double] JitterMethod: 'jitter-both' StepSizeTuningMethod: 'dual-averaging' MassVectorTuningMethod: ' iter- sampling' LogPDF: @(theta)normalDistGrad(theta,means,standevs) VariableNames: {2x1 cell} StartPoint: [2x1 double]
的QuancleDistrad.函数返回均值为in的多元正态概率密度的对数亩和标准偏差Sigma.,指定为标量或列向量相同的长度起点.第二个输出参数是相应的梯度。
亩
Sigma.
功能[lpdf,glpdf] = normalDistGrad(X,Mu,Sigma) Z = (X - Mu)./Sigma;lpdf =总和(日志(σ)- 5 *日志(2 *π)- 5 * (z ^ 2));glpdf = z /σ;结尾
目标密度及其渐变的对数指定为函数手柄。
logpdf.必须返回两个输出参数:[lpdf, glpdf] = logpdf (X).这里,LPDF.基础-E日志概率密度(最多常数),glpdf是对数密度的梯度,和点X列向量的元素个数是否与列向量相同起点.
[lpdf, glpdf] = logpdf (X)
LPDF.
glpdf
X
输入参数X来logpdf.必须是不受约束的,这意味着X可以是任何实数。在使用HMC采样器之前,将任何有约束的采样参数转换为无约束的变量。
如果是'usenumericalgradient'值设置为真的,然后logpdf.不需要返回梯度作为第二个输出。使用数值梯度可能更容易,因为logpdf.不需要计算梯度,但它可以使采样变慢。
'usenumericalgradient'
真的
数据类型:function_handle
function_handle
开始抽样的初始点,指定为数字列向量。
数据类型:单|双倍的
单
双倍的
指定可选的逗号分离对名称,价值论点。的名字是参数名称和价值是相应的价值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen.
的名字
价值
name1,value1,...,namen,valuen
VariableNames,{“拦截”,“Beta”},“MassVectorTuningMethod”、“海赛”
“海赛”
“StepSize”
0.1
哈密顿动力学的步长,指定为逗号分隔对,由“StepSize”和正标量。
为了给出马尔可夫链的一种新的状态,HMC采样器采用跳越式积分的方法集成了哈密顿动力学。这个参数控制跳跃式集成的步长。
您可以使用以下命令自动调整步长tuneSampler.
tuneSampler
例子:'STAPEIZE',0.2
'STAPEIZE',0.2
“NumSteps”
50
哈密顿动力学的步数,指定为逗号分隔对组成“NumSteps”和一个正整数。
为了给出马尔可夫链的一种新的状态,HMC采样器采用跳越式积分的方法集成了哈密顿动力学。这个参数控制跳跃式集成的步骤数。
您可以使用自动调整步骤数tuneSampler.
例子:“NumSteps”,20
“NumSteps”,20
“MassVector”
(大小(曾经繁荣,1),1)
动量变量的质量矢量,指定为逗号分隔对组成“MassVector”一个正数的列向量和起点.
与感兴趣的变量相关的“群众”的动量变量控制每个马尔可夫链提案中的哈密顿动态。
你可以自动调整质量矢量使用tuneSampler.
例子:'MassVector',Rand(3,1)
'MassVector',Rand(3,1)
'jittermethod'
“jitter-both”
“jitter-numsteps”
'没有任何'
抖动步骤尺寸和步数的方法,指定为逗号分隔的对'jittermethod'和下列值之一。
随机抖动每个跳过轨迹的步长和步骤数。
抖动只是每个跳跃轨迹的步数。
没有抖动。
对于抖动,采样器随机选择步长或每个跳变轨迹的步数为小于的值“StepSize”和“NumSteps”价值观。使用抖动来提高汉密尔顿动态的跨越式集成的稳定性。
例子:'jittermethod','抖动 - 两个'
'jittermethod','抖动 - 两个'
“StepSizeTuningMethod”
'双平均'
调整采样器步长的方法,指定为包括的逗号分隔对“StepSizeTuningMethod”和'双平均'或'没有任何'.
如果是“StepSizeTuningMethod”值设置为'双平均',然后tuneSampler调整HMC采样器的跳变步长,以实现模拟长度固定值的一定接受比。模拟长度等于步长乘以步数。要设置目标验收率,请使用'targetacceptanceratio'的名称-值对参数tuneSampler方法。
'targetacceptanceratio'
例子:“StepSizeTuningMethod”、“没有”
“StepSizeTuningMethod”、“没有”
'massvectortuningmethod'
'迭代 - 抽样'
调整采样器质量矢量的方法,指定为包括的逗号分隔对'massvectortuningmethod'和下列值之一。
调优MassVector.通过使用质量矢量估计序列绘制样本的连续逼近。
MassVector.
设定MassVector.等于负的对角线logpdf.当起点.
没有调整MassVector..
要执行调优,请使用tuneSampler方法。
例子:'massvectortuningmethod','hessian'
'massvectortuningmethod','hessian'
'检查机'
1
错误的
0
用于检查分析梯度的标志,指定为逗号分隔的配对组成'检查机'和任何一种真的(或1) 或者错误的(或0)。
如果'检查机'是真的,则采样器计算数值梯度在起点并将其与返回的解析梯度进行比较logpdf..
例子:'检查',真实
'检查',真实
“VariableNames”
{x1, x2,…}
抽样变量名,指定为逗号分隔对,由“VariableNames”和字符串数组或字符向量的单元数组。数组的元素必须是唯一的。阵列的长度必须与长度相同起点.
供应A.“VariableNames”使用HMC采样器标记要素样本的矢量组件的值。
例子:'variablenames',{'拦截','beta'}
'variablenames',{'拦截','beta'}
数据类型:字符串|细胞
字符串
细胞
使用数字梯度的标志,指定为由逗号分隔的对组成'usenumericalgradient'和任何一种真的(或1) 或者错误的(或0)。
如果你设置'usenumericalgradient'价值真的,则HMC采样器根据返回的测井密度数值估计梯度logpdf..在这种情况下,logpdf.函数不需要返回日志密度的梯度作为第二个输出。使用数值梯度会使HMC采样变慢。
例子:“UseNumericalGradient”,真的
“UseNumericalGradient”,真的
哈密顿蒙特卡罗采样器,返回为汉密尔顿人寻找者对象。
MHSample.
slicesample.
您有此示例的修改版本。您是否希望使用您的编辑打开此示例?
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系您当地的办公室