R语言和Stan,JAGS:用rstan,rjag建立贝叶斯多元线性回归预测数据

本文将介绍如何在R中做贝叶斯回归分析,R中有不少包可以用来做贝叶斯回归分析,比如最早的(同时也是参考文献和例子最多的)R2WinBUGS包。

由Kaizong Ye,Sherry Deng撰写

这个包会调用WinBUGS软件来拟合模型,后来的JAGS软件也使用与之类似的算法来做贝叶斯分析。然而JAGS的自由度更大,扩展性也更好。

近来,STAN和它对应的R包rstan一起进入了人们的视线。STAN使用的算法与WinBUGS和JAGS不同,它改用了一种更强大的算法使它能完成WinBUGS无法胜任的任务。同时Stan在计算上也更为快捷,能节约时间。

例子

设Yi为地区i=1,…,ni=1,…,n从2012年到2016年支持增加的百分比。我们的模型

式中,Xji是地区i的第j个协变量。所有变量均中心化并标准化。我们选择σ2∼InvGamma(0.01,0.01)和α∼Normal(0100)作为误差方差和截距先验分布,并比较不同先验的回归系数。

加载并标准化选举数据


视频

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

选举数据的探索性分析

rstan中实现

统一先验分布

如果模型没有明确指定先验分布,默认情况下,Stan将在参数的合适范围内发出一个统一的先验分布。注意这个先验可能是不合适的,但是只要数据创建了一个合适的后验值就可以了。


R语言中的Stan概率编程MCMC采样的贝叶斯模型

阅读文章



随时关注您喜欢的主题


rjags中实现

用高斯先验拟合线性回归模型

在JAGS中编译模型

从后验预测分布(PPD)和JAGS预测分布绘制样本

请注意,PPD密度比JAGS预测密度略宽。这是考虑β和σ中不确定性的影响,它解释了JAGS预测的covarage略低的原因。但是,对于这些数据,JAGS预测的覆盖率仍然可以。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!