加速R中的lmer功能

时间:2015-08-24 08:21:39

标签: r performance lme4 mixed-models

我想在尝试使用R包在lme4中改善线性混合效果模型的模型拟合时间时分享我的一些想法。

数据集大小:数据集大约包含400.000行和32列。遗憾的是,无法分享有关数据性质的信息。

假设和检查:假设响应变量来自正态分布。在模型拟合过程之前,使用相关表和R中提供的alias函数测试变量的共线性和多重共线性。

连续变量被缩放以帮助收敛。

模型结构:模型方程包含31个固定效果(包括截距)和30个随机效应(不包括截距)。对于具有2700个级别的特定因子变量,随机效应是随机的。协方差结构是方差分量,因为假设随机效应之间存在独立性。

模型方程示例:

lmer(Response ~ 1 + Var1 + Var2 + ... + Var30 + (Var1-1| Group) + (Var2-1| Group) + ... + (Var30-1| Group), data=data, REML=TRUE)

模型已成功安装,但是,提供结果大约需要3.1小时。 SAS中的相同型号花了几秒钟。网上有关于如何通过使用非线性优化算法nloptwrap来减少时间的文献,并关闭在优化完成后执行的耗时衍生计算calc.derivs = FALSE

https://cran.r-project.org/web/packages/lme4/vignettes/lmerperf.html

时间减少了78%。

问题:通过相应地定义lmer参数输入,还有其他方法可以缩短模型拟合时间吗?在模型拟合时间方面,R和SAS之间存在很大差异。

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:3)

我们已经实现了随机截距回归,假设R包Rfast中的复合对称性。该命令是rint.reg。它比相应的lme4函数快30倍。我不知道这是否有帮助,但以防万一。

https://cran.r-project.org/web/packages/Rfast/index.html

答案 1 :(得分:1)

如果您使用glmer而不是lmer,则会有参数nAGQ。我发现设置nAGQ=0大大减少了拟合相当复杂模型所需的时间(13个固定效果,一个具有不同截距和斜率的随机效果,300k行)。这基本上告诉glmer对GLMM使用不太精确的参数估计形式。有关详细信息,请参阅?glmer,或this发布。