我在一个大文件(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函数,而是使用另外两个函数:
sparse.model.matrix (创建稀疏模型/设计矩阵)和MatrixModels:::lm.fit.sparse (用于拟合稀疏矩阵并计算系数)。我能对混合模型应用类似的方法吗?
我可以使用哪些功能/包来实现这一点?
也就是说,我的主要问题是是否有可能实现具有稀疏矩阵的混合模型。
我应该使用哪些函数来创建X和Z稀疏模型矩阵?
那么,用哪一个函数来拟合稀疏矩阵来得到系数呢?
我将非常-非常感谢任何帮助在这方面!
发布于 2020-11-03 16:14:31
glmmTMB有一个sparseX参数:sparseX:一个命名的逻辑向量,包含(可能)名为"cond“、"zi”、"disp“的元素,用于指示是否应该将特定模型组件的固定效果模型矩阵生成为稀疏矩阵,例如‘c(cond=TRUE)’。默认都是‘假’
您可能需要glmmTMB([formula], [data], sparseX=c(cond=TRUE)) (默认情况下,glmmTMB使用family="gaussian" )。
对于线性混合模型,glmmTMB不像lme4那样快:我不知道您的里程是多少(但这里会感兴趣)。这里还讨论了如何在lme4中破解稀疏模型矩阵的等价性(通过使多层因子成为具有较大固定方差的随机效应)。
https://stackoverflow.com/questions/64666255
复制相似问题