paul-buerkner/brms
brms R package for Bayesian generalized multivariate non-linear multilevel models using Stan
📦 brms – 使用 Stan 的貝葉斯迴歸模型(R)
是什麼
- 一個 R 套件,允許你透過撰寫熟悉的 lme4 風格 公式來擬合貝葉斯廣義(非線性)多層模型,並自動轉換為 Stan 程式碼。
- Stan 負責繁重的工作:執行哈密頓蒙地卡羅(NUTS)從後驗分佈中抽取樣本。
為何重要
- 為統計學家與資料科學家提供高階、使用者友善的介面,無需手動撰寫 Stan 程式碼即可進行複雜的貝葉斯推論。
- 支援大量回應分佈(常態、泊松、二項、順序、零膨脹、自訂混合等)與模型元件(平滑項、自相關、截斷資料、遺失值插補、分佈迴歸、多變量回應)。
- 支援靈活的先驗設定,以及內建的模型檢查、交叉驗證與貝氏因子比較工具。
主要功能(如 README 所述)
- 公式語法類似
lme4→ 對 R 使用者學習曲線低。 - 自動產生 Stan 程式碼(
stancode方法)並編譯。 - 支援任意分組結構的多層(階層)建模。
- 透過 mgcv 支援非線性、樣條(
s,t2)與平滑項。 - 後驗預測檢查、
loo/kfold交叉驗證、貝氏因子。 - 可視化輔助函數(
plot、conditional_effects,與 bayesplot、ggplot2 整合)。 - 與 rstan、rstanarm、bridgesampling、loo、bayesplot、mgcv 等相容。
典型工作流程(摘自 README)
library(brms)
# 擬合泊松多層模型
fit1 <- brm(count ~ zAge + zBase * Trt + (1|patient),
data = epilepsy, family = poisson())
# 匯總後驗抽樣結果
summary(fit1)
# 可視化係數
plot(fit1, variable = c("b_Trt1", "b_zBase"))
# 對新資料進行預測(忽略隨機效應)
newdata <- data.frame(Trt = c(0,1), zAge = 0, zBase = 0)
predict(fit1, newdata = newdata, re_formula = NA)
README 也展示了如何使用近似留一交叉驗證(loo)比較兩個模型。
安裝
- 穩定版 CRAN 發布:
install.packages("brms") - 開發版:
remotes::install_github("paul-buerkner/brms") - 需要 C++ 編譯器(Windows 使用 Rtools,macOS 使用 Xcode),因為 Stan 必須編譯。
文件與學習資源
- 官方網站與教學文件:https://paulbuerkner.com/brms/
- 入門論文(JSS)與高階多層建模論文(R Journal)。
- 博客文章、Stan Discourse 論壇、GitHub 問題追蹤器以獲取協助。
引用 使用 brms 時,請引用 2017 年 JSS 論文(Bürkner)與 Stan 論文,以及所使用的任何輔助套件。
總結
brms 是連接 R 的迴歸公式生態系統與 Stan 強大貝葉斯推論引擎之間成熟且廣泛使用的橋樑,使最先進的貝葉斯多層建模對廣大使用者可及。
相關
- 專案
- 專案
- 專案
- 專案
- 專案