为什么我的混合模型中随机效应的方差为零,尽管数据有一些变化?

机器算法验证 r 混合模式 状态 咕噜咕噜 lme4-nlme
2022-01-17 03:24:27

我们使用以下语法运行了混合效应逻辑回归;

# fit model
fm0 <- glmer(GoalEncoding ~ 1 + Group + (1|Subject) + (1|Item), exp0,
             family = binomial(link="logit"))
# model output
summary(fm0)

主题和物品是随机效果。我们得到了一个奇怪的结果,即主题项的系数和标准差都为零;

Generalized linear mixed model fit by maximum likelihood (Laplace
Approximation) [glmerMod]
Family: binomial  ( logit )
Formula: GoalEncoding ~ 1 + Group + (1 | Subject) + (1 | Item)
Data: exp0

AIC      BIC      logLik deviance df.resid 
449.8    465.3   -220.9    441.8      356 

Scaled residuals: 
Min     1Q Median     3Q    Max 
-2.115 -0.785 -0.376  0.805  2.663 

Random effects:
Groups  Name        Variance Std.Dev.
Subject (Intercept) 0.000    0.000   
Item    (Intercept) 0.801    0.895   
Number of obs: 360, groups:  Subject, 30; Item, 12

Fixed effects:
                Estimate Std. Error z value Pr(>|z|)    
 (Intercept)     -0.0275     0.2843    -0.1     0.92    
 GroupGeMo.EnMo   1.2060     0.2411     5.0  5.7e-07 ***
 ---
 Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

 Correlation of Fixed Effects:
             (Intr)
 GroupGM.EnM -0.002

这不应该发生,因为显然不同学科之间存在差异。当我们在 stata 中运行相同的分析时

xtmelogit goal group_num || _all:R.subject || _all:R.item

Note: factor variables specified; option laplace assumed

Refining starting values: 

Iteration 0:   log likelihood = -260.60631  
Iteration 1:   log likelihood = -252.13724  
Iteration 2:   log likelihood = -249.87663  

Performing gradient-based optimization: 

Iteration 0:   log likelihood = -249.87663  
Iteration 1:   log likelihood = -246.38421  
Iteration 2:   log likelihood =  -245.2231  
Iteration 3:   log likelihood = -240.28537  
Iteration 4:   log likelihood = -238.67047  
Iteration 5:   log likelihood = -238.65943  
Iteration 6:   log likelihood = -238.65942  

Mixed-effects logistic regression               Number of obs      =       450
Group variable: _all                            Number of groups   =         1

                                                Obs per group: min =       450
                                                               avg =     450.0
                                                               max =       450

Integration points =   1                        Wald chi2(1)       =     22.62
Log likelihood = -238.65942                     Prob > chi2        =    0.0000

------------------------------------------------------------------------------
        goal |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
   group_num |   1.186594    .249484     4.76   0.000     .6976147    1.675574
       _cons |  -3.419815   .8008212    -4.27   0.000    -4.989396   -1.850234
------------------------------------------------------------------------------

------------------------------------------------------------------------------
  Random-effects Parameters  |   Estimate   Std. Err.     [95% Conf. Interval]
-----------------------------+------------------------------------------------
_all: Identity               |
               sd(R.subject) |   7.18e-07   .3783434             0           .
-----------------------------+------------------------------------------------
_all: Identity               |
                 sd(R.trial) |   2.462568   .6226966      1.500201    4.042286
------------------------------------------------------------------------------
LR test vs. logistic regression:     chi2(2) =   126.75   Prob > chi2 = 0.0000

Note: LR test is conservative and provided only for reference.
Note: log-likelihood calculations are based on the Laplacian approximation.

结果与预期的一样,主题项的系数非零。

最初我们认为这可能与主题词的编码有关,但是将其从字符串更改为整数并没有任何区别。

显然,分析工作不正常,但我们无法确定困难的根源。(注意这个论坛上的其他人也遇到了类似的问题,但这个帖子仍然没有回答问题的链接

2个回答

这在https://bbolker.github.io/mixedmodels-misc/glmmFAQ.html(搜索“奇异模型”)中有详细讨论;这很常见,尤其是当组数较少时(尽管在这种情况下 30 个并不是特别少)。

与许多其他软件包之间的一个区别lme4是,许多软件包,包括lme4的前身nlme,通过在对数尺度上拟合方差来处理方差估计必须为非负的事实:这意味着方差估计不能完全为零,只是非常很小。 lme4相比之下,使用约束优化,因此它可以返回正好为零的值(有关更多讨论,请参见http://arxiv.org/abs/1406.5823第 24 页)。 http://rpubs.com/bbolker/6226给出了一个例子。

特别是,仔细查看来自 Stata 的受试者间方差结果,您的估计值为 7.18e-07(相对于 -3.4 的截距),Wald 标准差为 0.3783434(在这种情况下基本上没用!)和95% CI 列为“0”;这在技术上是“非零”,但它接近于程序将报告的零......

众所周知并且理论上可以证明(例如 Stram 和 Lee Biometrics 1994),方差分量的零分布是零点质量(“尖峰”)和远离零的卡方分布的混合。不出所料(但我不知道它是否被证明/众所周知),即使真实值为零,方差分量估计的抽样分布也经常在零处出现尖峰——参见例如http://rpubs.com/ bbolker/4187为示例,或?bootMer页面中的最后一个示例:

library(lme4)
library(boot)
## Check stored values from a longer (1000-replicate) run:
load(system.file("testdata","boo01L.RData",package="lme4"))
plot(boo01L,index=3) 

在此处输入图像描述

我不认为有问题。模型输出的教训是,尽管受试者表现存在“明显”的变化,但这种受试者变化的程度可以完全或几乎完全通过仅剩余方差项来解释。没有足够的额外主题水平变化来保证添加额外的主题水平随机效应来解释所有观察到的变化。

这样想吧。想象一下,我们正在同样的范式下模拟实验数据。我们设置了参数,以便在逐次试验的基础上存在残余变异,但受试者级别的变异为 0(即,所有受试者具有相同的“真实平均值”加上误差)。现在每次我们从这组参数中模拟数据时,我们当然会发现受试者的表现并不完全相同。有的以低分结束,有的以高分结束。但这一切都只是因为残余试验水平的变化。我们“知道”(通过确定模拟参数)实际上没有任何学科水平的变化。