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 코드를 작성하지 않고도 고수준의 사용자 친화적인 인터페이스를 통해 고도의 베이즈 추론에 접근할 수 있게 해줍니다.
- 다양한 응답 분포(Gaussian, Poisson, binomial, 순서형, 제로과잉, 사용자 정의 혼합 등)와 모델 구성 요소(스무딩 항, 자기상관, 절단된 데이터, 결측값 보정, 분포 회귀, 다변량 응답)를 지원합니다.
- 유연한 사전 분포 지정과 모델 검증, 교차검증, 베이즈 요인 비교를 위한 내장 도구 제공.
주요 기능 (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의 강력한 베이즈 추론 엔진 사이의 성숙한 다리 역할을 하며, 최신 베이즈 계층 모델링을 광범위한 대상에게 접근 가능하게 만듭니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트