R語言馬爾可夫MCMC中的Metropolis Hastings,MH算法抽樣(采樣)法可視化實例
原文鏈接:http://tecdat.cn/?p=26324?
原文出處:拓端數(shù)據(jù)部落公眾號
?
介紹
Metropolis Hastings 算法是一種非常簡單的算法,用于從難以采樣的分布中生成樣本。
假設我們要從分布 π 中進行采樣,我們將其稱為“目標”分布。為簡單起見,我們假設 π是實線上的一維分布,盡管它很容易擴展到一維以上(見下文)。
MH 算法通過模擬馬爾可夫鏈來工作,其平穩(wěn)分布為 π。這意味著,從長遠來看,來自馬爾可夫鏈的樣本看起來像來自 π的樣本。正如我們將看到的,該算法非常簡單和靈活。
MH算法
轉(zhuǎn)移核
要實現(xiàn) MH 算法,用戶必須提供一個“轉(zhuǎn)移核”QQ。轉(zhuǎn)移核只是一種在?給定當前位置(例如 xx)的情況下隨機移動到空間中新位置(例如 y)的方式。也就是說,Q 是給定 x?在 y?上的分布,我們將其寫成 Q(y|x)。在許多應用中,Q將是一個連續(xù)分布,在這種情況下 Q(y|x) 將是 y 上的密度,因此∫Q(y|x)dy=1(對于所有 x)。
例如,從當前位置 x?生成新位置 y?的一種非常簡單的方法是向 x添加一個 N(0,1) 隨機數(shù)。即設置y=x+N(0,1),或者轉(zhuǎn)移y|x~N(x,1)。所以

這種在當前位置x加上一些隨機數(shù)得到y(tǒng)的核,在實際中經(jīng)常使用,被稱為“隨機游走”核。
MH算法
使用轉(zhuǎn)移核 Q?從目標分布 π?中采樣的 MH 算法包括以下步驟:
初始化,x1=x1 。
對于 t=1,2,…
從 Q(y|xt)中采樣 y。將 y?視為 xt+1 的“建議”值。
計算

AA通常被稱為“接受概率”。
以概率 A“接受”提議的值,并設置 xt+1=y。否則設置 xt+1=xt。
Metropolis 算法
請注意,上面給出的示例隨機游走建議 Q 對于所有 x,y 滿足 Q(y|x)=Q(x|y) 任何滿足這一點的建議都稱為“對稱”。當 Q?是對稱時,MH 算法中 A 的公式?簡化為:
?

該算法的這種特殊情況,具有?Q 對稱,首先由 Metropolis 等人在 1953 年提出,因此它有時被稱為“Metropolis 算法”。
示例
為了幫助理解 MH 算法,我們現(xiàn)在做一個簡單的例子:我們實現(xiàn)算法以從指數(shù)分布中采樣:

當然,以其他方式從指數(shù)分布中采樣會容易得多;我們只是用它來說明算法。
請記住,π 被稱為“目標”分布,因此我們調(diào)用函數(shù)來計算 π??:
現(xiàn)在我們實現(xiàn) MH 算法,使用上面提到的簡單正態(tài)隨機游走轉(zhuǎn)移核 Q。
這是代碼:
運行此代碼后,我們可以繪制馬爾可夫鏈 x?訪問的位置(有時稱為軌跡圖)。

請記住,我們設計此算法是為了從指數(shù)分布中采樣。這意味著(只要我們運行算法足夠長的時間?。﹛?的直方圖應該看起來像一個指數(shù)分布。在這里我們檢查一下:

x?中的值的直方圖確實提供了與指數(shù)分布的緊密擬合。
結束語
MH 算法的一個特別有用的特性是,即使 只知道π 是一個常數(shù),它也可以實現(xiàn):也就是說,對于一些已知的 f,π(x)=cf(x) , 但未知常數(shù) c。這是因為該算法僅通過比率

依賴于π 。
這個問題出現(xiàn)在貝葉斯應用中,其中后驗分布與先驗概率成正比,但比例常數(shù)通常是未知的。因此,MH 算法對于從后驗分布進行采樣以執(zhí)行難以解析的貝葉斯計算特別有用。

最受歡迎的見解
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增長