具有lme4或其他软件包的稀疏混合模型

问题描述

我在大型文件(500000行)上使用混合模型。 我的模型公式如下:
Y ~ 0 + num1:factor1 + num1:factor2 + num2:factor3 + factor4 + (0 + num3|subject) + (0 + num4|subject) + (1|subject)
其中num-数字变量; factor-分类变量/因素。

由于类别变量具有许多唯一级别,因此固定效果矩阵为非常稀疏(稀疏度约为0.9)。
如果要处理密度高的矩阵,要拟合这样的矩阵需要大量的时间和RAM。

线性回归也有同样的问题。
我的密集矩阵是20GB,但是当我将其转换为稀疏矩阵时,它仅变成了35 MB
因此,我拒绝使用lm函数,而是使用了另外两个函数

  1. sparse.model.matrix(以创建稀疏模型/设计矩阵)和
  2. MatrixModels:::lm.fit.sparse(以适合稀疏矩阵并计算系数)。

我可以对混合模型应用类似的方法吗?
我可以使用哪些功能/软件包来实现此目的?

也就是说,我的主要问题是是否可以实现稀疏矩阵的混合模型
我应该使用什么函数来创建XZ稀疏模型矩阵?
然后,我应该使用哪个函数将稀疏矩阵拟合模型以获得系数?

我非常感谢您对此提供的任何帮助!

解决方法

  • 从CRAN的1.0.2.1版开始,glmmTMB具有一个sparseX参数:

sparseX:包含(可能)包含以下元素的命名逻辑向量 “ cond”,“ zi”,“ disp”指示固定效果模型 应当为特定模型组件生成矩阵 作为稀疏矩阵,例如‘c(cond = TRUE)’。默认为全部 ‘假’

您可能希望使用glmmTMB([formula],[data],sparseX=c(cond=TRUE))(默认情况下,glmmTMB使用family="gaussian")。

对于线性混合模型,

glmmTMB的速度不如lme4快:我不知道您的行驶里程是多少(但对此感兴趣)。还有关于here的讨论,关于如何破解lme4中的稀疏模型矩阵(通过使多级因子成为具有较大固定方差的随机效应)。