r語言使用rjags R2jags建立貝葉斯模型
原文鏈接:http://tecdat.cn/?p=2857
?
本文是通過對area,perimeter,campactness幾個變量的貝葉斯建模,來查看他們對groovelength這個變量的影響.
并且對比rjags?R2jags和內(nèi)置貝葉斯預測函數(shù)的結(jié)果。
?
讀取數(shù)據(jù)
? ?
seed=read.csv("seeds_dataset.csv")
seed=seed[,1:7]
?
?查看數(shù)據(jù)的結(jié)構(gòu)
?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
從回歸模型的結(jié)果來看,三個自變量對因變量都有顯著的意義。其中,area有正向的影響。而其他兩個變量是負向的影響。從r方的結(jié)果來看,達到了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
?從內(nèi)置貝葉斯模型的結(jié)果來看,3個變量同樣是非常顯著,因此模型的結(jié)果和回歸模型類似。然后我們使用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
查看模型結(jié)果:
?
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)???將其轉(zhuǎn)換為coda可以處理的“ mcmc”對象
plot(jags1)????????????? 繪制圖像
?

?
?
從上面的圖中,我們可以看到自變量的中位數(shù)和置信區(qū)間。從置信區(qū)間來看,各個變量的取值和貝葉斯模型的結(jié)果類似。貝葉斯結(jié)果的值全部落入在了置信區(qū)間內(nèi)。
然后繪制每次迭代中各個變量參數(shù)的軌跡圖
trace + density #軌跡圖
?

可以看到每個變量的參數(shù)都在一定區(qū)間內(nèi)波動。同時可以看到誤差在一定的迭代次數(shù)之后趨于收斂。
然后繪制每個變量參數(shù)的密度圖?prettier density plot
?
?

可以看到每個變量的參數(shù)的密度分布近似于正態(tài)分布。同時我們可以看到分布的均值和貝葉斯模型,得到的結(jié)果類似。
然后繪制每個變量參數(shù)的置信區(qū)間 estimate + credible interval plot
??
?

?
從結(jié)果來看,可以看到各個變量參數(shù)的置信區(qū)間,campatness和int的置信區(qū)間較大,而其他兩個變量的置信區(qū)間較小。
從上面的實驗結(jié)果對比,我們可以看到,三個自變量對因變量均有重要的影響。area,perimeter,campactness幾個變量他們對groovelength這個變量均有重要的影響。同時我們可以認為回歸模型的結(jié)果和貝葉斯模型的結(jié)果相似。然后我們使用rjags&R2jags軟件包來對數(shù)據(jù)進行貝葉斯型的建立,從結(jié)果來看,同樣和之前得到的模型結(jié)果相差不大。并且我們通過模型的迭代,可以得到每個參數(shù)的置信區(qū)間。

?
最受歡迎的見解
1.matlab使用貝葉斯優(yōu)化的深度學習
2.matlab貝葉斯隱馬爾可夫hmm模型實現(xiàn)
3.R語言Gibbs抽樣的貝葉斯簡單線性回歸仿真
4.R語言中的block Gibbs吉布斯采樣貝葉斯多元線性回歸
5.R語言中的Stan概率編程MCMC采樣的貝葉斯模型
6.Python用PyMC3實現(xiàn)貝葉斯線性回歸模型
7.R語言使用貝葉斯 層次模型進行空間數(shù)據(jù)分析
8.R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型
9.matlab貝葉斯隱馬爾可夫hmm模型實現(xiàn)請選中你要保存的內(nèi)容,粘貼到此文本框