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

news2025/1/12 19:08:13

全文链接:http://tecdat.cn/?p=24456

如果你正在进行统计分析:想要加一些先验信息,最终你想要的是预测。所以你决定使用贝叶斯点击文末“阅读原文”获取完整代码数据)。

相关视频


但是,你没有共轭先验。你可能会花费很长时间编写 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 先验参数,超参数
参数:7d9b67d77a361c6a703778f358191b48.png
模型:高斯似然、拉普拉斯和伽玛先验。
输出:后验样本,后验预测样本。

数据

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)

79e5307e81563df4ed4389ee24140557.png

预测分布

plot(density)

07644d6e78284208a8bf11bddfce950d.png


点击标题查阅往期内容

cc6daaa29903df9e53ac34f8bc2db2d7.png

R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断

outside_default.png

左右滑动查看更多

outside_default.png

01

1a579824670743f682c71f665e41471c.png

02

02a52b25a3f2f6f2cce817d29561d308.png

03

8982d4cd5e2d16b60048e5bc1c03930d.png

04

1c8cd535f78853c371c6c2881c32d0c6.png

链诊断

splas\[\[1\]\[1:5,\]

fdc2d39fd06dc5287abff7a8da45a35d.png

链诊断

trac("beta" )

193a49d502ec767c2d0923915563b63a.png

链诊断

pa(pars="beta")

18f9f30ef603864b69d90b0a1b4135d6.png

更多链诊断

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.


d0bcc1f933d012fd0dea57be13eca994.jpeg

点击文末“阅读原文”

获取全文完整资料。

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

d0c2b64d2912b1f607d0e9264fe297a8.jpeg

78b79eb116510e18474b34ba551687ab.png

点击标题查阅往期内容

R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断

【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享

R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样

R语言贝叶斯METROPOLIS-HASTINGS GIBBS 吉布斯采样器估计变点指数分布分析泊松过程车站等待时间

R语言马尔可夫MCMC中的METROPOLIS HASTINGS,MH算法抽样(采样)法可视化实例

python贝叶斯随机过程:马尔可夫链Markov-Chain,MC和Metropolis-Hastings,MH采样算法可视化

Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现

Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

Matlab用BUGS马尔可夫区制转换Markov switching随机波动率模型、序列蒙特卡罗SMC、M H采样分析时间序列

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

R语言BUGS序列蒙特卡罗SMC、马尔可夫转换随机波动率SV模型、粒子滤波、Metropolis Hasting采样时间序列分析

R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断

R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例

R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数

R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数

R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据

R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

Python贝叶斯回归分析住房负担能力数据集

R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析

Python用PyMC3实现贝叶斯线性回归模型

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言贝叶斯线性回归和多元线性回归构建工资预测模型

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言stan进行基于贝叶斯推断的回归模型

R语言中RStan贝叶斯层次模型分析示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较

R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

630af835fbcc126f98e03b135fc6c2fb.png

0fd4ffe79b93a2526c5d55815d047b39.jpeg

eb4ab7679bfee1bc71484cf6fd854837.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1030189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法训练-二叉树 五】【最近公共祖先】二叉树的最近公共祖先

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【二叉树的节点查找】&#xff0c;使用【二叉树】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条…

基于微信小程序的高校就业招聘系统设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

悬崖边:企业如何应对网络安全漏洞趋势

在本文中&#xff0c;我们将讨论企业在处理漏洞时面临的挑战&#xff0c;解释安全漏洞是如何引发网络攻击的&#xff0c;以及为什么它会导致不可接受的事件。我们还将分享我们在识别趋势性漏洞方面的经验。 现代信息安全方法正在成为企业的工作流程。例如&#xff0c;不久前&a…

Visio 无边框保存png和pdf文件

1 无边框保存为png 1 点击【开发工具】- 【显示ShapeSheet】- 【页】 选择【Print Properties】 更改【PageLeftMargin、PageRightMargin、PageTopMargin、PageBottomMargin】的数值&#xff0c;如果改成0&#xff0c;那么就完全没有空白。更改数值后一定要回车&#xff01; …

Uni-app 调用微信地图导航功能【有图】

前言 我们在使用uni-app时&#xff0c;有时候会遇到需要开发地图和导航的功能&#xff0c;这些方法其实微信小程序的API已经帮我们封装好了 详见&#xff1a;微信小程序开发文档 接下来我们就演示如何用uni-app来使用他们 使用 <template><view><button type…

什么是Vue的自定义指令(custom directives)?如何自定义指令?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Vue.js 的自定义指令⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友…

蓝桥杯 题库 简单 每日十题 day7

01 啤酒和饮料 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。啤酒每罐2.3元&#xff0c;饮料每罐1.9元。小明买了若干啤酒和饮料&#xff0c;一共花了82.3元。我们还知道他买的啤酒比饮料的数量少&#xff0c;请你…

时间任务管理软件OmniFocus 3 mac中文版软件特色

OmniFocus Standard mac是一款高效的任务管理软件&#xff0c;具有任务管理功能、自定义功能、简洁直观的界面以及强大的提醒和通知功能。 OmniFocus Standard mac软件特色 ​任务管理功能&#xff1a;OmniFocus Standard支持多种视图以适应不同的需求和偏好&#xff0c;比如项…

vue3【echarts 做的词云图】

效果图 安装 安装echarts npm install echarts安装词云图 npm install echarts-wordcloudecharts-wordcloud的git仓库地址 echarts官网地址 引用 import * as ECharts from "echarts"; //引用eacharts import echarts-wordcloud;//引用云词这里的echarts 是自己简…

驱动开发 linux内核GPIO子系统、及其新版API的概念和使用,linux内核定时器

1、GPIO子系统 概述&#xff1a;每一个芯片厂商生产出芯片后会给linux提供一个当前芯片中gpio外设的驱动&#xff0c;我们只需要调用对应的厂商驱动就可以完成硬件的控制。而linux内核源码中的gpio厂商驱动有很多&#xff0c;linux内核个会对厂商驱动做一些封装&#xff0c;会…

MyBatis 缓存模块

文章目录 前言缓存的实现Cache接口PerpetualCache 缓存的应用缓存对应的初始化一级缓存二级缓存第三方缓存 前言 MyBatis作为一个强大的持久层框架&#xff0c;缓存是其必不可少的功能之一&#xff0c;Mybatis中的缓存分为一级缓存和二级缓存。但本质上是一样的&#xff0c;都…

第七天:gec6818开发板QT和Ubuntu中QT安装连接sqlite3数据库驱动环境保姆教程

sqlite3数据库简介 帮助文档 SQL Programming 大多数关系型数的操作步骤&#xff1a;1&#xff09;连接数据库 多数关系型数据库都是C/S模型 (Client/Server)sqlite3是一个本地的单文件关系型数据库&#xff0c;同样也有“连接”的过程 2&#xff09;操作数据库 作为程序员&am…

windows下gvim的配置

一、vim配置文件 "查看自己的vimrc所在的目录 "在命令模式下 :echo $MYVIMRC"打开自己的vimrc文件 "在命令模式下 :e $MYVIMRC 二、排版 "查看自己当前的字体及大小 "在命令模式下 :set guifont?"设置默认的字体为仿宋_GB2312&#xff…

蓝桥杯打卡Day12

文章目录 接龙数列冶炼金属 一、接龙数列OJ链接 本题思路:本题是一道经典的dp问题&#xff0c;设第i个数的首位数字是first&#xff0c; 末位数字是last。因为第i个数只可能加到一个以first结尾的接龙数列中使得这个接龙数列长度加1并且结尾数字变成last.所以状态转移方程为d…

让Mac菜单栏变得更加美观整洁——Bartender 5

Bartender 5是一款Mac电脑上的菜单栏图标管理软件&#xff0c;能够帮助您把菜单栏上的图标整理得更加美观、整洁和易于使用。如果您的菜单栏上充斥着许多图标&#xff0c;导致视觉上很不舒适和疲劳&#xff0c;那么Bartender 5就是解决这一问题的最佳选择&#xff01; Bartend…

智能热水器丨打造智能家居新体验

随着科学技术的不断发展&#xff0c;智能电器越来越被大众所采纳&#xff0c;如智能扫地机&#xff0c;智能洗衣机&#xff0c;智能微波炉等等&#xff0c;越来越智能的电器为人们的生活带来了许多便利。以往的热水器一般都是只有按键/机械的控制方式&#xff0c;没有其他无线控…

Python绘制X-bar图和R图 | 统计过程控制SPC

X-bar图和R图是用于统计过程控制&#xff08;SPC&#xff09;的两种常用工具&#xff0c;用于监测过程的平均值和范围&#xff08;变异性&#xff09;。这些图有助于识别过程中的变化和异常&#xff0c;以便及时采取纠正措施。 **X-bar图&#xff08;平均值控制图&#xff09;…

Gitee使用用户名密码登录一直错误/IDEA连接gitee仓库密码错误

天坑,注册的时候名字带了大写,用户名自动给你变成小写 真正的用户名在个人主页里面看,是后面的字符,才是真正的用户名.排查了一个小时密码问题,真的坑

使用扩展运算符(...)合并数组

在项目开发过程中&#xff0c;有一个需求&#xff0c;需要制作一个带有标题的表格&#xff0c;如下所示&#xff1a; 和后端开发沟通时&#xff0c;后端计划返回三个数组&#xff0c;标题写死。所以我需要做的就是把数组合并&#xff0c;然后在三个数组之前增加标题。这里我采用…

入行软件测试多年的心得体会

成为xx一员测试已经有1年半了&#xff0c;一直没有真正坐下来花些时间将自己的思路理清一下。刚好近期公司落地了OKR&#xff0c;给自己制定了OKR之后思路终于开始清晰起来&#xff0c;朦朦胧胧地开始看清了远方的路&#xff0c;麻着胆子分析一下自己&#xff0c;毕竟摸黑走路的…