r語言使用rjags R2jags建立貝葉斯模型|附代碼數(shù)據(jù)
全文下載鏈接:http://tecdat.cn/?p=2857
最近我們被客戶要求撰寫關(guān)于貝葉斯的研究報告,包括一些圖形和統(tǒng)計輸出。
本文是通過對area,perimeter,campactness幾個變量的貝葉斯建模,來查看他們對groovelength這個變量的影響,并且對比rjags R2jags和內(nèi)置貝葉斯預(yù)測函數(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有正向的影響。而其他兩個變量是負(fù)向的影響。從r方的結(jié)果來看,達(dá)到了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ù)之后趨于收斂。
點擊標(biāo)題查閱往期內(nèi)容

R語言和STAN,JAGS:用RSTAN,RJAG建立貝葉斯多元線性回歸預(yù)測選舉數(shù)據(jù)

左右滑動查看更多

01

02

03

04

然后繪制每個變量參數(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這個變量均有重要的影響。同時我們可以認(rèn)為回歸模型的結(jié)果和貝葉斯模型的結(jié)果相似。然后我們使用rjags&R2jags軟件包來對數(shù)據(jù)進(jìn)行貝葉斯型的建立,從結(jié)果來看,同樣和之前得到的模型結(jié)果相差不大。并且我們通過模型的迭代,可以得到每個參數(shù)的置信區(qū)間。

點擊文末?“閱讀原文”
獲取全文完整資料。
本文選自《r語言使用rjags R2jags建立貝葉斯模型》。
點擊標(biāo)題查閱往期內(nèi)容
使用貝葉斯層次模型進(jìn)行空間數(shù)據(jù)分析
R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測心臟病PYTHON銀行機(jī)器學(xué)習(xí):回歸、隨機(jī)森林、KNN近鄰、決策樹、高斯樸素貝葉斯、支持向量機(jī)SVM分析營銷活動數(shù)據(jù)|數(shù)據(jù)分享
PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機(jī)森林、決策樹、支持向量機(jī)、樸素貝葉斯和KMEANS聚類用戶畫像
MATLAB隨機(jī)森林優(yōu)化貝葉斯預(yù)測分析汽車燃油經(jīng)濟(jì)性
R語言中貝葉斯網(wǎng)絡(luò)(BN)、動態(tài)貝葉斯網(wǎng)絡(luò)、線性模型分析錯頜畸形數(shù)據(jù)
使用貝葉斯層次模型進(jìn)行空間數(shù)據(jù)分析MCMC的rstan貝葉斯回歸模型和標(biāo)準(zhǔn)線性回歸模型比較
python貝葉斯隨機(jī)過程:馬爾可夫鏈Markov-Chain,MC和Metropolis-Hastings,MH采樣算法可視化
Python貝葉斯推斷Metropolis-Hastings(M-H)MCMC采樣算法的實現(xiàn)
matlab貝葉斯隱馬爾可夫hmm模型實現(xiàn)
貝葉斯線性回歸和多元線性回歸構(gòu)建工資預(yù)測模型
Metropolis Hastings采樣和貝葉斯泊松回歸Poisson模型
貝葉斯分位數(shù)回歸、lasso和自適應(yīng)lasso貝葉斯分位數(shù)回歸分析免疫球蛋白、前列腺癌數(shù)據(jù)
R語言RSTAN MCMC:NUTS采樣算法用LASSO 構(gòu)建貝葉斯線性回歸模型分析職業(yè)聲望數(shù)據(jù)
R語言STAN貝葉斯線性回歸模型分析氣候變化影響北半球海冰范圍和可視化檢查模型收斂性
PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機(jī)森林、決策樹、支持向量機(jī)、樸素貝葉斯和KMEANS聚類用戶畫像
貝葉斯分位數(shù)回歸、lasso和自適應(yīng)lasso貝葉斯分位數(shù)回歸分析免疫球蛋白、前列腺癌數(shù)據(jù)R語言JAGS貝葉斯回歸模型分析博士生延期畢業(yè)完成論文時間
R語言Metropolis Hastings采樣和貝葉斯泊松回歸Poisson模型
Python決策樹、隨機(jī)森林、樸素貝葉斯、KNN(K-最近鄰居)分類分析銀行拉新活動挖掘潛在貸款客戶
R語言貝葉斯MCMC:用rstan建立線性回歸模型分析汽車數(shù)據(jù)和可視化診斷
R語言貝葉斯MCMC:GLM邏輯回歸、Rstan線性回歸、Metropolis Hastings與Gibbs采樣算法實例
R語言貝葉斯Poisson泊松-正態(tài)分布模型分析職業(yè)足球比賽進(jìn)球數(shù)
隨機(jī)森林優(yōu)化貝葉斯預(yù)測分析汽車燃油經(jīng)濟(jì)性
R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測心臟病
R語言用Rcpp加速Metropolis-Hastings抽樣估計貝葉斯邏輯回歸模型的參數(shù)
R語言中的block Gibbs吉布斯采樣貝葉斯多元線性回歸
Python貝葉斯回歸分析住房負(fù)擔(dān)能力數(shù)據(jù)集
R語言實現(xiàn)貝葉斯分位數(shù)回歸、lasso和自適應(yīng)lasso貝葉斯分位數(shù)回歸分析
Python用PyMC3實現(xiàn)貝葉斯線性回歸模型
R語言用WinBUGS 軟件對學(xué)術(shù)能力測驗建立層次(分層)貝葉斯模型
R語言Gibbs抽樣的貝葉斯簡單線性回歸仿真分析
R語言和STAN,JAGS:用RSTAN,RJAG建立貝葉斯多元線性回歸預(yù)測選舉數(shù)據(jù)
R語言基于copula的貝葉斯分層混合模型的診斷準(zhǔn)確性研究
R語言貝葉斯線性回歸和多元線性回歸構(gòu)建工資預(yù)測模型
R語言貝葉斯推斷與MCMC:實現(xiàn)Metropolis-Hastings 采樣算法示例
R語言stan進(jìn)行基于貝葉斯推斷的回歸模型
R語言中RStan貝葉斯層次模型分析示例
R語言使用Metropolis-Hastings采樣算法自適應(yīng)貝葉斯估計與可視化
R語言隨機(jī)搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型
WinBUGS對多元隨機(jī)波動率模型:貝葉斯估計與模型比較
R語言實現(xiàn)MCMC中的Metropolis–Hastings算法與吉布斯采樣
R語言貝葉斯推斷與MCMC:實現(xiàn)Metropolis-Hastings 采樣算法示例
R語言使用Metropolis-Hastings采樣算法自適應(yīng)貝葉斯估計與可視化
視頻:R語言中的Stan概率編程MCMC采樣的貝葉斯模型
R語言MCMC:Metropolis-Hastings采樣用于回歸的貝葉斯估計