R語言coda貝葉斯MCMC Metropolis-Hastings采樣鏈分析和收斂診斷可視化|附代碼數(shù)據(jù)
原文鏈接:http://tecdat.cn/?p=27228?
原文出處:拓端數(shù)據(jù)部落公眾號
?最近我們被客戶要求撰寫關于MCMC Metropolis-Hastings采樣的研究報告,包括一些圖形和統(tǒng)計輸出。
作為先決條件,我們將使用幾行代碼,在代碼中,我們創(chuàng)建了一些測試數(shù)據(jù),其中因變量 y 線性依賴于自變量 x(預測變量);定義線性模型擬合數(shù)據(jù)的可能性和先驗;并實現(xiàn)一個簡單的 Metropolis-Hastings MCMC 從該模型的后驗分布中采樣。
x = (-(sleze-1)/2):((sple-1)/2)y =? treA * x + tuB + rnorm(n=sapeize,mean=0,sd=tuSd)
所以,讓我們運行 MCMC:
stavalue = c(4,2,8)cn = rmtrisMCC(avae, 10000)
由 coda 促成的鏈的一些簡單總結
好吧,coda 是一個 R 包,它提供了許多用于繪制和分析后驗樣本的標準函數(shù)。為了使這些功能起作用,您需要將輸出作為“mcmc”或“mcmc.list”類的對象,我們將在后面討論。
擁有一個 coda 對象的好處是我們通常想要用鏈做的很多事情都已經(jīng)實現(xiàn)了,所以例如我們可以簡單地 summary() 和 plot() 輸出
summary(chn)plot(cn)
它提供了一些關于控制臺的有用信息和一個大致如下所示的圖:

圖:?一個 coda 對象的 plot() 函數(shù)的結果
對 plot() 函數(shù)的結果:每一行對應一個參數(shù),因此每個參數(shù)有兩個圖。左邊的圖稱為軌跡圖——它顯示了參數(shù)在鏈運行時所取的值。右圖通常稱為邊際密度圖?;旧?,它是軌跡圖中值的(平滑的)直方圖,即參數(shù)值在鏈中的分布。
邊際密度隱藏了相關性
邊際密度是參數(shù)取值與所有其他“邊緣化”參數(shù)的平均值,即其他參數(shù)根據(jù)其后驗概率具有任何值。通常,邊際密度被視為貝葉斯分析的主要輸出(例如,通過報告它們的均值和標準差),但我強烈建議不要進一步分析這種做法。原因是邊際密度“隱藏”了參數(shù)之間的相關性,如果存在相關性,參數(shù)的不確定性在邊際中似乎要大得多。
Plot(data.frame(can))
在我們的例子中,應該沒有大的相關性,因為我以這種方式設置了示例
x = (-(samee-1)/2):((smeie-1)/2) + 20
再次運行 MCMC 并檢查相關性應該會給你一個完全不同的畫面。

圖:?不平衡 x 值擬合的邊際密度(對角線)、配對密度(下圖)和相關系數(shù)(上圖)
您可以看到第一個和第二個參數(shù)(斜率和截距)之間的強相關性,并且您還可以看到每個參數(shù) X2 的邊際不確定性增加了。
請注意,我們在這里只檢查了配對相關性,可能仍然有更高階的交互不會出現(xiàn)在這樣的分析中,所以你可能仍然遺漏了一些東西。
收斂診斷
現(xiàn)在,到收斂:一個 MCMC 從后驗分布創(chuàng)建一個樣本,我們通常想知道這個樣本是否足夠接近后驗以用于分析。有幾種標準方法可以檢查這一點,但我建議使用 Gelman-Rubin 診斷。
cha2 = runmeooi_MCMC(arvue, 10000)cominchns = mcmc.list(cai, ain2)plot(coinchns)
結果圖應該是這樣的


圖:?結果
diag 為您提供每個參數(shù)的比例縮減因子。因子 1 意味著方差和鏈內(nèi)方差相等,較大的值意味著鏈之間仍然存在顯著差異。
改善收斂/混合
那么,如果還沒有收斂怎么辦?當然,你總是可以讓 MCMC 運行更長時間,但另一個選擇是讓它收斂得更快??赡軙l(fā)生兩件事:
與我們從中抽樣的分布相比,您的提議函數(shù)很窄——接受率高,但我們沒有得到任何結果,混合不好
與我們從中抽樣的分布相比,您的提議函數(shù)太寬了——接受率低,大部分時間我們都呆在原地



最受歡迎的見解
1.使用R語言進行METROPLIS-IN-GIBBS采樣和MCMC運行
2.R語言中的Stan概率編程MCMC采樣的貝葉斯模型
3.R語言實現(xiàn)MCMC中的Metropolis–Hastings算法與吉布斯采樣
4.R語言BUGS JAGS貝葉斯分析 馬爾科夫鏈蒙特卡洛方法(MCMC)采樣
5.R語言中的block Gibbs吉布斯采樣貝葉斯多元線性回歸
6.R語言Gibbs抽樣的貝葉斯簡單線性回歸仿真分析
7.R語言用Rcpp加速Metropolis-Hastings抽樣估計貝葉斯邏輯回歸模型的參數(shù)
8.R語言使用Metropolis- Hasting抽樣算法進行邏輯回歸
9.R語言中基于混合數(shù)據(jù)抽樣(MIDAS)回歸的HAR-RV模型預測GDP增長