首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据

作者头像
拓端
发布2024-12-24 18:23:05
发布2024-12-24 18:23:05
2610
举报
文章被收录于专栏:拓端tecdat拓端tecdat

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 先验参数,超参数 参数:

模型:高斯似然、拉普拉斯和伽玛先验。 输出:后验样本,后验预测样本。

数据

代码语言:javascript
复制
int<lwer=0> n;
vectr\[n\] y;
rel<loer=0> a;

参数

代码语言:javascript
复制
vetor\[p+1\] beta;
real<lowr=0> siga;

转换后的参数(可选)

代码语言:javascript
复制
vectr\[n\] liped;
lnpred = X*bea;

模型

代码语言:javascript
复制
bta ~ dolexneial(0,w);
siga ~ gama(a,b);

或没有矢量化,

代码语言:javascript
复制
for(i in 1:n){
y\[i\]~noral(X\[i,\]*beta,siga);
}

生成的数量(可选)

代码语言:javascript
复制
vecor\[n\] yprict;
for(i in 1:n){
prdit\[i\] = nrmlrng(lnprd\[i\],siga);

对后验样本的每一个元素都要评估一次这个代码。

职业声望数据集

这里我们使用职业声望数据集,它有以下变量

教育:职业在职者的平均教育程度,年。

收入:在职者的平均收入,元。

女性:在职者中女性的百分比。

威望:Pineo-Porter的职业声望得分,来自一项社会调查。

普查:人口普查的职业代码。

类型:职业的类型

bc: 蓝领 prof: 专业、管理和技术 wc: 白领

在R中运行

代码语言:javascript
复制
library(rstan)
stan(file="byLASO",iter=50000)

在3.5秒内运行25000次预热和25000次采样。 第一次编译c++代码,所以可能需要更长的时间。

绘制后验分布图

代码语言:javascript
复制
par(mrow=c(1,2))
plot(denty(prs$bea)

预测分布

代码语言:javascript
复制
plot(density)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拓端数据部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hamiltonian Monte Carlo(HMC)
  • NUTS采样器(No-U-turn Sampler)
  • Stan 的优点
  • 示例
    • 构建 Stan 模型
    • 数据
    • 参数
    • 转换后的参数(可选)
    • 模型
    • 生成的数量(可选)
  • 职业声望数据集
  • 在R中运行
  • 绘制后验分布图
  • 预测分布
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档