大数据:广义线性混合效应模型

wak*_*ake 5 performance r bigdata lme4 mixed-models

我正在寻找有关为相对大的数据集拟合广义线性混合效应模型的策略的建议。

想想我有 10 年内大约 300 支球队的 800 万次美国篮球传球的数据。数据看起来像这样:

data <- data.frame(count = c(1,1,2,1,1,5),
               length_pass= c(1,2,5,7,1,3),
               year= c(1,1,1,2,2,2),
               mean_length_pass_team= c(15,15,9,14,14,8),
               team= c('A', 'A', 'B', 'A', 'A', 'B'))
data
 count length_pass year mean_length_pass_team team
1     1           1    1                    15    A
2     1           2    1                    15    A
3     2           5    1                     9    B
4     1           7    2                    14    A
5     1           1    2                    14    A
6     5           3    2                     8    B
Run Code Online (Sandbox Code Playgroud)

我想解释一下count球员在传球之前采取的步骤。我有理论动机假设count和之间存在团队级别的差异length_pass,因此多级(即混合效应)模型似乎是合适的。

我的个人级别控制变量是length_passyear

在团队层面上,我有mean_length_pass_team. 根据Snijders 的说法,这应该有助于我避免生态谬误,2011 年

我一直在使用lme4brms包来估计这些模型,但是将这些模型安装在我本地的 12 核 128GB 机器上需要几天/几周的时间。

library(lme4)
model_a <- glmer(count ~ length_pass + year + mean_length_pass_team + (1 | team),
                 data=data,
                 family= "poisson",
                 control=glmerControl(optCtrl=list(maxfun=2e8))) 

library(brms)
options (mc.cores=parallel::detectCores ())
model_b <- brm(count ~ length_pass + year + mean_length_pass_team + (1 | team),
                 data=data,
                 family= "poisson")
Run Code Online (Sandbox Code Playgroud)

我正在寻找加快拟合过程或新技术以拟合广义线性混合效应模型的建议:

  • (如何)我可以提高lme4brms适合的速度吗?
  • 还有其他包要考虑吗?
  • 是否有分程序可以帮助提高拟合模型的速度?
  • 在 R 环境之外是否有有趣的选项可以帮助我适应这个?

任何指针都非常感谢!

小智 0

对于一般速度改进,我建议使用openBLAS而不是本机 BLAS。不幸的是,我不相信 LME4 依赖 BLAS。

不过,我还建议并行生成 LME4 模型,这将有效地将您的等待时间减少一半。

  • 事实上,lme4 不使用 BLAS,因为它需要一些位于“Eigen”包中的奇特线性代数...... (2认同)