业务风险管理系统
概述
这个业务风险管理系统该包提供了一个接口,使用Stan拟合贝叶斯广义(非)线性多元多级模型,Stan是一个用于执行完全贝叶斯推断的C++包(请参阅https://mc-stan.org/). 公式语法与包lme4的语法非常相似,为执行回归分析提供了一个熟悉而简单的界面。支持广泛的响应分布,允许用户在多级上下文中拟合线性、稳健线性、计数数据、生存率、响应时间、有序、零膨胀,甚至自定义的混合模型。进一步的建模选项包括非线性和平滑项、自相关结构、删失数据、缺失值插补等。此外,可以预测响应分布的所有参数,以便进行分布回归。也可以拟合多变量模型(即具有多个响应变量的模型)。先前的规范是灵活的,明确鼓励用户应用实际反映其信念的先前发行版。模型拟合可以很容易地与后验预测检验、交叉验证和贝叶斯因子进行评估和比较。
资源
如何使用brms
作为一个简单的例子,我们使用泊松回归对癫痫患者的癫痫发作计数进行建模,以调查治疗(用变量表示Trt公司
)可以减少癫痫发作次数,治疗效果是否随治疗前癫痫发作的(标准化)基线次数而变化(可变z基准
). 由于我们每个人都有多个观测值,因此会合并一个组级截距,以说明数据中产生的依赖性。
结果(即后牵引)可以使用
在输出的顶部,给出了有关模型的一些一般信息,例如族、公式、迭代次数和链。接下来,根据标准偏差和(如果每个分组因子有多个组级效应;此处未显示)组级效应之间的相关性,分别显示每个分组因子的组级效应。在输出的底部,显示了人口层面的影响(即回归系数)。如果合并,还将给出自相关效应和系列特定参数(例如,正常模型中的剩余标准偏差“sigma”)。
通常,使用后验分布的平均值(“估计值”)和标准偏差(“估计误差”)以及基于分位数的双侧95%可信区间(“l-95%置信区间”和“u-95%置信区间”)来总结每个参数。我们看到Trt公司
阴性,95%置信区间重叠为零。这表明,平均而言,治疗可能会减少一定数量的癫痫发作次数,但基于数据和应用模型的证据并不十分有力,而且根据标准决策规则,证据仍然不足。此外,我们发现几乎没有证据表明治疗效果随基线发作次数而变化。
最后三个值(“ESS_bulk”、“ESS_tail”和“Rhat”)提供了算法估计该参数后验分布的程度信息。如果“Rhat”大大大于1,则算法尚未收敛,需要运行更多迭代和/或设置更强的先验值。
为了直观地研究链以及后验分布,我们可以使用情节
方法。如果我们只想看看Trt公司
和z基准
,我们要
可以通过运行以下命令执行更详细的调查launch_shinystan(fit1)
为了更好地理解预测因素与反应的关系,我建议条件_效果
方法:
此方法使用一些幕后预测功能,也可以直接调用。假设我们想预测治疗组中一个人的反应(即癫痫发作次数)(Trt=1
)和对照组(Trt=0
)平均年龄和以往癫痫发作的平均次数。我们无法使用
我们需要设置re_formula=不适用
为了不受群体层面的影响。而预测
方法返回响应的预测已安装
方法返回回归线的预测。
这两种方法都返回相同的估计值(直至随机误差),而后者的方差较小,因为回归线中的不确定性小于每个响应中的不确定度。如果我们想预测原始数据的值,只需将新数据
参数为空。
假设,我们想调查模型中是否存在过度分散,即响应分布未考虑的剩余变化。为此,我们引入了第二组级截距,以捕获可能的过度分散。
然后,我们可以通过近似leave-one-out(LOO)交叉验证继续比较这两个模型。
这个厕所
比较模型时的输出有点冗长。我们首先看到两个模型的单独LOO摘要,然后是它们之间的比较。自更高埃尔帕德
(即,预期的对数后验密度)值表明拟合较好,我们看到模型解释了过度分散(即。,设备2
)更适合。然而,我们还发现,在个别LOO输出中,有几个有问题的观测值,其近似值可能并不十分准确。为了恰当地处理这个问题,我们需要回到其他方法,例如重新定位
或kfold公司
但这需要对模型进行多次改装,这对于快速示例来说耗时太长。我们上面展示的后处理方法只是冰山一角。要获得适用于拟合模型对象的完整方法列表,请键入方法(class=“brmsfit”)
.
开发和维护开放源码软件是对科学进步的一项重要但往往被低估的贡献。因此,无论何时您使用开源软件(或一般软件),请确保适当引用它,以便开发人员的工作得到赞扬。
使用brms时,请引用以下一个或多个出版物:
- Bürkner P.C.(2017)。brms:使用Stan的贝叶斯多级模型的R包。统计软件杂志. 80(1), 1-28. doi.org/10.18637/jss.v080.201
- Bürkner P.C.(2018)。使用R包brms的高级贝叶斯多级建模。R杂志. 10(1), 395-411. doi.org/10.32614/RJ-2018-017
- Bürkner P.C.(2021)。基于brms和Stan的R中贝叶斯项目响应建模。统计软件杂志, 100(5), 1-54. doi.org/10.18637/jss.v100.i05
由于brms是Stan的高级接口,请另外引用Stan(另请参阅https://mc-stan.org/users/citations网站/):
- Stan开发团队。是的。Stan建模语言用户指南和参考手册,版本。https://mc-stan.org
- Carpenter B.、Gelman A.、Hoffman M.D.、Lee D.、Goodrich B.、Betancourt M.、Brubaker M.、Guo J.、Li P.和Riddell A.(2017)。斯坦:一种概率编程语言。统计软件杂志. 76(1). doi.org/10.18637/jss.v076.i01
此外,brms依赖于其他几个R包,当然也依赖于R本身。要了解如何引用R及其包,请使用引用
功能。brms有一些特定于某些包的功能。这个rstan公司与一起包装卢比使Stan可以在R中方便地访问。可视化和后预测检查基于贝叶斯图和ggplot2.近似的留一交叉验证,使用厕所
相关方法通过厕所包裹。基于边际似然的方法,如贝叶斯因子
通过以下方式实现桥式取样包裹。通过指定的样条曲线秒
和t2时间
功能依赖于mgcv公司。如果您使用其中一些功能,请考虑引用相关软件包。
常见问题
如何安装brms?
使用CRAN安装最新版本
当前的开发版本可以通过以下途径从GitHub下载
因为brms是基于Stan的,所以需要一个C++编译器。程序Rtools(可从https://cran.r-project.org/bin/windows/Rtools/)附带了适用于Windows的C++编译器。在Mac上,您应该安装Xcode。有关如何运行编译器的更多说明,请参阅https://github.com/stan-dev/rstan/wiki/rstan-Getting-Started.
我是新手。我从哪里开始?
详细说明和案例研究在软件包的大量小插曲中给出。请参见渐晕图(package=“brms”)
以获取概述。有关公式语法、族和先前发行版的文档,请参阅帮助(“brm”)
.
我应该在哪里提问、提出新功能或报告错误?
可以在斯坦论坛关于话语。要建议新功能或报告错误,请在上打开问题github.
如果您已经安装了模型,请应用支柱
方法。如果只想在不进行任何模型拟合的情况下生成Stan代码,请使用支柱
方法。
我可以避免编译模型吗?
当您第一次使用brms调整模型时,目前无法避免编译。但是,如果您已经安装好模型并希望再次运行它,例如使用更多绘图,则可以使用更新
方法。有关更多详细信息,请参阅帮助(“update.brmsfit”)
.
brms和rstanam的区别是什么?
rstanam包与brms类似,它还允许使用Stan进行后端估计来拟合回归模型。与brms相反,rstanam附带了预编译代码,以在拟合模型时节省编译时间(以及对C++编译器的需要)。然而,随着brms动态生成其Stan代码,它在模型规范方面比rstanam提供了更多的灵活性。此外,多层模型目前在brms中的拟合效率更高。有关brms与实现多级模型的其他常见R包的详细比较,请参阅渐晕(“brms_multialevel”)
和渐晕图(“brms_overview”)
.