我在一个大文件(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
(用于创建稀疏模型/设计矩阵(和- CCD_ 8(以拟合稀疏矩阵并计算系数(
我可以对混合模型应用类似的方法吗
我可以使用哪些功能/包来实现此功能?
也就是说,我的主要问题是是否有可能用稀疏矩阵实现混合模型
我应该使用哪些函数来创建X
和Z
稀疏模型矩阵
那么,我应该使用哪个函数来拟合具有稀疏矩阵的模型以获得系数?
如果能在这方面得到任何帮助,我将不胜感激!
- 从CRAN的1.0.2.1版本开始,
glmmTMB
有一个sparseX
参数:
spareX:一个命名的逻辑向量,包含(可能(命名的元素"cond"zi"disp";以指示是否为固定效应模型应生成特定模型组件的矩阵作为稀疏矩阵,例如"c(cond=TRUE("。默认为全部"FALSE">
您可能需要glmmTMB([formula], [data], sparseX=c(cond=TRUE))
(默认情况下,glmmTMB
使用family="gaussian"
(。
对于线性混合车型,glmmTMB
的速度不如lme4
:我不知道你的里程数是多少(但会对这里感兴趣(。本文还讨论了如何破解lme4
中稀疏模型矩阵的等价物(通过使多水平因子是具有大固定方差的随机效应(。