文件帮助中心文件
Hamiltonian Monte Carlo(HMC)采样器
HMC = HMCSampler(logpdf,startpoint)
HMC = HMCSampler(___,名称,价值)
例子
HMC.= hmcsampler(logpdf.那起点)创建一个汉密尔顿蒙特卡罗(HMC)采样器,返回汉密尔顿人寻找者目的。logpdf.是一种函数手柄,可评估均衡分布的概率密度及其梯度的对数。栏矢量起点是启动HMC采样的初始点。
HMC.= hmcsampler(logpdf.那起点)
HMC.
logpdf.
起点
汉密尔顿人寻找者
创建采样器后,可以使用方法计算地图(最大-A-postiori)点估计,调整采样器,绘制样本和检查收敛诊断汉密尔顿人寻找者班级。有关此工作流程的示例,请参阅使用Hamiltonian Monte Carlo的贝叶斯线性回归。
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,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.,指定为标量或列向量相同的长度起点。第二个输出参数是相应的渐变。
亩
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是一个列向量,元素数量相同起点。
[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','hessian'
'赫索安'
'一步的大小'
0.1
汉密尔顿动态的步长,指定为逗号分隔的配对'一步的大小'和正标量。
为提出Markov链的新状态,HMC采样器使用LeapFrog集成集成了Hamiltonian动态。此参数控制跨越式集成的步骤大小。
您可以使用自动调整步骤尺寸TUNESAMPLER.。
TUNESAMPLER.
例子:'STAPEIZE',0.2
'STAPEIZE',0.2
'numsteps'
50.
哈密顿动态的步数,指定为逗号分隔的配对组成'numsteps'和一个正整数。
为提出Markov链的新状态,HMC采样器使用LeapFrog集成集成了Hamiltonian动态。此参数控制LeapFrog集成的步骤数。
您可以使用自动调整步骤数TUNESAMPLER.。
例子:'numsteps',20
'numsteps',20
'MassVector'
(大小(startpoint,1),1)
动量变量的质量矢量,指定为逗号分隔对组成'MassVector'和数字列向量,具有正值和相同的长度起点。
与感兴趣的变量相关的“群众”的动量变量控制每个马尔可夫链提案中的哈密顿动态。
您可以使用自动调整质量矢量TUNESAMPLER.。
例子:'MassVector',Rand(3,1)
'MassVector',Rand(3,1)
'jittermethod'
'抖动 - 两个'
'抖动 - numsteps'
'没有任何'
抖动步骤尺寸和步数的方法,指定为逗号分隔的对'jittermethod'和以下值之一。
随机抖动每个跳过轨迹的步长和步骤数。
抖动只有每个跳过轨迹的步数。
没有抖动。
通过抖动,采样器随机选择每个跳过轨迹的步长或步数,因为比例小于'一步的大小'和'numsteps'价值观。使用抖动来提高汉密尔顿动态的跨越式集成的稳定性。
例子:'jittermethod','抖动 - 两个'
'jittermethod','抖动 - 两个'
'stemizizeiningmethod'
'双平均'
调整采样器步长的方法,指定为包括的逗号分隔对'stemizizeiningmethod'和'双平均'或者'没有任何'。
如果是'stemizizeiningmethod'值设置为'双平均', 然后TUNESAMPLER.调整HMC采样器的跨越步骤尺寸,以实现模拟长度的固定值的某个接受比率。模拟长度等于步长乘以步数的次数。要设置目标接受率,请使用'targetacceptanceratio'名称 - 值对参数TUNESAMPLER.方法。
'targetacceptanceratio'
例子:'STALIZIZIZETUNINGMETHOD','没有'
'STALIZIZIZETUNINGMETHOD','没有'
'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',真实
Hamiltonian Monte Carlo Sppler,返回A.汉密尔顿人寻找者目的。
MHSample.
slicesample.
您有此示例的修改版本。您是否希望使用您的编辑打开此示例?
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,以便在可用的地方进行翻译的内容,并查看本地活动和优惠。根据您的位置,我们建议您选择:。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。
联系您当地的办公室