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

news2024/10/5 18:32:05

原文链接:http://tecdat.cn/?p=23236

在频率学派中,观察样本是随机的,而参数是固定的、未知的数量点击文末“阅读原文”获取完整代码数据)。

相关视频

什么是频率学派?

概率被解释为一个随机过程的许多观测的预期频率。

有一种想法是 "真实的",例如,在预测鱼的生活环境时,盐度和温度之间的相互作用有一个回归系数?

什么是贝叶斯学派?

在贝叶斯方法中,概率被解释为对信念的主观衡量。

所有的变量--因变量、参数和假设都是随机变量。我们用数据来确定一个估计的确定性(可信度)。

这种盐度X温度的相互作用反映的不是绝对的,而是我们对鱼的生活环境所了解的东西(本质上是草率的)。

目标

频率学派

保证正确的误差概率,同时考虑到抽样、样本大小和模型。

  • 缺点:需要对置信区间、第一类和第二类错误进行复杂的解释。

  • 优点:更具有内在的 "客观性 "和逻辑上的一致性。


贝叶斯学派

分析更多的信息能在多大程度上提高我们对一个系统的认识。

  • 缺点:这都是关于信仰的问题! ...有重大影响。

  • 优点: 更直观的解释和实施,例如,这是这个假设的概率,这是这个参数等于这个值的概率。可能更接近于人类自然地解释世界的方式。

实际应用中:为什么用贝叶斯

  • 具有有限数据的复杂模型,例如层次模型,其中

9c20326e32815c2f105f125f890caa83.png

  • 实际的先验知识非常少

贝叶斯法则:

cf40dc6bc990e00a5e8c114125f4da9a.png

一些典型的贝叶斯速记法。

注意:

  • 贝叶斯的最大问题在于确定先验分布。先验应该是什么?它有什么影响?

目标:

计算参数的后验分布:π(θ|X)。

点估计是后验的平均值。

6414f3a90ee9e9a2511d637d8ebc9358.png

一个可信的区间是

c080e253a49c0c851730730d82c35358.png

你可以把它解释为一个参数在这个区间内的概率 。

计算

皮埃尔-西蒙-拉普拉斯(1749-1827)(见:Sharon Bertsch McGrayne: The Theory That Would Not Die)


  • 有些问题是可分析的,例如二项式似然-贝塔先验。

  • 但如果你有很多参数,这是不可能完成的操作

  • 如果你有几个参数,而且是奇数分布,你可以用数值乘以/整合先验和似然(又称网格近似)。

  • 尽管该理论可以追溯到1700年,甚至它对推理的解释也可以追溯到19世纪初,但它一直难以更广泛地实施,直到马尔科夫链蒙特卡洛技术的发展。

MCMC

MCMC的思想是对参数值θi进行 "抽样"。

回顾一下,马尔科夫链是一个随机过程,它只取决于它的前一个状态,而且(如果是遍历的),会生成一个平稳的分布。

技巧 "是找到渐进地接近正确分布的抽样规则(MCMC算法)。

有几种这样的(相关)算法。

  • Metropolis-Hastings抽样

  • Gibbs 抽样

  • No U-Turn Sampling (NUTS)

  • Reversible Jump

一个不断发展的文献和工作体系!

Metropolis-Hastings 算法

  1. 开始:53a3152468c13aeda34c606aed1fa8a3.png

  2. 跳到一个新的候选位置:7f3ae08b8f234e687be601c22f1515a3.png

  3. 计算后验:a8312cf489f833b7e60ace31e48a6616.png

  4. 如果522ab0b3a8ecfdd7738a37f0725fc140.png

  5. 如果3d1838c6880d901e8aff9f740111d02a.png

  6. 转到第2步

Metropolis-Hastings: 硬币例子

你抛出了5个正面。你对θ的最初 "猜测 "是

MCMC:

p.old <- prior *likelihood 
while(length(thetas) <= n){
  theta.new <- theta + rnorm(1,0,0.05)
  p.new <- prior *likelihood 
  if(p.new > p.old | runif(1) < p.new/p.old){
    theta <- theta.new
    p.old <- p.new
  }

画图:

hist(thetas\[-(1:100)\] )
curve(6*x^5 )

b611eedde0bb8fd14110b1a2c18c1a2a.png

30778ebc981df2e2cdf0a5cf08cbe23c.png


点击标题查阅往期内容

69ded0c11ccbf2c61056c3f82fce814e.jpeg

R语言用贝叶斯线性回归、贝叶斯模型平均 (BMA)来预测工人工资

outside_default.png

左右滑动查看更多

outside_default.png

01

outside_default.png

02

outside_default.png

03

outside_default.png

04

outside_default.png

采样链:调整、细化、多链

outside_default.png

  • 那个 "朝向 "平稳的初始过渡被称为 "预烧期",必须加以修整。

  • 怎么做?用眼睛看

  • 采样过程(显然)是自相关的。

  • 如何做?通常是用眼看,用acf()作为指导。

  • 为了保证你收敛到正确的分布,你通常会从不同的位置获得多条链(例如4条)。

  • 有效样本量

MCMC 诊断法

R软件包帮助分析MCMC链。一个例子是线性回归的贝叶斯拟合(α,β,σ

plot(line)

outside_default.png


预烧部分:

plot(line\[\[1\]\], start=10)

outside_default.png

MCMC诊断法

查看后验分布(同时评估收敛性)。

density(line)

outside_default.png


参数之间的关联性,以及链内的自相关关系

levelplot(line\[\[2\]\])
acfplot(line)

outside_default.png

outside_default.png

统计摘要

outside_default.png

运行MCMC的工具(在R内部)

逻辑Logistic回归:婴儿出生体重低

logitmcmc(low~age+as.factor(race)+smoke )

outside_default.png


plot(mcmc)

outside_default.png

MCMC与GLM逻辑回归的比较

outside_default.png

outside_default.png

MCMC与GLM逻辑回归的比较

对于这个应用,没有很好的理由使用贝叶斯建模,除非--你是 "贝叶斯主义者"。你有关于回归系数的真正先验信息(这基本上是不太可能的)。

一个主要的缺点是 先验分布棘手的调整参数。

但是,MCMC可以拟合的一些更复杂的模型(例如,层次的logit MCMChlogit)。

Metropolis-Hastings

outside_default.png

Metropolis-Hastings很好,很简单,很普遍。但是对循环次数很敏感。而且可能太慢,因为它最终会拒绝大量的循环。

Gibbs 采样

outside_default.png


在Gibbs吉布斯抽样中,你不是用适当的概率接受/拒绝,而是用适当的条件概率在参数空间中行进。并从该分布中抽取一次。

然后你从新的条件分布中抽取下一个参数。

比Metropolis-Hastings快得多。有效样本量要高得多!

BUGS(OpenBUGS,WinBUGS)是使用吉布斯采样器的贝叶斯推理。

JAGS是 "吉布斯采样器"

其他采样器

汉密尔顿蒙特卡洛(HMC)--是一种梯度的Metropolis-Hastings,因此速度更快,对参数之间的关联性更好。

No-U Turn Sampler(NUTS)--由于不需要固定的长度,它的速度更快。这是STAN使用的方法(见http://arxiv.org/pdf/1111.4246v1.pdf)。


outside_default.png

(Hoffman and Gelman 2011)

其他工具

你可能想创建你自己的模型,使用贝叶斯MC进行拟合,而不是依赖现有的模型。为此,有几个工具可以选择。

  • BUGS / WinBUGS / OpenBUGS (Bayesian inference Using Gibbs Sampling) - 贝叶斯抽样工具的鼻祖(自1989年起)。WinBUGS是专有的。OpenBUGS的支持率很低。

  • JAGS(Just Another Gibbs Sampler)接受一个用类似于R语言的语法编写的模型字符串,并使用吉布斯抽样从这个模型中编译和生成MCMC样本。可以在R中使用rjags包。

  • Stan(以Stanislaw Ulam命名)是一个类似于JAGS的相当新的程序--速度更快,更强大,发展迅速。从伪R/C语法生成C++代码。安装:http://mc-stan.org/rstan.html**

  • Laplace’s Demon 所有的贝叶斯工具都在R中:http://www.bayesian-inference.com/software

STAN


要用STAN拟合一个模型,步骤是:

  1. 为模型生成一个STAN语法伪代码(在JAGS和BUGS中相同

  2. 运行一个R命令,用C++语言编译该模型

  3. 使用生成的函数来拟合你的数据

STAN示例--线性回归

STAN代码是R(例如,具有分布函数)和C(即你必须声明你的变量)之间的一种混合。每个模型定义都有三个块。

_1_.数据块:

int n; //
  vector\[n\] y; // Y 向量

这指定了你要输入的原始数据。在本例中,只有Y和X,它们都是长度为n的(数字)向量,是一个不能小于0的整数。

_2_. 参数块

real beta1;  // slope

这些列出了你要估计的参数:截距、斜率和方差。


_3_. 模型块

sigma ~ inv_gamma(0.001, 0.001); 

    yhat\[i\] <- beta0 + beta1 * (x\[i\] - mean(x));}
    y ~ normal(yhat, sigma);

注意:

  • 你可以矢量化,但循环也同样快

  • 有许多分布(和 "平均值 "等函数)可用

请经常参阅手册!https://github.com/stan-dev/stan/releases/download/v2.9.0/stan-reference-2.9.0.pdf

2. 在R中编译模型

你把你的模型保存在一个单独的文件中, 然后用stan_model()命令编译这个模型。

这个命令是把你描述的模型,用C++编码和编译一个NUTS采样器。相信我,自己编写C++代码是一件非常非常痛苦的事情(如果没有很多经验的话),而且它保证比R中的同等代码快得多。

注意:这一步可能会很慢。

3. 在R中运行该模型

这里的关键函数是sampling()。还要注意的是,为了给你的模型提供数据,它必须是列表的形式

模拟一些数据。

X <- runif(100,0,20)
Y <- rnorm(100, beta0+beta1*X, sigma)

进行取样!

sampling(stan, Data)

这里有大量的输出,因为它计算了


print(fit, digits = 2)

outside_default.png

MCMC诊断法

为了应用coda系列的诊断工具,你需要从STAN拟合对象中提取链,并将其重新创建为mcmc.list。

extract(stan.fit
alply(chains, 2, mcmc)

outside_default.png


outside_default.png

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例》。

点击标题查阅往期内容

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

PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

MATLAB随机森林优化贝叶斯预测分析汽车燃油经济性

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

使用贝叶斯层次模型进行空间数据分析

MCMC的rstan贝叶斯回归模型和标准线性回归模型比较

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

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

matlab贝叶斯隐马尔可夫hmm模型实现

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

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

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据

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

R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据

R语言JAGS贝叶斯回归模型分析博士生延期毕业完成论文时间

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

Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户

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

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

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

随机森林优化贝叶斯预测分析汽车燃油经济性

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

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

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采样用于回归的贝叶斯估计

outside_default.png

outside_default.png

outside_default.png

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

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

相关文章

Spark SQL【电商购买数据分析】

Spark 数据分析 &#xff08;Scala&#xff09; import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, SparkSession} import org.apache.spark.{SparkConf, SparkContext}import java.io.{File, PrintWriter}object Taobao {case class Info(userId: Lo…

最该考的高含金量计算机证书盘点(文末领资料)

谈到大学规划&#xff0c;不少过来人都会建议萌新们在课余时间多多考证&#xff0c;俗话说的好“证多不压身”&#xff0c;今天我们就来聊一聊&#xff0c;计算机相关专业的大学生&#xff0c;有哪些证书可以考&#xff1f; 首先&#xff0c;不得不提的就是全国计算机二级考试…

web:[ACTF2020 新生赛]Exec

背景知识 命令执行漏洞 linux命令 题目 打开题目&#xff0c;页面显示的是一个ping 尝试一下 查看源代码发现 尝试ping一下百度 由题目名可知这道题关于exec&#xff08;命令执行&#xff09;&#xff0c;这里需要联想到可以多条命令执行 输入baidu.com;ls 尝试;号是否能够…

从统计语言模型到预训练语言模型---预训练语言模型(Transformer)

预训练模型的概念在计算机视觉领域并不陌生&#xff0c; 通常我们可以在大规模图像数据集上预先训练出一个通用 模型&#xff0c; 之后再迁移到类似的具体任务上去&#xff0c; 这样在减少对图像样本需求的同时&#xff0c; 也加速了模型的开发速度。计 算机视觉领域采用 Image…

互联网医院系统|互联网医院软件功能与广阔应用领域

随着科技的不断进步和人们对健康需求的提高&#xff0c;互联网医院已经成为当今医疗领域的热点话题。作为一种融合了互联网和医疗服务的创新模式&#xff0c;互联网医院带来了许多便利和改变。本文将详细介绍互联网医院的软件功能、应用范围以及未来的发展趋势。 互联网医院通过…

【计算机毕业设计】基于SpringBoot+Vue电影在线订票系统的开发与实现

博主主页&#xff1a;一季春秋博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容&#xff1a;毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…

机器学习笔记:概念对比——损失函数,代价函数,目标函数

损失函数 Loss Function 通常是针对单个训练样本而言 给定一个模型输出 和一个真实值y &#xff0c;损失函数是 代价函数 Cost Function 通常是针对整个训练集&#xff08;或者在使用 mini-batch gradient descent 时一个 mini-batch&#xff09;的总损失 目标函数 Objec…

备考cisp拿证,收藏这一篇就够了

为什么要考CISP 认证机构&#xff1a;中国信息安全测评中心&#xff0c;是中央批准成立的国家权威信息安全测评机构&#xff0c;CISP是当之无愧的国家级认证&#xff0c;是国内对信息安全从业人员资质能力的最高认可。 持证人数&#xff1a;在信息安全行业&#xff0c;持有CI…

多维数据可视化技术,Radviz可视化原理,向量化的 Radviz(vectorized Radviz,简称 VRV)

目录 多维数据可视化技术 Radviz可视化原理 向量化的 Radviz(vectorized Radviz,简称 VRV) 多维数据可视化技术 多维和高维数据普遍存在于我们的日常生活和科学研究中 . 比如 , 手机就包括品牌、型号、尺寸、重量、 生产日期、屏幕尺寸和电池容量等几十个属性; 又如 , 生物…

Pygame中Sprite类的使用3

在Pygame中Sprite类的使用2_棉猴的博客-CSDN博客中提到了通过派生自pygame.sprite.Sprite类的自定义类Zombie&#xff0c;可以实现一个僵尸的移动。可以通过pygame.sprite.Group类实现对多个Zombie类实例的管理&#xff0c;即可以实现多个僵尸的移动。 1 pygame.sprite.Group类…

一文彻底理解synchronized(通俗易懂的synchronized)

目录 一、什么是synchronized 二、synchronized的四种用法 2.1、修饰一个代码块 2.2、修饰一个方法 2.3、修饰一个静态的方法 2.4、修饰一个类 三、使用案例分析 3.1、修饰一个代码块 3.2、修饰一个方法 3.3、修饰一个静态的方法 3.4、修饰一个类 3.5 经典用法&…

#循循渐进学51单片机#UART串口通信#not.10

1、能够理解UART串口通信的基本原理和通信过程。 1&#xff09;串行通信的初步认识 并行通信&#xff1a;通信时数据的各个位同时传送&#xff0c;可以实现字节为单位通信&#xff0c;但是通信线占用资源太多&#xff0c;成本高。 串行通信&#xff1a;一次只能发送一位&…

debian终端快捷键设置

为了方便使用图形化debian&#xff0c;快捷调出shell终端是提升工作学习效率的最重要的一步。 1.首先点击右上角&#xff0c;选择设置 2.点击键盘&#xff0c;选择快捷键&#xff0c;并创建自定义快捷键 3.点击添加快捷键 4.根据图中提示创建快捷键 Name: Terminal Command…

软考网络工程师华为配置考点总结

华为交换机配置基础 1.vlan的配置 华为设备中划分VLAN的方式有&#xff1a; 静态的划分&#xff1a;基于接口动态划分&#xff1a;基于MAC地址、基于IP子网、基于协议、基于策略&#xff08;MAC地址、Ip地址&#xff09;。 其中基于接口划分VLAN&#xff0c;是最简单&#x…

Arduino程序设计(十一)8×8 共阳极LED点阵显示(74HC595)

88 共阳极LED点阵显示 前言一、74HC595点阵模块1、74HC595介绍2、74HC595工作原理3、1088BS介绍4、74HC595点阵模块 二、点阵显示实验1、点阵显示初探2、点阵显示进阶3、点阵显示高阶3.1 点阵显示汉字&#xff08;方法1&#xff09;3.2 点阵显示汉字&#xff08;方法2&#xff…

不用addEventListener(‘resize‘, this.resize),用新的Web API ResizeObserver监听DIV元素尺寸的变化

响应式设计指的是根据屏幕视口尺寸的不同&#xff0c;对 Web 页面的布局、外观进行调整&#xff0c;以便更加有效地进行信息的展示。我们日常生活中接触的很多应用都遵循响应式的设计。 响应式设计如今也成为 web 应用的基本需求&#xff0c;而现在很多 web 应用都已经组件化&a…

华为云云耀云服务器L实例评测 |云服务器选购

华为云耀云服务器 L 实例是一款轻量级云服务器&#xff0c;开通选择实例即可立刻使用&#xff0c;不需要用户再对服务器进行基础配置。新用户还有专享优惠&#xff0c;2 核心 2G 内存 3M 带宽的服务器只要 89 元/年&#xff0c;可以点击华为云云耀云服务器 L 实例购买地址去购买…

如何在新浪、搜狐、腾讯、网易、人民网等知名媒体网站上投稿

网络通稿成本低、投入小&#xff0c;软文宣传成为了众多企业的宣传选择&#xff0c;一篇优质的稿件更是能带来惊人的效果。越知名的网站传播效果越好&#xff0c;像新浪、搜狐、腾讯、网易、人民网等&#xff0c;那么如果找到这些网站投稿呢&#xff0c;本期盒子分享&#xff0…

[Go疑难杂症]为什么nil不等于nil

现象 在日常开发中&#xff0c;可能一不小心就会掉进 Go 语言的某些陷阱里&#xff0c;而本文要介绍的 nil ≠ nil 问题&#xff0c;便是其中一个&#xff0c;初看起来会让人觉得很诡异&#xff0c;摸不着头脑。 先来看个例子&#xff1a; type CustomizedError struct {Err…

MySQL的进阶篇1-MySQL的存储引擎简介

存储引擎 MySQL的体系结构 0、客户端连机器【java、Python、JDBC等】 1、【MySQL服务器-连接层】认证&#xff0c;授权&#xff0c;连接池 2、【MySQL服务器-服务层】 {SQL接口&#xff08;DML、DDL、存储过程、触发器&#xff09;、解析器、查询优化器、缓存} 3、【MySQL…