(准)- 根据逻辑 GLMM 中的随机效应完全分离

(Quasi)-Complete separation according to a random effect in logistic GLMM

我在使用 lme4 拟合二元逻辑 GLMM 模型时遇到收敛警告和非常大的组方差。我想知道这是否可能与根据随机效应的(准)完全分离有关,即许多个体(随机 effect/grouping 变量)在因变量中只有 0 导致个体差异低的事实?如果这可能是一个问题,是否有其他建模策略来处理此类情况?

更准确地说,我正在研究在给定年龄观察到一个人处于给定状态(children 而离开他们 parents)的机会。换句话说,我对每个人(通常是 50 个)进行了多次观察,具体说明在给定年龄是否观察到该人处于这种状态。这是一个例子:

id  age status
 1   21      0
 1   22      0
 1   23      0
 1   24      1
 1   25      0
 1   26      1
 1   27      0
 ...

观察到状态 1 的机会非常低(在 1% 到 5% 之间,具体取决于个案)并且我有很多观察结果(150'000 个观察结果和 3'000 个个体)。

使用 glmer 指定 ID(个人)作为随机效应并包括一些解释因素(年龄类别、父母教育程度和观察状态的时期)来拟合模型。我收到以下收敛警告(使用 nAGQ=0 时除外)和非常大的组方差(此处超过 25)。

"Model failed to converge with max|grad| = 2.21808 (tol = 0.001, component 2)"
"Model is nearly unidentifiable: very large eigenvalue\n - Rescale variables?"

这里是得到的模型

    AIC      BIC   logLik deviance df.resid
  9625.0   9724.3  -4802.5   9605.0   151215

Scaled residuals:
   Min     1Q Median     3Q    Max
-2.529 -0.003 -0.002 -0.001 47.081

Random effects:
 Groups Name        Variance Std.Dev.
 id     (Intercept) 28.94    5.38
Number of obs: 151225, groups:  id, 3067

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)
(Intercept)    -10.603822   0.496392 -21.362  < 2e-16 ***
agecat[18,21)   -0.413018   0.075119  -5.498 3.84e-08 ***
agecat[21,24)   -1.460205   0.095315 -15.320  < 2e-16 ***
agecat[24,27)   -2.844713   0.137484 -20.691  < 2e-16 ***
agecat[27,30)   -3.837227   0.199644 -19.220  < 2e-16 ***
parent_educ     -0.007390   0.003609  -2.048   0.0406 *
period_cat80 s   0.126521   0.113044   1.119   0.2630
period_cat90 s  -0.105139   0.176732  -0.595   0.5519
period_cat00 s  -0.507052   0.263580  -1.924   0.0544 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) a[18,2 a[21,2 a[24,2 a[27,3 prnt_d pr_80' pr_90'
agct[18,21) -0.038
agct[21,24) -0.006  0.521
agct[24,27)  0.006  0.412  0.475
agct[27,30)  0.011  0.325  0.393  0.378
parent_educ -0.557  0.059  0.087  0.084  0.078
perd_ct80 s -0.075 -0.258 -0.372 -0.380 -0.352 -0.104
perd_ct90 s -0.048 -0.302 -0.463 -0.471 -0.448 -0.151  0.732
perd_ct00 s -0.019 -0.293 -0.459 -0.434 -0.404 -0.138  0.559  0.739

您可以尝试通过 nloptroptimx 包提供的几个不同的优化器之一。 afex 包中甚至还有一个 allFit 函数可以为您尝试(请参阅 allFit 帮助文件)。例如:

all_mod <- allFit(exist_model)

这将让你检查你的估计有多稳定。 This 指向有关渐变主题的更多资源。

如果您担心完全分离,请参阅 here for Ben Bolker's answer to use the bglmer function from the blme 包。它的运行方式与 glmer 非常相似,但允许您将先验添加到模型规范中。