在这篇文章中,我将对多元线性回归做同样的事情。我将得出阻塞的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吉布斯采样贝叶斯多元线性回归相关推荐

  1. r语言中的while循环_R编程中的While循环

    r语言中的while循环 In addition to the for loop we discussed earlier, R also offers another kind of loop to ...

  2. 1071svm函数 r语言_如何利用R语言中的rpart函数建立决策树模型

    决策树是根据若干输入变量的值构造出一个适合的模型,以此来预测输出变量的值,并用树形结构展示出来.决策树主要有两个类别:分类树和回归树.分类树主要针对离散的目标变量,回归树则针对连续的目标变量.R语言中 ...

  3. r语言中c函数错误,R语言中c()函数与paste()函数的区别说明

    c()函数:将括号中的元素连接起来,并不创建向量 paste()函数:连接括号中的元素 例如 c(1, 2:4),结果为1 2 3 4 paste(1, 2:4),结果为"1 2" ...

  4. r语言中的shiny教程_如何使用Shiny在R中编写Web应用程序

    r语言中的shiny教程 新年快乐! 这个月我忙于撰写一些较大的文章,因此请在接下来的几周内查找这些文章. 对于本月的Nooks和Crannies,我想简要指出一个我一直在用它进行自我教育的出色R库. ...

  5. R语言中if语句使用方法之超详细教程

    在R语言中,if属于一种分支结构,即根据某个条件执行相关的语句.R中的if语句与else配合主要有3种结构. 单个if语句 if(cond) {expr} 其它语句 即当括弧中的cond条件为TRUE ...

  6. R语言中GCC编译的问题(续)

    这篇文章承接R语言中GCC编译的问题,这篇文章主要解决我在Linux系统上安装"expm"出现的问题. 出现的问题 这个问题非常的有趣,因为我在两台服务器分别安装同一个包,其中一台 ...

  7. r语言中paste函数_R中的paste()函数-简要指南

    r语言中paste函数 Using the paste() function in R will be straight and simple. In this tutorial let's see ...

  8. R语言中的igraph包绘制网络图

    本文转自网络. R语言中的igraph包可以很方便地画出网络图,在社交关系分析等领域发挥重要作用,下面介绍包中一个重要的函数graph_from_data_frame(). graph_from_da ...

  9. 相关系数pearson、spearman、kendall和R语言中的cor/or.test()

    相关系数pearson.spearman.kendall和R语言中的cor/cor.test 1. 相关系数pearson.spearman.kendall 2. R语言cor函数和cor.test函 ...

最新文章

  1. php指向mysql路径_编译php 但不知道--with-mysql指向哪个路径
  2. linux增加自定义path和manpath
  3. Python数据清理之解析XLRD文件
  4. Android Studio中统一管理版本号引用配置
  5. Silverlight 控件的验证
  6. Python快速学习06:词典
  7. 学习笔记Hive(二)—— Hive安装配置
  8. 前端常用插件、工具类库汇总,新手必收藏!!!
  9. sql tempdb清理_SQL Server TempDB数据库和闩锁争用
  10. MVC学习二:基础语法
  11. crtmpserver 配置说明_crtmpserver框架代码详解
  12. CenterOs底下安装redis
  13. 浙江最新建筑施工特种工(施工升降机)机考真题及答案解析
  14. ubuntu双系统修改启动菜单
  15. 解决html5手机端滑动卡顿的现象
  16. vc++之windows api
  17. HR在线揭秘:面试总被虐?这 12 个必问题请记好答案!
  18. SEO是做什么的,每天需要做什么
  19. 十款免费的Web前端开发工具
  20. 基于Filament引擎的Animoji效果实现

热门文章

  1. LeetCode-240 Search a 2D Matrix II
  2. iOS_CNBlog项目开发 (基于博客园api开发) 上篇
  3. -webkit-gradient webkit内核浏览器的Linear Gradients (线性渐变) -Css3演示
  4. 《你必须知道的.NET》,前言
  5. Kali Linux2使用基础
  6. CodePush 管理工具 App Center Cli 的常用命令行
  7. Vue 适配移动端 使用 postcss-pxtorem lib-flexible 插件 转px为vw rem
  8. python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比
  9. offsetwidth/offsetheight的区别
  10. 【移动端vue ui框架学习】vue项目如何使用基于vue的UI框架mint ui