带有 lme4 或其他包的稀疏混合模型

Sparse Mixed Model with lme4 or other package

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

由于分类变量有很多独特的水平,固定效应矩阵是非常稀疏(稀疏度~0.9)。
拟合这样一个矩阵,如果它处理得如此密集,则需要大量时间和 RAM。

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

  1. sparse.model.matrix(创建稀疏model/design矩阵)和
  2. MatrixModels:::lm.fit.sparse(拟合稀疏矩阵并计算系数)。

我可以将类似的方法应用于混合模型吗?
我可以使用哪些函数/包来实现它?

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

如果对此有任何帮助,我将非常非常感谢!

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

sparseX: a named logical vector containing (possibly) elements named "cond", "zi", "disp" to indicate whether fixed-effect model matrices for particular model components should be generated as sparse matrices, e.g. ‘c(cond=TRUE)’. Default is all ‘FALSE’

您可能需要 glmmTMB([formula], [data], sparseX=c(cond=TRUE))glmmTMB 默认使用 family="gaussian")。

glmmTMB 对于线性混合模型的速度不如 lme4 快:我不知道你的里程数是多少(但会对这里感兴趣)。还有一些讨论 here 关于如何破解 lme4 中的稀疏模型矩阵的等价物(通过让 many-level 因子成为具有较大固定方差的随机效应)。