欢迎光临散文网 会员登陆 & 注册

r语言使用rjags R2jags建立贝叶斯模型

2021-01-03 11:15 作者:拓端tecdat  | 我要投稿

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

 

本文是通过对area,perimeter,campactness几个变量的贝叶斯建模,来查看他们对groovelength这个变量的影响.

并且对比rjags R2jags和内置贝叶斯预测函数的结果。

 

读取数据

   


  1. seed=read.csv("seeds_dataset.csv")

  2. seed=seed[,1:7]


 

 查看数据的结构

  1.  str(seed)

  2.  'data.frame':    209 obs. of  7 variables:

  3.   $ area        : num  14.9 14.3 13.8 16.1 14.4 ...

  4.   $ perimeter   : num  14.6 14.1 13.9 15 14.2 ...

  5.   $ campactness : num  0.881 0.905 0.895 0.903 0.895 ...

  6.   $ length      : num  5.55 5.29 5.32 5.66 5.39 ...

  7.   $ width       : num  3.33 3.34 3.38 3.56 3.31 ...

  8.   $ asymmetry   : num  1.02 2.7 2.26 1.35 2.46 ...

  9.   $ groovelength: num  4.96 4.83 4.8 5.17 4.96 ...

建立回归模型

 



  1.  Residuals:

  2.       Min       1Q   Median       3Q      Max 

  3.  -0.66375 -0.10094  0.00175  0.11081  0.45132 


  4.  Coefficients:

  5.               Estimate Std. Error t value Pr(>|t|)    

  6.  (Intercept)  19.46173    2.45031   7.943 1.29e-13 ***

  7.  area          0.49724    0.08721   5.701 4.10e-08 ***

  8.  perimeter    -0.63162    0.18179  -3.474 0.000624 ***

  9.  campactness -14.05218    1.34325 -10.461  < 2e-16 ***

  10.  ---

  11.  Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


  12.  Residual standard error: 0.1608 on 205 degrees of freedom

  13.  Multiple R-squared:  0.895,  Adjusted R-squared:  0.8934 

  14.  F-statistic: 582.4 on 3 and 205 DF,  p-value: < 2.2e-16

从回归模型的结果来看,三个自变量对因变量都有显著的意义。其中,area有正向的影响。而其他两个变量是负向的影响。从r方的结果来看,达到了0.895,模型具有较好的解释度。         

 

 

建立贝叶斯回归模型

  1. Bayesian analysis


  2.  With bayesglm




  3.  Deviance Residuals: 

  4.       Min        1Q    Median        3Q       Max  

  5.  -0.66331  -0.09974  -0.00002   0.11110   0.44841  


  6.  Coefficients:

  7.               Estimate Std. Error t value Pr(>|t|)    

  8.  (Intercept)  18.90538    2.41549   7.827 2.63e-13 ***

  9.  area          0.47826    0.08604   5.559 8.40e-08 ***

  10.  perimeter    -0.59252    0.17937  -3.303  0.00113 ** 

  11.  campactness -13.74353    1.32463 -10.375  < 2e-16 ***

  12.  ---

  13.  Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


  14.  (Dispersion parameter for gaussian family taken to be 0.02584982)


  15.      Null deviance: 50.4491  on 208  degrees of freedom

  16.  Residual deviance:  5.2992  on 205  degrees of freedom

  17.  AIC: -164.91


  18.  Number of Fisher Scoring iterations: 6

 从内置贝叶斯模型的结果来看,3个变量同样是非常显著,因此模型的结果和回归模型类似。然后我们使用BUGS/JAGS软件包来建立贝叶斯模型
 

 

 

使用 BUGS/JAGS软件包来建立贝叶斯模型
 
 

建立贝叶斯模型

  1.  jags(model.file='bayes.bug',

  2.               parameters=c("area","perimeter","campactness","int"),

  3.               data = list('a' = seed$area, 'b' = seed$perimete

  4.               n.cha

查看模型结果:


 

  1. module glm loaded


  2.  Compiling model graph

  3.     Resolving undeclared variables

  4.     Allocating nodes

  5.  Graph information:

  6.     Observed stochastic nodes: 209

  7.     Unobserved stochastic nodes: 5

  8.     Total graph size: 1608




  9. Initializing model



  10. bb <- jags1$BUGSoutput   提取“ BUGS输出”

  11. mm <- as.mcmc.bugs(bb)   将其转换为coda可以处理的“ mcmc”对象

  12. plot(jags1)              绘制图像

 

【大数据部落】使用rjags <wbr>R2jags来建立贝叶斯模型

 

 

从上面的图中,我们可以看到自变量的中位数和置信区间。从置信区间来看,各个变量的取值和贝叶斯模型的结果类似。贝叶斯结果的值全部落入在了置信区间内。

然后绘制每次迭代中各个变量参数的轨迹图

trace + density #轨迹图

 

可以看到每个变量的参数都在一定区间内波动。同时可以看到误差在一定的迭代次数之后趋于收敛。

然后绘制每个变量参数的密度图 prettier density plot

 

 

【大数据部落】使用rjags <wbr>R2jags来建立贝叶斯模型

可以看到每个变量的参数的密度分布近似于正态分布。同时我们可以看到分布的均值和贝叶斯模型,得到的结果类似。

然后绘制每个变量参数的置信区间 estimate + credible interval plot

  

 

 

从结果来看,可以看到各个变量参数的置信区间,campatness和int的置信区间较大,而其他两个变量的置信区间较小。

从上面的实验结果对比,我们可以看到,三个自变量对因变量均有重要的影响。area,perimeter,campactness几个变量他们对groovelength这个变量均有重要的影响。同时我们可以认为回归模型的结果和贝叶斯模型的结果相似。然后我们使用rjags&R2jags软件包来对数据进行贝叶斯型的建立,从结果来看,同样和之前得到的模型结果相差不大。并且我们通过模型的迭代,可以得到每个参数的置信区间。

 

最受欢迎的见解

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模型实现请选中你要保存的内容,粘贴到此文本框


r语言使用rjags R2jags建立贝叶斯模型的评论 (共 条)

分享到微博请遵守国家法律