拓端tecdat:matlab用Logistic邏輯回歸建模和馬爾可夫鏈蒙特卡羅MCMC方法分析汽車實驗
原文鏈接:http://tecdat.cn/?p=24103
原文出處:拓端數(shù)據(jù)部落公眾號
此示例說明如何使用邏輯回歸模型進(jìn)行貝葉斯推斷。
統(tǒng)計推斷通?;谧畲笏迫还烙?(MLE)。MLE 選擇能夠使數(shù)據(jù)似然最大化的參數(shù),是一種較為自然的方法。在 MLE 中,假定參數(shù)是未知但固定的數(shù)值,并在一定的置信度下進(jìn)行計算。在貝葉斯統(tǒng)計中,使用概率來量化未知參數(shù)的不確定性,因而未知參數(shù)被視為隨機(jī)變量。
貝葉斯推斷
貝葉斯推斷是結(jié)合有關(guān)模型或模型參數(shù)的先驗知識來分析統(tǒng)計模型的過程。這種推斷的根基是貝葉斯定理:

例如,假設(shè)我們有正態(tài)觀測值

其中 sigma 是已知的,theta 的先驗分布為

在此公式中,mu 和 tau(有時也稱為超參數(shù))也是已知的。如果觀察?X
?的?n
?個樣本,我們可以獲得 theta 的后驗分布

下圖顯示 theta 的先驗、似然和后驗。
y = norpdf(thta, posMan,psSD);
plot(theta'-', theta,'--', theta,'-.')

汽車實驗數(shù)據(jù)
在一些簡單的問題中,例如前面的正態(tài)均值推斷示例,很容易計算出封閉形式的后驗分布。但是,在涉及非共軛先驗的一般問題中,后驗分布很難或不可能通過分析來進(jìn)行計算。我們將以邏輯回歸作為示例。此示例包含一個實驗,以幫助建模不同重量的汽車在里程測試中的未通過比例。數(shù)據(jù)包括被測汽車的重量、汽車數(shù)量以及失敗次數(shù)等觀測值。我們采用一組經(jīng)過變換的重量,以減少回歸參數(shù)估值的相關(guān)性。
% 一組汽車的重量
% 每個重量下測試的汽車數(shù)量
[48 42 31 34 31 21 23 23 21 16 17 21]';
% 在每個重量上有不良mpg表現(xiàn)的汽車數(shù)量
[1 2 0 3 8 8 14 17 19 15 17 21]';
邏輯回歸模型
邏輯回歸(廣義線性模型的一種特例)適合這些數(shù)據(jù),因為因變量呈二項分布。邏輯回歸模型可以寫作:

其中 X 是設(shè)計矩陣,b 是包含模型參數(shù)的向量。我們可以將此方程寫作:
@(b,x) exp(b(1)+b(2).*x)./(1+exp(b(1)+b(2).*x));
如果您有一些先驗知識或者已經(jīng)具備某些非信息性先驗,則可以指定模型參數(shù)的先驗概率分布。例如,在此示例中,我們使用正態(tài)先驗值表示截距?b1
?和斜率?b2
,即
@(b1) normpdf(b1,0,20); % 截距的先驗。
@(b2) normpdf(b2,0,20); % 斜率的先驗。
根據(jù)貝葉斯定理,模型參數(shù)的聯(lián)合后驗分布與似然和先驗的乘積成正比。
請注意,此模型中后驗的歸一化常數(shù)很難進(jìn)行分析。但是,即使不知道歸一化常數(shù),如果您知道模型參數(shù)的大致范圍,也可以可視化后驗分布。
msh(b2,b1,sipot)
view(-10,30)

此后驗沿參數(shù)空間的對角線伸長,表明(在我們觀察數(shù)據(jù)后)我們認(rèn)為參數(shù)是相關(guān)的。這很有意思,因為在我們收集任何數(shù)據(jù)之前,我們假設(shè)它們是獨立的。相關(guān)性來自我們的先驗分布與似然函數(shù)的組合。
切片采樣
蒙特卡羅方法常用于在貝葉斯數(shù)據(jù)分析中匯總后驗分布。其想法是,即使您不能通過分析的方式計算后驗分布,也可以從分布中生成隨機(jī)樣本,并使用這些隨機(jī)值來估計后驗分布或推斷的統(tǒng)計量,如后驗均值、中位數(shù)、標(biāo)準(zhǔn)差等。切片采樣是一種算法,用于從具有任意密度函數(shù)的分布中進(jìn)行抽樣,已知項最多只有一個比例常數(shù) - 而這正是從歸一化常數(shù)未知的復(fù)雜后驗分布中抽樣所需要的。此算法不生成獨立樣本,而是生成馬爾可夫序列,其平穩(wěn)分布就是目標(biāo)分布。因此,切片抽樣器是一種馬爾可夫鏈蒙特卡羅 (MCMC) 算法。但是,它與其他眾所周知的 MCMC 算法不同,因為只需要指定縮放的后驗,不需要建議分布或邊緣分布。
此示例說明如何使用切片抽樣器作為里程測試邏輯回歸模型的貝葉斯分析的一部分,包括從模型參數(shù)的后驗分布生成隨機(jī)樣本、分析抽樣器的輸出,以及對模型參數(shù)進(jìn)行推斷。第一步是生成隨機(jī)樣本。
sliesmle(inial,nsapes,'pdf');
采樣器輸出分析
從切片采樣獲取隨機(jī)樣本后,很重要的一點是研究諸如收斂和混合之類的問題,以確定將樣本視為是來自目標(biāo)后驗分布的一組隨機(jī)實現(xiàn)是否合理。觀察邊緣軌跡圖是檢查輸出的最簡單方法。
plot(trace(:,1))

從這些圖中可以明顯看出,在處理過程趨于平穩(wěn)之前,參數(shù)起始值的影響會維持一段時間(大約 50 個樣本)才會消失。
檢查收斂以使用移動窗口計算統(tǒng)計量(例如樣本的均值、中位數(shù)或標(biāo)準(zhǔn)差)也很有幫助。這樣可以產(chǎn)生比原始樣本軌跡更平滑的圖,并且更容易識別和理解任何非平穩(wěn)性。
mvag = fier( (1/50)*os(50,1), 1, tace);
plot(moav(:,1))

由于這些是基于包含 50 次迭代的窗口計算的移動平均值,因此前 50 個值無法與圖中的其他值進(jìn)行比較。然而,每個圖的其他值似乎證實參數(shù)后驗均值在 100 次左右迭代后收斂至平穩(wěn)分布。同樣顯而易見的是,這兩個參數(shù)彼此相關(guān),與之前的后驗密度圖一致。
由于磨合期代表目標(biāo)分布中不能合理視為隨機(jī)實現(xiàn)的樣本,因此不建議使用切片采樣器一開始輸出的前 50 個左右的值。您可以簡單地刪除這些輸出行,但也可以指定一個“預(yù)熱”期。在已知合適的預(yù)熱長度(可能來自先前的運行)時,這種方式很簡便。
slcsapl(inial,nsmes,'pf',pot, ..'brin',50);
plot(trace(:,1))

這些跟蹤圖沒有顯示出任何不平穩(wěn),表明預(yù)熱期已完成。
但是,還需要了解跟蹤圖的另一方面。雖然截距的軌跡看起來像高頻噪聲,但斜率的軌跡好像具有低頻分量,表明相鄰迭代的值之間存在自相關(guān)。雖然也可以從這個自相關(guān)樣本計算均值,但我們通常會通過刪除樣本中的冗余數(shù)據(jù)這一簡便的操作來降低存儲要求。如果它同時消除了自相關(guān),我們還可以將這些數(shù)據(jù)視為獨立值樣本。例如,您可以通過只保留第 10 個、第 20 個、第 30 個等值來稀釋樣本。
sceampe(...
'brin'50,'tin',10);
要檢查這種稀釋的效果,可以根據(jù)軌跡估計樣本自相關(guān)函數(shù),并使用它們來檢查樣本是否快速混合。
fftetendtrce,'cnsant');
F .* coj(F);
for i = 1:2
lineles = ?stem(:20, F(:i) ?'filled' , 'o');

第一個滯后的自相關(guān)值對于截距參數(shù)很明顯,對于斜率參數(shù)更是如此。我們可以使用更大的稀釋參數(shù)重復(fù)抽樣,以進(jìn)一步降低相關(guān)性。但為了完成本示例的目的,我們將繼續(xù)使用當(dāng)前樣本。
推斷模型參數(shù)
與預(yù)期相符,樣本直方圖模擬了后驗密度圖。
hist(rce,[25,25]);
view(-10,30)

您可以使用直方圖或核平滑密度估計值來總結(jié)后驗樣本的邊緣分布屬性。
kdeiy(rae(:2))

您還可以計算描述性統(tǒng)計量,例如隨機(jī)樣本的后驗均值或百分位數(shù)。為了確定樣本大小是否足以實現(xiàn)所需的精度,將所需的軌跡統(tǒng)計量作為樣本數(shù)的函數(shù)來進(jìn)行查看會很有幫助。
csu= csm(rae);
plot(csm(:,1)'./(1:sals))

在這種情況下,樣本大小 1000 似乎足以為后驗均值估計值提供良好的精度。
mean(te)

總結(jié)
您能夠輕松地指定似然和先驗。您也可以將它們結(jié)合起來用于推斷后驗分布。您可以通過馬爾可夫鏈蒙特卡羅仿真在 MATLAB 中執(zhí)行貝葉斯分析。

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