最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Python用PyMC貝葉斯GLM廣義線性模型、NUTS采樣器擬合、后驗分布可視化

2023-08-15 21:36 作者:拓端tecdat  | 我要投稿

全文鏈接:https://tecdat.cn/?p=33436

原文出處:拓端數(shù)據(jù)部落公眾號

盡管貝葉斯方法相對于頻率主義方法的理論優(yōu)勢已經(jīng)在其他地方進行了詳細討論,但其更廣泛采用的主要障礙是“可用性”。而使用貝葉斯方法,客戶可以按照自己認為合適的方式定義模型。

線性回歸

在此示例中,我們將幫助客戶從最簡單的 GLM – 線性回歸開始。 一般來說,頻率論者對線性回歸的看法如下:

然后,我們可以使用普通最小二乘法(OLS)或最大似然法來找到最佳擬合。

概率重構

貝葉斯主義者對世界采取概率觀,并用概率分布來表達這個模型。我們上面的線性回歸可以重新表述為:

換句話說,我們將Y其視為一個隨機變量(或隨機向量),其中每個元素(數(shù)據(jù)點)都根據(jù)正態(tài)分布分布。此正態(tài)分布的均值由具有方差sigma的線性預測變量提供。

PyMC 中的貝葉斯 GLM

要開始在 PyMC 中構建 GLM,讓我們首先導入所需的模塊。

print(f"Running on PyMC v{pm.__version__}")

az.style.use("arviz-darkgrid")

數(shù)據(jù)

本質上,我們正在創(chuàng)建一條由截距和斜率定義的回歸線,并通過從均值設置為回歸線的正態(tài)采樣來添加數(shù)據(jù)點。

y = true_regression_line + rng.normal(scale=0.5, size=size)data = pd.DataFrame(dict(x=x, y=y))

plt.legend(loc=0);

估計模型

讓我們將貝葉斯線性回歸模型擬合到此數(shù)據(jù)。

? ?# 定義似然函數(shù) ? ?likelihood = Normal("y", mu=intercept + slope * x, sigma=sigma, observed=y) ? ?# 使用NUTS采樣推斷 ? ?idata = sample(3000)

對于了解概率編程的人來說,這應該是相當可讀的。

? ?import bambi as bmb

idata = model.fit(draws=3000)

要短得多,但這段代碼與之前的規(guī)范完全相同(如果我們愿意,您也可以更改先驗和其他所有內容)。

分析模型

貝葉斯推理不僅給了我們一條最佳擬合線(就像最大似然那樣),而是給出了合理參數(shù)的整個后驗分布。讓我們繪制參數(shù)的后驗分布和我們繪制的單個樣本。

az.plot_trace(idata, figsize=(10, 7));

左側顯示了我們的邊緣后驗 – 對于 x 軸上的每個參數(shù)值,我們在 y 軸上得到一個概率,告訴我們該參數(shù)值的可能性。

首先,各個參數(shù)(左側)的采樣鏈看起來均勻且平穩(wěn)(沒有大的漂移或其他奇怪的模式)。

其次,每個變量的最大后驗估計值(左側分布中的峰值)非常接近用于生成數(shù)據(jù)的真實參數(shù)(x是回歸系數(shù),sigma是我們正態(tài)的標準差)。

因此,在 GLM 中,我們不僅有一條最佳擬合回歸線,而且有許多。后驗預測圖從后驗圖(截距和斜率)中獲取多個樣本,并為每個樣本繪制一條回歸線。我們可以直接使用后驗樣本手動生成這些回歸線。

idata.posterior["y_model"] = idata.posterior["Intercept"] + idata.posterior["x"] * xr.DataArray(x)

_, ax = plt.subplots(figsize=(7, 7))az.plot_lm(idata=idata, y="y", num_samples=100, axes=ax, y_model="y_model")ax.set_title("Posterior predictive regression lines")ax.set_xlabel("x");

我們估計的回歸線與真正的回歸線非常相似。但是由于我們只有有限的數(shù)據(jù),我們的估計存在不確定性,這里用線的可變性來表示。

總結

  • 可用性目前是更廣泛采用貝葉斯統(tǒng)計的巨大障礙。

  • Bambi允許使用從 R 借用的便捷語法進行 GLM 規(guī)范。然后可以使用pymc?進行推理。

  • 后驗預測圖使我們能夠評估擬合度和其中的不確定性。

延伸閱讀

有關其他背景信息,以下是一些關于貝葉斯統(tǒng)計的好資源:

  • 約翰·克魯施克(John Kruschke)的優(yōu)秀著作《做貝葉斯數(shù)據(jù)分析》。

版本信息:

%load_ext watermark%watermark -n -u -v -iv -w -p pytensor

Python implementation: CPythonPython version ? ? ? : 3.11.4IPython version ? ? ?: 8.14.0pytensor: 2.14.2pymc ? ? ?: 5.7.2+0.gd59a960f.dirtybambi ? ? : 0.12.0arviz ? ? : 0.16.1xarray ? ?: 2023.7.0matplotlib: 3.7.2numpy ? ? : 1.25.2sys ? ? ? : 3.11.4 | packaged by conda-forge | (main, Jun 10 2023, 18:08:17) [GCC 12.2.0]pandas ? ?: 2.0.3Watermark: 2.4.3

最受歡迎的見解

1.matlab使用貝葉斯優(yōu)化的深度學習

2.matlab貝葉斯隱馬爾可夫hmm模型實現(xiàn)

3.R語言Gibbs抽樣的貝葉斯簡單線性回歸仿真

4.R語言中的block Gibbs吉布斯采樣貝葉斯多元線性回歸

5.R語言中的Stan概率編程MCMC采樣的貝葉斯模型

6.R語言貝葉斯Poisson泊松-正態(tài)分布模型分析職業(yè)足球比賽進球數(shù)

7.R語言使用貝葉斯 層次模型進行空間數(shù)據(jù)分析

8.R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型

9.matlab貝葉斯隱馬爾可夫hmm模型實現(xiàn)


Python用PyMC貝葉斯GLM廣義線性模型、NUTS采樣器擬合、后驗分布可視化的評論 (共 條)

分享到微博請遵守國家法律
崇州市| 泌阳县| 三台县| 德清县| 邢台市| 富裕县| 澄城县| 嵊泗县| 和硕县| 邵武市| 合作市| 吉林省| 庆城县| 土默特右旗| 云安县| 兰考县| 石家庄市| 咸阳市| 商城县| 昌平区| 松潘县| 阿图什市| 伊金霍洛旗| 吴川市| 沙河市| 康保县| 霍山县| 中山市| 洛川县| 迭部县| 灵川县| 华蓥市| 天水市| 彩票| 凌源市| 安岳县| 乐东| 睢宁县| 永城市| 兴和县| 密云县|