paul-buerkner/brms

brms R package for Bayesian generalized multivariate non-linear multilevel models using Stan

📦 brms – Stan を用いたベイズ回帰モデル (R)

何であるか

  • R パッケージで、馴染み深い lme4 スタイル の式を書くだけで、ベイズ一般化(非線形)階層モデルを適合できる。
  • Stan が重い処理を担当:後方分布からのサンプリングにハミルトニアンモンテカルロ(NUTS)を実行する。

なぜ重要か

  • スタニコードを手で書かずに、統計学者やデータサイエンティストが高度なベイズ推論にアクセスできる高レベルで使いやすいインターフェースを提供。
  • 多様な応答分布(正規、ポアソン、二項、順序、ゼロ過剰、カスタム混合など)とモデル構成要素(スムーズ項、自己相関、打ち切りデータ、欠損値補完、分布回帰、多変量応答)をサポート。
  • 柔軟な事前分布の指定と、モデルチェック、交差検証、ベイズ因子比較のための組み込みツール。

主な機能(README に記載)

  • lme4 に似た式構文 → R ユーザーにとって学習コストが低い。
  • Stan コードの自動生成(stancode メソッド)とコンパイル。
  • 任意のグループ構造を持つ階層(多層)モデル。
  • mgcv を通じた非線形、スプライン(s, t2)およびスムーズ項。
  • 後方予測チェック、loo/kfold 交差検証、ベイズ因子。
  • 可視化ヘルパー(plotconditional_effectsbayesplotggplot2 との統合)。
  • rstanrstanarmbridgesamplingloobayesplotmgcv などとの互換性。

一般的なワークフロー(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 では、近似的な1つずつ除外交差検証(loo)を使って2つのモデルを比較する方法も紹介されている。

インストール

  • 積極的 CRAN リリース: install.packages("brms")
  • 開発版: remotes::install_github("paul-buerkner/brms")
  • C++ コンパイラが必要(Windows では Rtools、macOS では Xcode)

ドキュメントと学習リソース

  • 公式サイトとビネット: https://paulbuerkner.com/brms/
  • 入門論文(JSS)と高度な階層モデル論文(R Journal)。
  • ブログ記事、Stan Discourse フォーラム、GitHub のイシュー追跡システムでサポートを受ける。

引用 brms を使用する際は、2017年のJSS論文(Bürkner)とStanの論文、および使用した補助パッケージをすべて引用してください。

結論 brms は、R の回帰式エコシステムと Stan の強力なベイズ推論エンジンの間の成熟した橋渡しであり、最先端のベイズ階層モデルを広範なユーザーにアクセス可能にしている。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト