提问人:Kat 提问时间:5/17/2023 最后编辑:Ben BolkerKat 更新时间:5/18/2023 访问量:461
R 中 glmmTMB 函数的问题:总结给出 NaN
Problem with glmmTMB function in R: gives NaN in summary
问:
我有一个大型汽车保险数据集,我想用它来做一个混合模型回归,以使用 glmmTMB 对预期的索赔频率进行建模,目的是确定初始基本保费。
我的脚本看起来像这样:
glmmTMB(response ~ Var1 + Var2 + Var3 + ... +
offset(log(exposure_level) + (1|policy_id),
data = data,
family = nbinom1(link = "log"))
无论我做什么,我都会收到有关 NaN 和收敛的警告,摘要中的 p 值、std、z 值、AIC、BIC、logLik 和偏差都是 NaN。
我收到以下警告:
警告消息: 1:在 .checkRankX(TMBStruc, control$rank_check) 中:
条件模型中的固定效应是秩缺陷
2:In (function (start, objective, gradient = NULL, hessian = NULL, : NA/NaN 函数评估
3:In (函数 (start, objective, gradient = NULL, hessian = NULL, : NA/NaN功能评估
4:适合TMB(TMBStruc): 模型收敛问题;非正定 Hessian 矩阵。参见小插图('troubleshooting') 5: In fitTMB(TMBStruc)
: 模型收敛问题;假收敛 (8)。参见小插图('疑难解答')
我尝试对数据进行更多分组并省略变量,但似乎无法解决问题。无论我尝试什么,警告和 NaN 仍然显示。
有没有人经历过同样的事情并知道如何解决问题?
答:
关键是
在 .checkRankX(TMBStruc, control$rank_check) 中:条件模型中的固定效应是排名不足的
如果将参数添加到模型拟合中,它应该会自动处理此问题。control = glmmTMBControl(rank_check = "adjust")
这意味着您的预测变量集中有多共线列(发生这种情况的原因有很多:缺少与某些组合的交互作用、完全描述一组分类选项的虚拟变量、常量列......
例如:
library(glmmTMB)
data("sleepstudy", package = "lme4")
ss <- transform(sleepstudy, Days2 = Days)
m <- glmmTMB(Reaction ~ Days + Days2 + (1|Subject),
data = ss,
control = glmmTMBControl(rank_check = "adjust"))
它给出消息(不再是警告)
从排名不足的条件模型中删除列:Days2
评论
summary()
diagnose()
diagnose()