R语言Rstan概率编程规划MCMC采样的贝叶斯模型

本文介绍了使用R语言和RStan进行贝叶斯概率编程,特别是利用MCMC采样来解决层次回归问题。通过实例展示了如何定义Stan模型文件、准备数据、从后验分布抽样并进行MCMC诊断。文中详细探讨了学校数据集的层次模型解释,并以老鼠体重增长为例,说明层次回归在处理组间差异时的优势。
摘要由CSDN通过智能技术生成

概率编程使我们能够实现统计模型,而无需担心技术细节。它对基于MCMC采样的贝叶斯模型特别有用。

视频:R语言中RStan贝叶斯层次模型分析示例

 

stan简介

Stan是用于贝叶斯推理的C ++库。它基于No-U-Turn采样器(NUTS),该采样器用于根据用户指定的模型和数据估计后验分布。使用Stan执行分析涉及以下步骤:

  1. 使用Stan建模语言指定统计模型。通过专用的.stan  文件完成此操作  。
  2. 准备要提供给模型的数据。
  3. 使用该stan 函数从后验分布中采样  。
  4. 分析结果。

在本文中,我将通过两个层次模型展示Stan的用法。我将使用第一个模型讨论Stan的基本功能,并使用第二个示例演示更高级的应用。

 学校数据集

我们要使用的第一个数据集是  学校的数据集  。该数据集衡量了教练计划对大学入学考试(在美国使用的学业能力测验(SAT))的影响。 数据集如下所示:

正如我们所看到的:对于八所学校中的大多数,短期教练计划的确提高了SAT分数 。对于此数据集,我们有兴趣估算与每所学校相关的真实教练计划效果大小。我们考虑两种替代方法。首先,我们可以假设所有学校彼此独立。但是,这将难以解释,因为学校的后验区间由于高标准差而在很大程度上重叠。第二,假设所有学校的真实效果都相同,则可以汇总所有学校的数据。但是,这也是不合理的,因为该计划有针对学校的不同效果(例如,不同的老师和学生应该有不同的计划)。

因此,需要另一个模型。分层模型的优点是可以合并来自所有八所学校的信息,而无需假定它们具有共同的真实效果。我们可以通过以下方式指定层次贝叶斯模型:

根据该模型,教练的效果遵循正态分布,其均值是真实效果θj,其标准偏差为σj(从数据中得知)。真正的影响θj遵循参数μ和τ的正态分布。

定义Stan模型文件

在指定了要使用的模型之后,我们现在可以讨论如何在Stan中指定此模型。在为上述模型定义Stan程序之前,让我们看一下Stan建模语言的结构。

变量

在Stan中,可以通过以下方式定义变量:

int<lower=0> n; # 下界是0
int<upper=5> n; # 上限是5
int<lower=0,upper=5> n; # n 的范围是 [0,5]

注意,如果先验已知变量,则应指定变量的上下边界。

多维数据可以通过方括号指定:

vector[n] numbers; // 长度为n的向量
real[n] numbers;  // 长度为n的浮点数组
matrix[n,n] matrix; // n乘n矩阵

程序 

Stan中使用以下程序 :

  • data:用于指定以贝叶斯规则为条件的数据
  • 转换后的数据:用于预处理数据
  • 参数  (必填):用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值