通常我的混合模型包含几个具有很多唯一级别的分类变量,因此X
矩阵非常稀疏。
我使用glmmTMB
处理X
和Z
矩阵作为稀疏的包。这显着减少了拟合模型期间的 RAM 使用量。
这个glmmTMB
包很棒,但对我来说有一个问题(也许我遗漏了一些东西):
当我使用数值变量和分类变量(如 FE)之间的交互时,模型拟合没有错误。
例如,这个模型效果很好:
fit = glmmTMB(Y ~ 0 + num1:factor1 + num2:factor1 + factor2 +
(0 + num3|subject) + (0 + num4|subject) + (1|subject),
model_data, REML = TRUE, sparseX=c(cond=TRUE))
但是当我使用两个分类变量之间的任何交互时,即公式如下所示:
fit = glmmTMB(Y ~ 0 + num1:factor1 + factor3:factor1 + factor2 +
(0 + num2|subject) + (0 + num3|subject) + (1|subject),
model_data, REML = TRUE, sparseX=c(cond=TRUE)),
我收到以下错误:
iter: 5 Error in newton(par = c(beta = 1, beta = 1, beta = 1, beta = 1, beta = 1, :
Newton failed to find minimum.
In addition: Warning message:
In (function (start, objective, gradient = NULL, hessian = NULL, :
NA/NaN function evaluation
outer mgc: NaN
Error in (function (start, objective, gradient = NULL, hessian = NULL, :
gradient function must return a numeric vector of length 4
同时,在混合模型理论中,两个分类变量之间的相互作用是有效的。
此外,这种模型(具有两个因素之间的相互作用)成功地安装了Julia
MixedModels
包。
请您帮助我了解此错误的根源吗?
有没有办法在两个分类变量之间相互作用的模型中避免它?
为什么这样的模型适用于Julia MixedModels
而不适用于glmmTMB
?