原文链接:http://tecdat.cn/?p=24456
原文出处:拓端数据部落公众号
最近咱们被客户要求撰写对于 RStan 的钻研报告,包含一些图形和统计输入。
如果你正在进行统计分析:想要加一些先验信息,最终你想要的是预测。所以你决定应用贝叶斯。\
然而,你没有共轭先验。你可能会破费很长时间编写 Metropolis-Hastings 代码,优化承受率和提议散布,或者你能够应用 RStan。
Hamiltonian Monte Carlo(HMC)
HMC 是一种为 MH 算法生成提议散布的办法,该提议散布被承受的概率很高。具体算法过程请查看参考文献。\
打个比方:\
给粒子一些动量。\
它在滑冰场四周滑行,大部分工夫都在密度高的中央。\
拍摄这条轨迹的快照为后验散布提供了一个倡议样本。\
而后咱们应用 Metropolis-Hastings 进行校对。
NUTS 采样器(No-U-turn Sampler)
HMC,像 RWMH 一样,须要对步骤的数量和大小进行一些调整。\
No-U-Turn Sampler “ 或 NUTs(Hoffman 和 Gelman(2014)),对这些进行了自适应的优化。\
NUTS 建设了一组可能的候选点,并在轨迹开始自圆其说时立刻进行。
Stan 的长处
能够产生高维度的提议,这些提议被承受的概率很高,而不须要花工夫进行调整。\
有内置的诊断程序来剖析 MCMC 的输入。\
在 C ++ 中构建,所以运行迅速,输入到 R。
示例
如何应用 LASSO 构建贝叶斯线性回归模型。
构建 Stan 模型
\
数据:n、p、Y、X 先验参数,超参数 \
参数:\
模型:高斯似然、拉普拉斯和伽玛先验。\
输入:后验样本,后验预测样本。
数据
int<lwer=0> n;
vectr[n] y;
rel<loer=0> a;
参数
vetor[p+1] beta;
real<lowr=0> siga;
转换后的参数(可选)
vectr[n] liped;
lnpred = X*bea;
模型
bta ~ dolexneial(0,w);
siga ~ gama(a,b);
\
或没有矢量化,
for(i in 1:n){y[i]~noral(X[i,]*beta,siga);
}
生成的数量(可选)
vecor[n] yprict;
for(i in 1:n){prdit[i] = nrmlrng(lnprd[i],siga);
对后验样本的每一个元素都要评估一次这个代码。
职业声望数据集
这里咱们应用职业声望数据集,它有以下变量
教育:职业退职者的均匀教育水平,年。
支出:退职者的平均收入,元。
女性:退职者中女性的百分比。
权威:Pineo-Porter 的职业声望得分,来自一项社会考察。
普查:人口普查的职业代码。
类型:职业的类型
bc: 蓝领 \
prof: 业余、治理和技术 \
wc: 白领 \
在 R 中运行
library(rstan)
stan(file="byLASO",iter=50000)
在 3.5 秒内运行 25000 次预热和 25000 次采样。\
第一次编译 c ++ 代码,所以可能须要更长的工夫。
绘制后验分布图
par(mrow=c(1,2))
plot(denty(prs$bea)
\
预测散布
plot(density)
\
链诊断
splas[[1][1:5,]
链诊断
trac("beta")
\
链诊断
pa(pars="beta")
\
更多链诊断
Stan 还能够从链中提取各种其余诊断,如置信区间、无效样本量和马尔可夫链平方误差。\
链的值与各种链属性、对数似然、承受率和步长之间的比拟图。\
Stan 出错
stan 应用的步骤太大。\
能够通过手动减少冀望的均匀接受度来解决。\
adapt\_delta,高于其默认的 0.8\
stan(cntl = list(datta = 0.99, mxrh = 15))
\
这会减慢你的链的速度,但可能会产生更好的样本。
自制函数
Stan 也兼容自制函数。\
如果你的先验或似然函数不规范,则很有用。
model {beta ~ doubexp(0,w);
for(i in 1:n){
logprb(‐0.5*fs(1‐(exp(normalog(siga))/yde));
}
}
论断
不要浪费时间编码和调整 RWMH.\
Stan 运行得更快,会主动调整,并且应该会产生较好的样本。
参考文献
Alder, Berni J, and T E Wainwright. 1959.“Studies in Molecular Dynamics. I. General Method.”The Journal of Chemical Physics 31 (2). AIP: 459–66.
Hoffman, Matthew D, and Andrew Gelman. 2014.“The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo.”Journal of Machine Learning Research 15 (1): 1593–1623.
最受欢迎的见解
1.matlab 应用贝叶斯优化的深度学习
2.matlab 贝叶斯隐马尔可夫 hmm 模型实现
3.R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真
4.R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归
5.R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型
6.Python 用 PyMC3 实现贝叶斯线性回归模型
7.R 语言应用贝叶斯 层次模型进行空间数据分析
8.R 语言随机搜寻变量抉择 SSVS 预计贝叶斯向量自回归(BVAR)模型
9.matlab 贝叶斯隐马尔可夫 hmm 模型实现