如何解决具有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
函数,而是使用了另外两个函数:
-
sparse.model.matrix
(以创建稀疏模型/设计矩阵)和 -
MatrixModels:::lm.fit.sparse
(以适合稀疏矩阵并计算系数)。
我可以对混合模型应用类似的方法吗?
我可以使用哪些功能/软件包来实现此目的?
也就是说,我的主要问题是是否可以实现稀疏矩阵的混合模型?
我应该使用什么函数来创建X
和Z
稀疏模型矩阵?
然后,我应该使用哪个函数将稀疏矩阵拟合模型以获得系数?
我非常感谢您对此提供的任何帮助!
解决方法
- 从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
中的稀疏模型矩阵(通过使多级因子成为具有较大固定方差的随机效应)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。