JAGS 是否有像 Stan 的 brms 一样的 R 前端?

机器算法验证 r 贝叶斯 锯齿 斯坦
2022-04-14 06:09:26

JAGS 是否有像 Stan 的 brms / rstanarm 这样的 R 前端?有人在为 JAGS 工作吗?

1个回答

根据您的最后评论(“我希望将 R-formula 语法运行时翻译成 JAGS 模型规范”),我认为 runjags::template.jags 可以满足您的需求(至少部分如此)。它根据 lme4 样式的语法和用户提供的数据框自动生成 (G)L(M)M 的完整 JAGS 模型(和数据)表示。例如:

library('runjags')

# Use an example from glmer:
library('lme4')
fitdata <- cbpp
fitdata$Resp <- cbind(fitdata$incidence, fitdata$size - fitdata$incidence)
# As in ?glmer:
gm1a <- glmer(Resp ~ period + (1 | herd), fitdata, binomial)

# Create (and display) the JAGS code:
mf <- template.jags(Resp ~ period + (1 | herd), fitdata, n.chains=2, family='binomial')
cat(readLines(mf),sep='\n')

r <- run.jags(mf, burnin=5000, sample=10000)

r
summary(gm1a)

缺少两个明显的东西:尚不支持随机斜率(但这是我希望添加的内容),不直接支持非线性模型(但可以生成线性模型,然后由用户编辑)。请注意,不可能在 JAGS 代码中包含任意 R 函数,因此必须用 JAGS(或在 C++ 中作为 JAGS 模块)重新编写这些函数。

重复我之前的评论,其动机是帮助用户编写自己的代码,而不是在用户无需思考或理解任何事情的情况下完成所有工作。澄清一下:我看到了帮助知识渊博的用户快速生成代码的好处,否则这些代码编写起来可能很乏味(特别是如果他们在理解 MCMC 理论的情况下仍遇到 BUGS 语法),但我对真正新手的想法感到不舒服用户使用自动生成的代码而不了解正在发生的事情(即作为一个完全黑匣子)。但也许我过于谨慎了......我很想听听其他人的意见(如果愿意,可以私下通过电子邮件发送给 runjags 包的维护者),因为我还没有决定将这些功能开发到什么程度,