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


11

我正在运行带有二项式响应变量和分类预测变量的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控件提供的不同优化器以及其他软件包提供的功能,并获得了类似的输出。我已经使用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 .

我想知道我的直觉是关于该治疗方法缺乏失败而无法进行正确估计的直觉,以及如何解决该问题。

提前致谢!

Answers:


15

您的直觉是完全正确的。这种现象称为完全分离。您会发现很多东西(现在您知道它的名字了)谷歌搜索…… 在一般上下文中以及在GLMM上下文中已对此进行了相当全面的讨论。解决此问题的标准方法是添加一个将参数推回零的小项-在频繁出现的情况下,这称为惩罚偏差校正方法。标准算法归功于Firth(1993年,“最大似然估计的Bias减少”,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),这在对数刻度上是一个很大的范围)。

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

另外两个可能有用的参考(我本人还没有对它们进行深入研究):

  • Gelman A,Jakulin A,Pittau MG和Su TS(2008)对于逻辑模型和其他回归模型的信息量极少的默认先验分布。《应用统计年鉴》,第2卷,1360–383页。
  • JoséCortiñasAbrahantes和Marc Aerts(2012)聚类二进制数据分离的一种解决方案统计建模 12(1):3–27 doi:10.1177 / 1471082X1001200102

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

  • Quiñones,AE和WT Wcislo。“在兼职汗水蜂巨Mega生殖器中的隐性扩展育雏护理。” 昆虫协会62.3(2015):307-313。

哇,非常感谢!这很合理,并且模型现在可以与bglmer一起平稳运行。我还有一个问题,我可以使用lme4中的方法评估随机效应和固定效应,换句话说就是比较不同的模型吗?

2
我会这么说,但我不知道是否有任何正式和/或同行评审的意见……
Ben Bolker

谢谢!这也是我的问题。快速跟进:与您的示例(一个因素有4个级别)相反,我有一个2 x 2设计,其中每个因素有2个级别(因此总数仍然是4个级别)。我也可以在模型中使用diag(9,4)吗?我对矩阵不熟悉,因此我想仔细检查一下。相关地,为了在我的论文中证明该解决方案的合理性,我应该引用Firth(1993)还是有更直接相关的论文,该论文使用bglmer()实现了您的解决方案?
2016年

2
查看最新答案。
Ben Bolker

2
我认为是这样-总共只需要多少个固定效果参数就可以了。
Ben Bolker
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.