Python代寫 實現貝葉斯線性回歸模型


原文鏈接:http://tecdat.cn/?p=5263

 

在本文中,我們將在貝葉斯框架中引入回歸建模,並使用PyMC3 MCMC庫進行推理。

我們將首先回顧經典或頻率論者的多重線性回歸方法。然后我們將討論貝葉斯如何考慮線性回歸。

用PyMC3進行貝葉斯線性回歸

在本節中,我們將對統計實例進行一種歷史悠久的方法,即模擬一些我們知道的屬性的數據,然后擬合一個模型來恢復這些原始屬性。

什么是廣義線性模型?

在我們開始討論貝葉斯線性回歸之前,我想簡要地概述廣義線性模型(GLM)的概念,因為我們將使用它們來在PyMC3中制定我們的模型。

廣義線性模型是將普通線性回歸擴展到更一般形式的回歸的靈活機制,包括邏輯回歸(分類)和泊松回歸(用於計數數據)以及線性回歸本身。

GLM允許具有除正態分布以外的誤差分布的響應變量(參見頻率分區中的上述)。

用PyMC3模擬數據並擬合模型

在我們使用PyMC3來指定和采樣貝葉斯模型之前,我們需要模擬一些噪聲線性數據。

輸出如下圖所示:

通過Numpy,pandas和seaborn模擬噪聲線性數據

現在我們已經進行了模擬,我們想要對數據擬合貝葉斯線性回歸。這是glm模塊進來的地方。它使用與R指定模型類似的模型規范語法。

然后我們將找到MCMC采樣器的最大后驗概率(MAP)估計值。最后,我們將使用No-U-Turn Sampler(NUTS)來進行實際推理,然后繪制模型的曲線,將前500個樣本丟棄為“burn in”

traceplot如下圖所示:

使用PyMC3將貝葉斯GLM線性回歸模型擬合到模擬數據

我們可以使用glm庫調用的方法繪制這些線plot_posterior_predictive。該方法采用trace對象和plot(samples)的行數。

首先我們使用seaborn lmplot方法,這次fit_reg參數設置False為停止繪制頻數回歸曲線。然后我們繪制100個采樣的后驗預測回歸線。最后,我們繪制使用原始的“真實”回歸線和β1=2的參數。下面的代碼片段產生了這樣的情節:β0=1β0=1β1=2β1=2

我們可以在下圖中看到回歸線的抽樣范圍:

 

如果您有任何疑問,請在下面發表評論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM