R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
在这篇文章中,我将对多元线性回归做同样的事情。我将得出阻塞的Gibbs采样器所需的条件后验分布。然后我将对采样器进行编码并使用模拟数据对其进行测试。
一个贝叶斯模型
假设我们有一个样本大小的科目。我们观察结果向量。贝叶斯多元回归假设该向量是从多元正态分布中得出的,其中均值向量是和协方差矩阵。这里是观察到的协变量矩阵。注意,该矩阵的第一列是标识。参数矢量的, 是一种常见的方差参数,是单位矩阵。通过使用单位矩阵,我们假设独立观察。从形式上看,
到目前为止,这与频率设置中看到的多元正态回归相同。假设是完整列排名,最大化可能性产生解决方案:
通过为和指定先验分布来获得贝叶斯模型。对于这个例子,我将使用平坦的,不正确的先验 和反伽马先验:
我们假设超级参数是简单的。
联合后验分布
关节后验分布与...成正比
我们可以这样写,因为我们假设事先独立。那是,
。
替换分布,
block吉布斯采样器
在对采样器进行编码之前,我们需要导出Gibbs采样器的组件 - 每个参数的后验条件分布。
条件后验是通过降低因子而不是从关节后部和重新排列来找到的。这种情况很容易,因为没有什么可以放弃的:
条件后验需要更多的线性代数。
这是一个非常漂亮和直观的结果。因为我们在参数向量上使用平坦先验,所以参数向量的条件后验以最大似然估计为中心 。条件后验的协方差矩阵是协方差矩阵的频率估计,
还要注意,条件后验是一个多变量分布,因为它是一个向量。因此,在Gibbs采样器的每次迭代中,我们从后部绘制整个矢量或“块”。这比从每个参数的条件分布中绘制条件分布一样,一次一个,效率要高得多。这就是程序被称为“阻塞”采样器的原因。
模拟
我模拟了一个 结果向量。这是单位矩阵,是一个模型矩阵。真正的参数向量是
运行阻塞的Gibbs采样器(block_gibbs()函数)会生成真实系数和方差参数的估计值。运行了500,000次迭代。老化期为100,000,修剪10次迭代。
下面是MCMC链的图,其中真实值用红线表示。
以下是应用老化和修剪后参数的后验分布:
似乎我们能够对这些参数进行合理的后验估计。分布并不完全以事实为中心,因为我们的数据集只是事实的一个实现。为了确保贝叶斯估计器正常工作,我重复这个练习1000个模拟数据集。
这将产生1,000套后验平均值和1,000套95%可信区间。平均而言,这1000个后方手段应以真相为中心。平均而言,真实参数值应该在95%的时间内在可信区间内。
以下是这些评估的摘要。
“Estimator Means”列是所有1,000个模拟的平均后验平均值。非常好。百分比偏差均小于5%。所有参数的95%CI覆盖率约为95%。
扩展
我们可以对此模型进行许多扩展。例如,可以使用除Normal之外的其他分布以适应不同类型的结果。例如,如果我们有二进制数据,我们可以将其建模为:
然后预先分配。这个想法将贝叶斯线性回归推广到贝叶斯GLM。
在本文中概述的线性情况下,可以更灵活地对协方差矩阵进行建模。相反,假设协方差矩阵是具有单个共同方差的对角线。这是多元线性回归中的同方差性假设。如果数据是聚类的(例如,每个受试者多次观察),我们可以使用逆Wishart分布来模拟整个协方差矩阵。
还有问题吗?联系我们!
大数据部落 -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务
统计分析和数据挖掘咨询服务:y0.cn/teradat(咨询服务请联系官网客服)
QQ:3025393450
【服务场景】
科研项目; 公司项目外包;线上线下一对一培训;数据采集;学术研究;报告撰写;市场调查。
【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询服务
转载于:https://www.cnblogs.com/tecdat/p/10751627.html
R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归相关推荐
- r语言中的while循环_R编程中的While循环
r语言中的while循环 In addition to the for loop we discussed earlier, R also offers another kind of loop to ...
- 1071svm函数 r语言_如何利用R语言中的rpart函数建立决策树模型
决策树是根据若干输入变量的值构造出一个适合的模型,以此来预测输出变量的值,并用树形结构展示出来.决策树主要有两个类别:分类树和回归树.分类树主要针对离散的目标变量,回归树则针对连续的目标变量.R语言中 ...
- r语言中c函数错误,R语言中c()函数与paste()函数的区别说明
c()函数:将括号中的元素连接起来,并不创建向量 paste()函数:连接括号中的元素 例如 c(1, 2:4),结果为1 2 3 4 paste(1, 2:4),结果为"1 2" ...
- r语言中的shiny教程_如何使用Shiny在R中编写Web应用程序
r语言中的shiny教程 新年快乐! 这个月我忙于撰写一些较大的文章,因此请在接下来的几周内查找这些文章. 对于本月的Nooks和Crannies,我想简要指出一个我一直在用它进行自我教育的出色R库. ...
- R语言中if语句使用方法之超详细教程
在R语言中,if属于一种分支结构,即根据某个条件执行相关的语句.R中的if语句与else配合主要有3种结构. 单个if语句 if(cond) {expr} 其它语句 即当括弧中的cond条件为TRUE ...
- R语言中GCC编译的问题(续)
这篇文章承接R语言中GCC编译的问题,这篇文章主要解决我在Linux系统上安装"expm"出现的问题. 出现的问题 这个问题非常的有趣,因为我在两台服务器分别安装同一个包,其中一台 ...
- r语言中paste函数_R中的paste()函数-简要指南
r语言中paste函数 Using the paste() function in R will be straight and simple. In this tutorial let's see ...
- R语言中的igraph包绘制网络图
本文转自网络. R语言中的igraph包可以很方便地画出网络图,在社交关系分析等领域发挥重要作用,下面介绍包中一个重要的函数graph_from_data_frame(). graph_from_da ...
- 相关系数pearson、spearman、kendall和R语言中的cor/or.test()
相关系数pearson.spearman.kendall和R语言中的cor/cor.test 1. 相关系数pearson.spearman.kendall 2. R语言cor函数和cor.test函 ...
最新文章
- php指向mysql路径_编译php 但不知道--with-mysql指向哪个路径
- linux增加自定义path和manpath
- Python数据清理之解析XLRD文件
- Android Studio中统一管理版本号引用配置
- Silverlight 控件的验证
- Python快速学习06:词典
- 学习笔记Hive(二)—— Hive安装配置
- 前端常用插件、工具类库汇总,新手必收藏!!!
- sql tempdb清理_SQL Server TempDB数据库和闩锁争用
- MVC学习二:基础语法
- crtmpserver 配置说明_crtmpserver框架代码详解
- CenterOs底下安装redis
- 浙江最新建筑施工特种工(施工升降机)机考真题及答案解析
- ubuntu双系统修改启动菜单
- 解决html5手机端滑动卡顿的现象
- vc++之windows api
- HR在线揭秘:面试总被虐?这 12 个必问题请记好答案!
- SEO是做什么的,每天需要做什么
- 十款免费的Web前端开发工具
- 基于Filament引擎的Animoji效果实现
热门文章
- LeetCode-240 Search a 2D Matrix II
- iOS_CNBlog项目开发 (基于博客园api开发) 上篇
- -webkit-gradient webkit内核浏览器的Linear Gradients (线性渐变) -Css3演示
- 《你必须知道的.NET》,前言
- Kali Linux2使用基础
- CodePush 管理工具 App Center Cli 的常用命令行
- Vue 适配移动端 使用 postcss-pxtorem lib-flexible 插件 转px为vw rem
- python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比
- offsetwidth/offsetheight的区别
- 【移动端vue ui框架学习】vue项目如何使用基于vue的UI框架mint ui