使用glmer出现“Hessian is numerically singular”警告的原因咨询
关于glmer模型出现“Hessian数值奇异”警告的原因解析
你的数据集
> test_df sample pers expl resp 1 1 1 a 1 2 2 2 a 1 3 3 3 a 1 4 4 4 a 1 5 5 5 a 1 6 6 1 b 1 7 7 2 b 1 8 8 3 b 0 9 9 4 b 1 10 10 5 b 1 11 11 1 c 0 12 12 2 c 1 13 13 3 c 0 14 14 4 c 1 15 15 5 c 0 16 16 1 d 1 17 17 2 d 1 18 18 3 d 0 19 19 4 d 1 20 20 5 d 1 21 21 1 e 1 22 22 2 e 1 23 23 3 e 0 24 24 4 e 1 25 25 5 e 1 26 26 1 f 0 27 27 2 f 0 28 28 3 f 0 29 29 4 f 0 30 30 5 f 0 31 31 1 g 1 32 32 2 g 1 33 33 3 g 0 34 34 4 g 0 35 35 5 g 0 36 36 6 a 1 37 37 7 a 1 38 38 8 a 1 39 39 9 a 1 40 40 10 a 1 41 41 6 h 1 42 42 7 h 1 43 43 8 h 1 44 44 9 h 1 45 45 10 h 1 46 46 6 i 1 47 47 7 i 1 48 48 8 i 1 49 49 9 i 1 50 50 10 i 1 51 51 6 d 1 52 52 7 d 1 53 53 8 d 1 54 54 9 d 1 55 55 10 d 1 56 56 6 d2 1 57 57 7 d2 1 58 58 8 d2 1 59 59 9 d2 1 60 60 6 e 1 61 61 7 e 1 62 62 8 e 1 63 63 9 e 1 64 64 10 e 1 65 65 6 e2 1 66 66 7 e2 1 67 67 8 e2 1 68 68 9 e2 1 69 69 10 e2 1 70 70 6 g 1 71 71 7 g 0 72 72 8 g 1 73 73 9 g 1 74 74 10 g 0
你执行的模型代码
model <- glmer(resp~expl+(1|pers), data=test_df, family=binomial)
收到的警告信息
Warning message: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Hessian is numerically singular: parameters are not uniquely determined
警告原因解析
这个警告本质是模型无法唯一确定某些参数的估计值,结合你的数据和模型,主要有几个可能的诱因:
- 完全分离情况:看你的数据,
expl=f对应的所有resp取值都是0,属于完全分离——某个解释变量类别下,响应变量的取值完全一致。这种情况下,模型会试图给这个类别分配一个无穷大的系数来拟合,但数值计算无法实现,进而导致Hessian矩阵奇异,参数无法被唯一确定。 - 随机效应方差趋近于0:你加入了
(1|pers)的随机截距,如果不同pers之间的响应差异极小,模型估计的随机效应方差会接近0,此时随机效应和固定效应的参数会出现冗余,导致参数无法被唯一识别。 - 解释变量类别过多且部分类别数据支撑不足:你的
expl包含多个类别(a、b、c、d、d2、e、e2、f、g、h、i),部分类别对应的样本量或响应变异度不够,没法支撑独立的参数估计,最终引发参数估计不稳定。
内容的提问来源于stack exchange,提问作者Carpa
相关产品推荐
相关产品推荐

