具有分类变量的二项式 glmm 完全成功

机器算法验证 r 广义线性模型 lme4-nlme 分离
2022-03-08 18:31:31

我正在运行带有二项式响应变量和分类预测变量的 glmm。随机效应由用于数据收集的嵌套设计给出。数据如下所示:

m.gen1$treatment
 [1] sucrose      control      protein      control      no_injection .....
Levels: no_injection control sucrose protein
m.gen1$emergence 
 [1]  1  0  0  1  0  1  1  1  1  1  1  0  0....
> m.gen1$nest
 [1] 1  1  1  2  2  3  3  3  3  4  4  4  .....
Levels: 1 2 3 4 5 6 8 10 11 13 15 16 17 18 20 22 24

我运行的第一个模型看起来像这样

m.glmm.em.<-glmer(emergence~treatment + (1|nest),family=binomial,data=m.gen1)

我收到两个如下所示的警告:

Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.0240654 (tol = 0.001, component 4)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model is nearly unidentifiable: large eigenvalue ratio
 - Rescale variables?

模型摘要显示其中一种处理具有异常大的标准误差,您可以在此处看到:

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)  
(Intercept)         2.565      1.038   2.472   0.0134 *
treatmentcontrol   -1.718      1.246  -1.378   0.1681  
treatmentsucrose   16.863   2048.000   0.008   0.9934  
treatmentprotein   -1.718      1.246  -1.378   0.1681 

我尝试了来自 glmer control 的不同优化器和来自其他包的函数,我得到了类似的输出。我已经使用 glm 运行模型,忽略了随机效应,问题仍然存在。在探索数据时,我意识到高标准的治疗。错误仅在响应变量中成功。只是为了检查这是否可能导致问题,我添加了一个带有“失败”的假数据点来进行该处理,并且模型运行顺利,并给出了合理的标准误差。你可以在这里看到:

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)  
(Intercept)        3.4090     1.6712   2.040   0.0414 *
treatmentcontrol  -1.8405     1.4290  -1.288   0.1978  
treatmentsucrose  -0.2582     1.6263  -0.159   0.8738  
treatmentprotein  -2.6530     1.5904  -1.668   0.0953 .

我想知道我的直觉是否正确,因为这种治疗没有失败,无法进行良好的估计,我该如何解决这个问题。

提前致谢!

1个回答

你的直觉是完全正确的。这种现象称为完全分离你可以找到很多(现在你知道它的名字)谷歌搜索......这里在一般背景下这里在 GLMMs 的背景下进行了相当彻底的讨论。这个问题的标准解决方案是添加一个将参数推回零的小项——在频率论的上下文中,这称为惩罚偏差校正方法。标准算法源于 Firth(1993,“Bias reduction of maximum似然估计” Biometrika 80, 27-38),并在logistf 包中实现在 CRAN 上。在贝叶斯上下文中,这被定义为在固定效应参数之前添加一个弱。

据我所知,Firth 的算法尚未扩展到 GLMM,但您可以通过使用blme包来使用贝叶斯技巧,该包在包的顶部放置了一个薄贝叶斯层lme4这是来自上述 GLMM 讨论的示例:

cmod_blme_L2 <- bglmer(predation~ttt+(1|block),data=newdat,
                   family=binomial,
                   fixef.prior = normal(cov = diag(9,4)))

glmer此示例中的前两行与我们在标准模型中使用的完全相同;最后一个指定固定效应的先验是具有对角方差-协方差矩阵的多元正态分布。矩阵是 4x4(因为在这个例子中我们有 4 个固定效应参数),每个参数的先验方差是 9(对应于标准差 3,这是相当弱的——这意味着 +/- 2SD 是( -6,6),在 logit 尺度上是一个非常大的范围)。

您的示例中参数的非常大的标准误差是与完全分离密切相关的现象的一个示例(每当我们在逻辑模型中获得极端参数值时就会发生这种现象),称为Hauck-Donner 效应

还有两个可能有用的参考资料(我自己还没有深入研究过):

  • Gelman A、Jakulin A、Pittau MG 和 Su TS (2008) 逻辑和其他回归模型的信息量较弱的默认先验分布。应用统计年鉴,2,1360–383。
  • José Cortiñas Abrahantes 和 Marc Aerts (2012) 聚类二进制数据的分离解决方案Statistical Modeling 12(1):3–27 doi: 10.1177/1471082X1001200102

最近的 Google 学者搜索“bglmer '完全分离'”发现:

  • Quinones、AE 和 WT Wcislo。“在兼性真社会汗蜂Megalopta genalis中的隐秘扩展育雏护理。” 昆虫社会 62.3 (2015): 307–313。