码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据...


    全文链接: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
    模型:高斯似然、拉普拉斯和伽玛先验。
    输出:后验样本,后验预测样本。

    数据

    1. int0> n;
    2. vectr\[n\] y;
    3. rel0> a;

    参数

    1. vetor\[p+1\] beta;
    2. real0> siga;

    转换后的参数(可选)

    1. vectr\[n\] liped;
    2. lnpred = X*bea;

    模型

    1. bta ~ dolexneial(0,w);
    2. siga ~ gama(a,b);

    或没有矢量化,

    1. for(i in 1:n){
    2. y\[i\]~noral(X\[i,\]*beta,siga);
    3. }

    生成的数量(可选)

    1. vecor\[n\] yprict;
    2. for(i in 1:n){
    3. prdit\[i\] = nrmlrng(lnprd\[i\],siga);

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

    职业声望数据集

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

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

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

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

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

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

    类型:职业的类型

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

     在R中运行

    1. library(rstan)
    2. stan(file="byLASO",iter=50000)

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

    绘制后验分布图

    1. par(mrow=c(1,2))
    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 也兼容自制函数。
    如果你的先验或似然函数不标准,则很有用。

    1. model {
    2. beta ~ doubexp(0,w);
    3. for(i in 1:n){
    4. logprb(‐0.5*fs(1‐(exp(normalog(
    5. siga))/yde));
    6. }
    7. }

    结论

    不要浪费时间编码和调整 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

  • 相关阅读:
    ThreadLocal源码解析以及常见面试题
    超分之RVRT
    【虚拟化生态平台】虚拟化平台搭建
    Spring Boot中配置多个数据源
    Android AIDEGen tools基本使用
    药物研发---信息部门考核办法
    【python学习】基础篇-常用函数-sorted() 对可迭代对象进行排序
    MongoDB 开源“可查询加密”系统 Queryable Encryption
    【ES6知识】简介、语法变化、解构赋值
    重温 JavaScript 系列(2):数组去重、类数组转换数组
  • 原文地址:https://blog.csdn.net/tecdat/article/details/133110781
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号