这种混合效应逻辑回归模型的贝叶斯等价物是什么

机器算法验证 贝叶斯 广义线性模型 lme4-nlme
2022-03-21 18:48:24

我一直在使用 R 中的“glmer”来模拟大约 500 人的二元结果,分成两组,每组在三个时间点测量。我感兴趣的问题是 a) 组之间随时间的变化是否不同,以及 b) 一个组中是否存在整体更高的响应。

这是我当前模型的稍微简化的版本。

m <- glmer(Shop ~ Time + Group + Time:Group + (1 | subj), 
           data = Shopping, family = binomial, 
           control = glmerControl(optimizer = "bobyqa"), nAGQ = 10)

我从这个混合效应逻辑模型中得到了一个我认为合理的结果,但我想看看贝叶斯方法是否会得出任何不同的结论。老实说,我主要想了解贝叶斯替代我多年来使用的那种“频率论”模型。

我应该在这里研究什么 R 程序?我知道在同名的 R 包中有一个叫“blme”。对于贝叶斯建模的新手来说,这是否适用于我的示例问题?

编辑

brms 的建议非常贴切。我加载了 brms、rstan 和 loo 包,并能够将 loo 和 kfold 类型的类似 AIC 的统计数据与 PROC GLIMMIX 给出的拟合统计数据进行比较(SAS 是我常用的工作工具,也是最初运行该模型的地方)。

我还扩展了它来比较更简单(没有随机截距)和过度拟合的稻草人替代模型,只是为了让自己熟悉 GLIMMIX 和 Stan 世界中的变体模型是如何存在的。

require(brms)
require(rstan)
require(loo)

options(mc.cores = parallel::detectCores())
rstan_options(auto_write = TRUE)

m_stan <- brm(FMshop ~ Time*Group + ( 1 | subj) + 
                    age_BL, 
           data = Shopping, family = bernoulli)

m_stan_nomixed <- brm(FMshop ~ Time*Group + 
                               age_BL, 
           data = Shopping, family = bernoulli)

m_stan_rantime <- brm(FMshop ~ Time*Group + ( 1 + Time | subj ) +
                               age_BL, 
           data = Shopping, family = bernoulli)

m_stan_kfold<-kfold(m_stan,K=10)
m_stan_kfold_nomixed<-kfold(m_stan_nomixed,K=10)
compare(m_stan_kfold,m_stan_kfold_nomixed)
m_stan_kfold_rantime<-kfold(m_stan_rantime,K=10)
compare(m_stan_kfold,m_stan_kfold_rantime)
1个回答

Stan是贝叶斯模型拟合的最先进技术。它有一个官方的 R 接口,通过rstan. rstan你需要学习如何用 Stan 语言编写模型或者,Stan 还提供了rstanarm包(@ben-bolker 的帽子提示以指出遗漏),通过它您可以用熟悉的lme4-style 语法编写模型。Stan 的一个同样用户友好的界面是 R 包brms,它还非常灵活地处理应该满足基本和中等高级用户的模型。

例如,在您的情况下,语法将完全相同:

m <- brm(Shop ~ Time + Group + Time:Group + (1 | subj), 
       data = Shopping, family = binomial)

或更具体地说(同样glmer 适用)

m <- brm(Shop ~ Time*Group + (1 | subj), 
       data = Shopping, family = binomial)

此模型brms将假定先前分布的合理默认值,但鼓励您选择自己的。

基本模型(例如您作为示例给出的模型)的语法在 和 之间是相同rstanarmbrms用于拟合这些基本模型的优点rstanarm是它带有预编译的 Stan 代码,因此它的运行速度将比brms为每个模型编译其 Stan 代码所需的速度更快。仅举几个显着特征,brms由于它对不同分布的扩展支持(例如“零膨胀 beta”、“von Mises”、分类),它的扩展语法涵盖了用户需要建模的情况,例如预测变量或结果(如在元分析中)测量误差,以及它拟合分布回归、非线性模型或混合模型的能力。有关用于贝叶斯分析的 R 包的更广泛比较,请查看Bürkner 2018.

由于您是贝叶斯模型的新手,我也强烈建议您阅读统计重新思考一书,该书也附带了自己的 R 包,rethinking这也是一个很好的选择,尽管不像brms. 这本书甚至还有一个版本适用于brms.


**参考文献** [Paul-Christian Bürkner, The R Journal (2018) 10:1, pages 395-411.][1]