首页 > 其他分享 >R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析

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

时间:2023-10-20 22:55:24浏览次数:38  
标签:后验 RQ 回归 贝叶斯 直方图 位数 lasso

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

原文出处:拓端数据部落公众号

 

摘要

贝叶斯回归分位数在最近的文献中受到广泛关注,本文实现了贝叶斯系数估计和回归分位数(RQ)中的变量选择,带有lasso和自适应lasso惩罚的贝叶斯。还包括总结结果、绘制路径图、后验直方图、自相关图和绘制分位数图的进一步建模功能。

简介

回归分位数(RQ)由(Koenker和Gilbert,1978)提出,将感兴趣的结果的条件分位数作为预测因子的函数来建模。自引入以来,分位数回归一直是理论界非常关注的话题,也在许多研究领域得到了大量的应用,如计量经济学、市场营销、医学、生态学和生存分析(Neelon等,2015;Davino等,2013;Hao和Naiman,2007)。假设我们有一个观察样本{(xi , yi);i = 1, 2, - -, n},其中yi表示因变量,xi表示协变量的k维矢量。 

贝叶斯分位数回归

Tobit RQ为描述非负因变量和协变量向量之间的关系提供了一种方法,可以被表述为因变量的数据未被完全观察到的分位数回归模型。关于Tobit 分位数回归模型有相当多的文献,我们可以参考Powell(1986)、Portnoy(2003)、Portnoy和Lin(2010)以及Kozumi和Kobayashi(2011)来了解概况。考虑一下这个模型。

其中,yi是观察到的因变量,y∗i是相应的潜在的未观察到的因变量,y 0是一个已知的点。可以证明,RQ系数向量β可以通过以下最小化问题的解来持续估计

Yu和Stander(2007)提出了一种Tobit RQ的贝叶斯方法,使用ALD计算误差,并使用Metropolis-Hastings(MH)方法从其后验分布中抽取β。

真实数据实例

我们考虑用真实的数据例子。

免疫球蛋白G数据

这个数据集包括298名6个月到6岁儿童的免疫球蛋白G的血清浓度(克/升),Isaacs等人(1983)对其进行了详细讨论,Yu等人(2003)也使用了该数据集。为了说明问题,该数据集的贝叶斯分位数回归模型(可以拟合如下)。 

   
rq(血清浓度~年龄, tau=0.5, runs=2000)

摘要函数提供估计值和95%的置信区间

 

绘制数据,然后将五条拟合的RQ线叠加在散点图上。 

   

R> for (i in 1:5) {
+ taus=c(0.05, 0.25, 0.5, 0.75, 0.95)
+ rq(tau=taus[i],runs=500, burn=100)
+ abline(fit, col=i)
+ }
R> 
R> for (i in 1:5) {
+ fit = rq(年龄+I(年龄^2),tau=taus[i],runs=500, burn=100)
+ curve(,add=TRUE)
+ }

图2:免疫球蛋白G数据的散点图和RQ拟合。

该图显示了298名6个月至6岁儿童的免疫球蛋白G的散点图。叠加在该图上的是{.05, .25, .50, .75, .95}的RQ线(左图)和 RQ线(左图)和RQ曲线(右图)。

图可以用来评估吉布斯采样向平稳分布的收敛情况。我们在图1中只报告了τ=0.50时每个参数的路径图和后验直方图。我们使用以下代码

 

   
plot(fit,"tracehist",D=c(1,2))

可以通过生成路径图、后验直方图、自相关图来对Gibbs采样的绘制结果进行图形总结。路径和直方图,路径和自相关,直方图和自相关,以及路径、直方图和自相关。这个函数还有一个选项。在图3中,免疫球蛋白G数据系数的路径图表明,采样从后验空间的一个偏远区域跳到另一个区域的步骤相对较少。此外,直方图显示边际密度实际上是所期望的平稳的单变量常态。

 

图3:当τ=0.50时,免疫球蛋白G数据集的系数的路径和密度图。

前列腺癌数据

在本小节中,我们说明贝叶斯分位数回归在前列腺癌数据集(Stamey等人,1989)上的表现。该数据集调查了等待根治性前列腺切除术的病人的前列腺特异性抗原(lpsa)水平和八个协变量之间的关系。

这些协变量是:癌症对数体积(lcavol)、前列腺的对数重量(lweight)、年龄(age)、良性前列腺的对数体积(lbph)、精囊侵犯(svi)、胶囊穿透的对数(lcp)、格里森评分(gleason)以及格里森评分4或5的百分比(pgg45)。

在本小节中,我们假设因变量(lpsa)均值为零,而预测因子已被标准化,均值为零。为了说明问题,我们考虑当τ=0.50时,贝叶斯lasso套索RQ(方法="BLqr")。在这种情况下,我们使用以下代码

   

R> x=as.matrix(x)
R> rq(y~x,tau = 0.5, method="BLqr", runs = 5000, burn = 1000, thin = 1)

模型法可用于确定回归中的活跃变量。 

相应的吉布斯采样的收敛性是通过生成样本的路径图和边际后验直方图评估的。因此,图可以用来提供一个关于吉布斯采样器收敛的图形检查,通过使用以下代码检查路径图和边际后验直方图。

   
plot(fit, type="trace")

上述代码的结果分别显示在图4和图5中。图4中的路径图显示,生成的样本迅速穿越了后验空间,图5中的边际后验直方图显示,条件后验分布实际上是所需的平稳单变量常态。 

小麦数据

我们考虑一个小麦数据集。这个数据集来自于国家小麦种植发展计划(2017)。这个小麦数据由11个变量的584个观测值组成。因变量是每2500平方米小麦产量增加的百分比。协变量是化肥尿素(U)、小麦种子播种日期(Ds)、小麦种子播种量(Qs)、激光平田技术(LT)、复合肥施肥(NPK)、播种机技术(SMT)、绿豆作物种植(SC)、作物除草剂(H)、作物高钾肥(K)、微量元素肥料(ME)。

下面的命令给出了τ=0.50时Tobit RQ的后验分布。

 

   
rq(y~x,tau=0.5, methods="Btqr")

 还可以拟合贝叶斯lassoTobit 分位数回归和贝叶斯自适应lassoTobit 分位数回归。当τ=0.50时,函数可以用来获得Tobit 分位数回归的后验平均值和95%的置信区间。 

结论

在本文中,我们已经说明了在分位数回归(RQ)中进行贝叶斯系数估计和变量选择。此外,本文还实现了带有lasso和自适应lasso惩罚的贝叶斯Tobit 分位数回归。还包括总结结果、绘制路径图、后验直方图、自相关图和绘制定量图的进一步建模。

参考文献

Alhamzawi, R., K. Yu, and D. F. Benoit (2012). Bayesian adaptive lasso quantile regression. Statistical Modelling 12 (3), 279–297.

Brownlee, K. A. (1965). Statistical theory and methodology in science and engineering, Volume 150. Wiley New York.

Davino, C., M. Furno, and D. Vistocco (2013). Quantile regression: theory and applications. John Wiley & Sons.


最受欢迎的见解

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模型实现

标签:后验,RQ,回归,贝叶斯,直方图,位数,lasso
From: https://www.cnblogs.com/tecdat/p/17778202.html

相关文章

  • C#输出文字对齐,空格位数对齐
    [C#]Console.WriteLine("-------------------------------");Console.WriteLine("FirstName|LastName|Age");Console.WriteLine("-------------------------------");Console.WriteLine($"{"Bill",-10}|{"G......
  • 使用Python指定列提取连续6位数据的单号(上篇)
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Python数据提取的问题,一起来看看吧。大佬们请问下 指定列提取连续6位数据的单号(该列含文字、数字、大小写字母等等),连续数字超过6位、小于6位的数据不要,这个为啥有的数据可以提取有的就提......
  • Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列
    全文链接:https://tecdat.cn/?p=33885原文出处:拓端数据部落公众号本文描述了帮助客户使用马尔可夫链蒙特卡洛(MCMC)方法通过贝叶斯方法估计基本的单变量随机波动模型,就像Kim等人(1998年)所做的那样。定义模型以及从条件后验中抽取样本的函数的代码也在Python脚本中提供。  ......
  • 四舍五入的数字 round(列名,小数点位数)
    selectsalas'原始数据',round(sal)as'四舍五入后的数据',round(sal,1)as'四舍五入1个小数点后的数据'fromemp;   ......
  • 朴素贝叶斯
     贝叶斯朴素贝叶斯朴素贝叶斯(NaiveBayes)是一种基于贝叶斯定理的分类算法,通常用于文本分类和模式识别任务。它被称为"朴素"因为它做出了一个朴素的假设,即特征之间是相互独立的,这在实际情况中并不总是成立,但这个假设使得算法计算简单且高效。特征之间的独立性意味着在贝叶斯......
  • R语言中的Stan概率编程MCMC采样的贝叶斯模型|附代码数据
    原文链接:http://tecdat.cn/?p=11161最近我们被客户要求撰写关于贝叶斯模型的研究报告,包括一些图形和统计输出。概率编程使我们能够实现统计模型,而不必担心技术细节。这对于基于MCMC采样的贝叶斯模型特别有用R语言中RStan贝叶斯层次模型分析示例stan简介Stan是用于贝叶斯推理......
  • R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化|附代码数据
    原文链接:http://tecdat.cn/?p=19889原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于Metropolis-Hastings采样的研究报告,包括一些图形和统计输出。如果您可以写出模型的似然函数,则 Metropolis-Hastings算法可以负责其余部分(即MCMC)。我写了r代码来简化对任意模型的后......
  • python学习之二位数组
    创建二维数组其实python没有数组的概念,是用list来代替的,创建其实可以直接写入行列式如下:也可以使用numpy,后面用到的话再写一篇运行结果如上从输入流写入数组目前只懂需要输入行跟列的二位数组,如果用到需要根据输入长度来判断的时候在补充 ......
  • 计算整数列表中的中位数
    在计算机科学和数据分析领域,计算整数列表中的中位数是一项非常重要的任务。中位数是一组数据中排在中间位置的数值,对于理解数据分布和预测数据趋势具有重要意义。本文将介绍如何使用Python语言来计算整数列表中的中位数,并详细阐述相关实现过程和优缺点。一、解决问题的方法要计算整......
  • sqlServer查询字段位数不够补0方法
    1.查询字段为字符串函数:RIGHT('0000'+字符串,n)即:从右侧截取字符串,n代表侧截取的位数实例:SELECTRIGHT('0000'+'66',3)//结果:066实例:SELECTRIGHT('0000'+'66',4)//结果:00662.查询字段非字符串......