
本文是通过对area,perimeter,campactness几个变量的贝叶斯建模,来查看他们对groovelength这个变量的影响。
并且对比rjags R2jags和内置贝叶斯预测函数的结果。
rjags
rjags 和 R2jags 都是 R 语言中用于实现贝叶斯分析的重要扩展包,它们和 JAGS(Just Another Gibbs Sampler)软件紧密相连,下面为你详细介绍:
rjags 是一个能让 R 语言和 JAGS 软件进行交互的 R 包。JAGS 是一款借助马尔可夫链蒙特卡罗(MCMC)方法来拟合贝叶斯模型的软件
rjags 包的存在使得在 R 环境里就能方便地使用 JAGS 的功能。
主要功能
- 模型定义:可以在 R 中用文本格式定义 JAGS 模型。
 - 数据传递:能够把 R 里的数据传递给 JAGS 模型。
 - 运行 MCMC:在 R 中开启 JAGS 的 MCMC 采样过程。
 - 结果获取:从 JAGS 那里获取采样结果并在 R 中进行分析。
 
读取数据
 
seed=read.csv("seeds_dataset.csv")
seed=seed[,1:7]
 
查看数据的结构
 str(seed)
 'data.frame':    209 obs. of  7 variables:
  $ area        : num  14.9 14.3 13.8 16.1 14.4 ...
  $ perimeter   : num  14.6 14.1 13.9 15 14.2 ...
  $ campactness : num  0.881 0.905 0.895 0.903 0.895 ...
  $ length      : num  5.55 5.29 5.32 5.66 5.39 ...
  $ width       : num  3.33 3.34 3.38 3.56 3.31 ...
  $ asymmetry   : num  1.02 2.7 2.26 1.35 2.46 ...
  $ groovelength: num  4.96 4.83 4.8 5.17 4.96 ...
建立回归模型
 
 
 Residuals:
      Min       1Q   Median       3Q      Max 
 -0.66375 -0.10094  0.00175  0.11081  0.45132 
 
 Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
 (Intercept)  19.46173    2.45031   7.943 1.29e-13 ***
 area          0.49724    0.08721   5.701 4.10e-08 ***
 perimeter    -0.63162    0.18179  -3.474 0.000624 ***
 campactness -14.05218    1.34325 -10.461  < 2e-16 ***
 ---
 Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
 
 Residual standard error: 0.1608 on 205 degrees of freedom
 Multiple R-squared:  0.895,  Adjusted R-squared:  0.8934 
 F-statistic: 582.4 on 3 and 205 DF,  p-value: < 2.2e-16
从回归模型的结果来看,三个自变量对因变量都有显著的意义。其中,area有正向的影响。而其他两个变量是负向的影响。从r方的结果来看,达到了0.895,模型具有较好的解释度。
建立贝叶斯回归模型
Bayesian analysis
 
 With bayesglm
 
 
 
 Deviance Residuals: 
      Min        1Q    Median        3Q       Max  
 -0.66331  -0.09974  -0.00002   0.11110   0.44841  
 
 Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
 (Intercept)  18.90538    2.41549   7.827 2.63e-13 ***
 area          0.47826    0.08604   5.559 8.40e-08 ***
 perimeter    -0.59252    0.17937  -3.303  0.00113 ** 
 campactness -13.74353    1.32463 -10.375  < 2e-16 ***
 ---
 Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
 
 (Dispersion parameter for gaussian family taken to be 0.02584982)
 
     Null deviance: 50.4491  on 208  degrees of freedom
 Residual deviance:  5.2992  on 205  degrees of freedom
 AIC: -164.91
 
 Number of Fisher Scoring iterations: 6
从内置贝叶斯模型的结果来看,3个变量同样是非常显著,因此模型的结果和回归模型类似。然后我们使用BUGS/JAGS软件包来建立贝叶斯模型
使用 BUGS/JAGS软件包来建立贝叶斯模型
 
 
建立贝叶斯模型
 jags(model.file='bayes.bug',
              parameters=c("area","perimeter","campactness","int"),
              data = list('a' = seed$area, 'b' = seed$perimete
              n.cha
查看模型结果:
module glm loaded
 
 Compiling model graph
    Resolving undeclared variables
    Allocating nodes
 Graph information:
    Observed stochastic nodes: 209
    Unobserved stochastic nodes: 5
    Total graph size: 1608
 
 
 
Initializing model
 
 
bb <- jags1$BUGSoutput   提取“ BUGS输出” 
mm <- as.mcmc.bugs(bb)   将其转换为coda可以处理的“ mcmc”对象
plot(jags1)              绘制图像
从上面的图中,我们可以看到自变量的中位数和置信区间。从置信区间来看,各个变量的取值和贝叶斯模型的结果类似。贝叶斯结果的值全部落入在了置信区间内。
然后绘制每次迭代中各个变量参数的轨迹图
trace + density #轨迹图
可以看到每个变量的参数都在一定区间内波动。同时可以看到误差在一定的迭代次数之后趋于收敛。
然后绘制每个变量参数的密度图 prettier density plot
随时关注您喜欢的主题
可以看到每个变量的参数的密度分布近似于正态分布。同时我们可以看到分布的均值和贝叶斯模型,得到的结果类似。
然后绘制每个变量参数的置信区间 estimate + credible interval plot
从结果来看,可以看到各个变量参数的置信区间,campatness和int的置信区间较大,而其他两个变量的置信区间较小。

想了解更多关于模型定制、咨询辅导的信息?
从上面的实验结果对比,我们可以看到,三个自变量对因变量均有重要的影响。area,perimeter,campactness几个变量他们对groovelength这个变量均有重要的影响。同时我们可以认为回归模型的结果和贝叶斯模型的结果相似。然后我们使用rjags&R2jags软件包来对数据进行贝叶斯型的建立,从结果来看,同样和之前得到的模型结果相差不大。并且我们通过模型的迭代,可以得到每个参数的置信区间。
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!



专题:Python实现贝叶斯线性回归与MCMC采样数据可视化分析2实例|附代码数据
【视频讲解】R语言海七鳃鳗性别比分析:JAGS贝叶斯分层逻辑回归MCMC采样模型应用
Python电影票房预测模型研究——贝叶斯岭回归Ridge、决策树、Adaboost、KNN分析猫眼豆瓣数据
视频讲解|核密度估计朴素贝叶斯:业务数据分类—从理论到实践
                        
                        
                    

