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

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

R語言貝葉斯MCMC:用rstan建立線性回歸模型分析汽車數(shù)據(jù)和可視化診斷|附代碼數(shù)據(jù)

2023-02-14 23:11 作者:拓端tecdat  | 我要投稿

全文鏈接?http://tecdat.cn/?p=23255

最近我們被客戶要求撰寫關于rstan的研究報告,包括一些圖形和統(tǒng)計輸出。

本文將談論Stan以及如何在R中使用rstan創(chuàng)建Stan模型

盡管Stan提供了使用其編程語言的文檔和帶有例子的用戶指南,但對于初學者來說,這可能是很難理解的。

Stan

Stan是一種用于指定統(tǒng)計模型的編程語言。它最常被用作貝葉斯分析的MCMC采樣器。馬爾科夫鏈蒙特卡洛(MCMC)是一種抽樣方法,允許你在不知道分布的所有數(shù)學屬性的情況下估計一個概率分布。它在貝葉斯推斷中特別有用,因為后驗分布往往不能寫成表達式。要使用Stan,用戶要寫一個Stan程序,代表他們的統(tǒng)計模型。這個程序指定了模型中的參數(shù)和目標后驗密度。Stan代碼被編譯并與數(shù)據(jù)一起運行,輸出一組參數(shù)的后驗模擬。Stan與最流行的數(shù)據(jù)分析語言,如R、Python、shell、MATLAB、Julia和Stata的接口。我們將專注于在R中使用Stan。

rstan

rstan允許R用戶實現(xiàn)貝葉斯模型。你可以使用熟悉的公式和data.frame語法(如lm())來擬合模型。通過為常用的模型類型提供預編譯的stan代碼來實現(xiàn)這種更簡單的語法。它使用起來很方便,但只限于特定的 "常用 "模型類型。如果你需要擬合不同的模型類型,那么你需要自己用rstan編碼。

模型擬合函數(shù)以前綴stan_開始,以模型類型結束。建模函數(shù)有兩個必要的參數(shù)。

  • 公式。一個指定因變量和自變量的公式(y ~ x1 + x2)。

  • data。一個包含公式中變量的數(shù)據(jù)框。

此外,還有一個可選的先驗參數(shù),它允許你改變默認的先驗分布。

stan()函數(shù)讀取和編譯你的stan代碼,并在你的數(shù)據(jù)集上擬合模型。

stan()函數(shù)有兩個必要參數(shù)。

  • 文件。包含你的Stan程序的.stan文件的路徑。

  • data。一個命名的列表,提供模型的數(shù)據(jù)。

例子

作為一個簡單的例子來演示如何在這些包中指定一個模型,我們將使用汽車數(shù)據(jù)來擬合一個線性回歸模型。我們的因變量是mpg,所有其他變量是自變量。

mtcars?%>% ??head()

首先,我們將擬合模型。對于線性回歸,我們使用stan函數(shù)。

點擊標題查閱往期內容

R語言RStan貝葉斯示例:重復試驗模型和種群競爭模型Lotka Volterra

左右滑動查看更多

01

02

03

04

summary(fit)

輸出顯示參數(shù)摘要,包括平均值、標準差和量值。此外,它還顯示了MCMC的診斷統(tǒng)計Rhat和有效樣本量。這些統(tǒng)計數(shù)據(jù)對于評估MCMC算法是否收斂非常重要。

接下來,我們將用rstan來擬合同一個模型。下面是我們模型的stan代碼,保存在一個名為stan的文件中(你可以在RStudio中創(chuàng)建一個.stan文件,或者使用任何文本編輯器,并保存擴展名為.stan的文件)。

數(shù)據(jù) ??int<lower=0>?N;???//?觀測值的數(shù)量??int<lower=0>?K;???//?預測的數(shù)量??matrix[N,?K]?X;???//?預測矩陣... 參數(shù) ??real?alpha;???????????//?截距... 模型 ??y?~?normal(alpha?+?X?*?beta,?sigma);??//?目標密度

Stan代碼在 "程序塊 "中結構化。每個Stan模型都需要三個程序塊,即數(shù)據(jù)、參數(shù)和模型。

數(shù)據(jù)塊是用來聲明作為數(shù)據(jù)讀入的變量的。在我們的例子中,我們有結果向量(y)和預測矩陣(X)。當把矩陣或向量聲明為一個變量時,你需要同時指定對象的維度。因此,我們還將讀出觀測值的數(shù)量(N)和預測器的數(shù)量(K)。

在參數(shù)塊中聲明的變量是將被Stan采樣的變量。在線性回歸的情況下,感興趣的參數(shù)是截距項(alpha)和預測因子的系數(shù)(beta)。此外,還有誤差項,sigma。

模型區(qū)塊是定義變量概率聲明的地方。在這里,我們指定目標變量具有正態(tài)分布,其平均值為α+X*β,標準差為sigma。在這個塊中,你還可以指定參數(shù)的先驗分布。默認情況下,參數(shù)被賦予平坦的(非信息性)先驗。

此外,還有一些可選的程序塊:函數(shù)、轉換的數(shù)據(jù)、轉換的參數(shù)和生成的數(shù)量。

接下來,我們需要以Stan程序所期望的方式來格式化我們的數(shù)據(jù)。stan()函數(shù)要求將數(shù)據(jù)作為一個命名的列表傳入,其中的元素是你在數(shù)據(jù)塊中定義的變量。對于這個程序,我們創(chuàng)建一個元素為N、K、X和Y的列表。

list( ????N?=?32, ????K?=?10, ????X?=?predictors, ????y?=?mpg ??)

現(xiàn)在我們已經(jīng)準備好了我們的代碼和數(shù)據(jù),我們把它們傳給函數(shù)來擬合模型。

fit_rstan

輸出類似的匯總統(tǒng)計數(shù)據(jù),包括每個參數(shù)的平均值、標準偏差和量值。這些結果可能相似但不完全相同。它們之所以不同,是因為統(tǒng)計數(shù)據(jù)是根據(jù)后驗的隨機抽樣來計算的。

評估收斂性

當使用MCMC擬合一個模型時,檢查鏈是否收斂是很重要的。我們推薦可視化來直觀地檢查MCMC的診斷結果。我們將創(chuàng)建軌跡圖,Rhat值圖。

首先,讓我們創(chuàng)建軌跡圖。軌跡圖顯示了MCMC迭代過程中參數(shù)的采樣值。如果模型已經(jīng)收斂,那么軌跡圖應該看起來像一個圍繞平均值的隨機散點。如果鏈在參數(shù)空間中蜿蜒,或者鏈收斂到不同的值,那就證明有問題了。我們來演示。

??mcmctrace()

這些軌跡圖表明,兩個模型都已經(jīng)收斂了。對于所有的參數(shù),四條鏈都是混合的,沒有明顯的趨勢。

接下來,我們將檢查Rhat值。Rhat是一種收斂診斷方法,它比較了各條鏈的參數(shù)估計值。如果鏈已經(jīng)收斂并且混合良好,那么Rhat值應該接近1。如果鏈沒有收斂到相同的值,那么Rhat值將大于1。Rhat值為1.05或更高,表明存在收斂問題。rhat()函數(shù)需要一個Rhat值的向量作為輸入,所以我們首先提取Rhat值。

?rhat()??+ ??yaxis_text()

所有的Rhat值都低于1.05,說明沒有收斂問題。

Stan是一個建立貝葉斯模型的強大工具,這些包使R用戶可以很容易地使用Stan。

點擊文末?“閱讀原文”

獲取全文完整資料。

本文選自《R語言貝葉斯MCMC:用rstan建立線性回歸模型分析汽車數(shù)據(jù)和可視化診斷》。

點擊標題查閱往期內容

【視頻】馬爾可夫鏈蒙特卡羅方法MCMC原理與R語言實現(xiàn)|數(shù)據(jù)分享
R語言實現(xiàn)MCMC中的Metropolis–Hastings算法與吉布斯采樣
R語言貝葉斯METROPOLIS-HASTINGS GIBBS 吉布斯采樣器估計變點指數(shù)分布分析泊松過程車站等待時間
R語言馬爾可夫MCMC中的METROPOLIS HASTINGS,MH算法抽樣(采樣)法可視化實例
python貝葉斯隨機過程:馬爾可夫鏈Markov-Chain,MC和Metropolis-Hastings,MH采樣算法可視化
Python貝葉斯推斷Metropolis-Hastings(M-H)MCMC采樣算法的實現(xiàn)
Metropolis Hastings采樣和貝葉斯泊松回歸Poisson模型
Matlab用BUGS馬爾可夫區(qū)制轉換Markov switching隨機波動率模型、序列蒙特卡羅SMC、M H采樣分析時間序列R語言RSTAN MCMC:NUTS采樣算法用LASSO 構建貝葉斯線性回歸模型分析職業(yè)聲望數(shù)據(jù)
R語言BUGS序列蒙特卡羅SMC、馬爾可夫轉換隨機波動率SV模型、粒子濾波、Metropolis Hasting采樣時間序列分析
R語言Metropolis Hastings采樣和貝葉斯泊松回歸Poisson模型
R語言貝葉斯MCMC:用rstan建立線性回歸模型分析汽車數(shù)據(jù)和可視化診斷
R語言貝葉斯MCMC:GLM邏輯回歸、Rstan線性回歸、Metropolis Hastings與Gibbs采樣算法實例
R語言貝葉斯Poisson泊松-正態(tài)分布模型分析職業(yè)足球比賽進球數(shù)
R語言用Rcpp加速Metropolis-Hastings抽樣估計貝葉斯邏輯回歸模型的參數(shù)
R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機森林算法預測心臟病
R語言中貝葉斯網(wǎng)絡(BN)、動態(tài)貝葉斯網(wǎng)絡、線性模型分析錯頜畸形數(shù)據(jù)
R語言中的block Gibbs吉布斯采樣貝葉斯多元線性回歸
Python貝葉斯回歸分析住房負擔能力數(shù)據(jù)集
R語言實現(xiàn)貝葉斯分位數(shù)回歸、lasso和自適應lasso貝葉斯分位數(shù)回歸分析
Python用PyMC3實現(xiàn)貝葉斯線性回歸模型
R語言用WinBUGS 軟件對學術能力測驗建立層次(分層)貝葉斯模型
R語言Gibbs抽樣的貝葉斯簡單線性回歸仿真分析
R語言和STAN,JAGS:用RSTAN,RJAG建立貝葉斯多元線性回歸預測選舉數(shù)據(jù)
R語言基于copula的貝葉斯分層混合模型的診斷準確性研究
R語言貝葉斯線性回歸和多元線性回歸構建工資預測模型
R語言貝葉斯推斷與MCMC:實現(xiàn)Metropolis-Hastings 采樣算法示例
R語言stan進行基于貝葉斯推斷的回歸模型
R語言中RStan貝葉斯層次模型分析示例
R語言使用Metropolis-Hastings采樣算法自適應貝葉斯估計與可視化
R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型
WinBUGS對多元隨機波動率模型:貝葉斯估計與模型比較
R語言實現(xiàn)MCMC中的Metropolis–Hastings算法與吉布斯采樣
R語言貝葉斯推斷與MCMC:實現(xiàn)Metropolis-Hastings 采樣算法示例
R語言使用Metropolis-Hastings采樣算法自適應貝葉斯估計與可視化
視頻:R語言中的Stan概率編程MCMC采樣的貝葉斯模型
R語言MCMC:Metropolis-Hastings采樣用于回歸的貝葉斯估計


R語言貝葉斯MCMC:用rstan建立線性回歸模型分析汽車數(shù)據(jù)和可視化診斷|附代碼數(shù)據(jù)的評論 (共 條)

分享到微博請遵守國家法律
临洮县| 固阳县| 永宁县| 印江| 应城市| 堆龙德庆县| 大洼县| 伽师县| 中阳县| 玉溪市| 张家港市| 龙游县| 建阳市| 八宿县| 文成县| 农安县| 濮阳市| 龙井市| 花莲县| 平塘县| 惠东县| 桦南县| 山阴县| 淅川县| 广饶县| 五河县| 方正县| 黄浦区| 平乡县| 石棉县| 互助| 梁平县| 南部县| 和顺县| 甘泉县| 琼结县| 二连浩特市| 湘潭市| 东乡族自治县| 抚宁县| 卢龙县|