如何处理线性混合模型(lme4)中的奇异拟合?

Ira*_*da 2 r lme4 mixed-models

我正在运行几个线性混合模型,以研究将鸟巢作为随机变量的鸟类。问题是,在其中一些模型中,我得到了所谓的“奇异拟合”:我的嵌套随机变量的方差和st误差为0.00。

一些背景:我正在与野生鸟类合作,以观察在嘈杂环境中生活对某些氧化应激参数的影响。为此,我们为每个巢中的每个雏鸟取了一份血液样本,以做实验室的工作。由于血液样本有限,无法针对每个雏鸟都测量某些氧化应激参数。

model <- lmer(antioxidant_capacity~age+sex+clutch+zone+(1|nestID),
 data=data, contrasts=list(sex=contr.sum, zon=contr.sum, clutch=contr.sum))
Run Code Online (Sandbox Code Playgroud)

然后我得到:

singular fit
Run Code Online (Sandbox Code Playgroud)

这是表:

REML criterion at convergence: 974.3

Scaled residuals: 
 Min       1Q   Median       3Q      Max 
-2.72237 -0.61737  0.06171  0.69429  2.88008 

Random effects:
Groups   Name        Variance     Std.Dev.
nestID (Intercept)      0          0.00   
Residual               363        19.05   
Number of obs: 114, groups:  nido_mod, 46

Fixed effects:
        Estimate      Std. Error  df        t value Pr(>|t|)    
(Intercept) 294.5970    36.8036  109.0000   8.005   1.41e-12 ***
age          -0.2959     3.0418  109.0000  -0.097   0.922685    
clutch1      -0.5242     2.0940  109.0000  -0.250   0.802804    
sex1          2.3167    1.8286 109.0000     1.267   0.207885    
zone1         6.2274     1.7958  109.0000   3.468   0.000752 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
      (Intr) age  clutch1 sex1 
age  -0.999                     
clutch1   0.474 -0.465              
sex1      0.060 -0.054 -0.106       
zone1    -0.057  0.061 -0.022  0.058
convergence code: 0
singular fit
Run Code Online (Sandbox Code Playgroud)

我已经读过有关奇点问题的信息,如果我了解得很好,那么奇点与过度拟合有关。难道是由于某些响应变量我的巢只有一个雏鸟,而巢却有更多雏鸟?我该如何解决?有什么建议吗?

非常感谢。

小智 7

与其他线性模型一样,固定效应中的共线性可能导致奇异拟合。那将需要您通过删除条款来修改模型。但是在lmer中,当估计随机效应方差非常接近零并且(非常宽松地)数据不足以拖动时,也可以在非常简单的模型中触发该警告(或“边界(奇异)拟合”警告)。估计远离零起始值。

两种方法的正式答案大致相似。删除估计为零的字词。至少在您知道哪个术语导致了问题之前,这仍然是明智的。但是有时候,可以忽略不计的方差是合理的,但是您希望将其保留在模型中。例如,因为您正在故意寻找可能存在较小差异的区间,或者可能正在执行多个类似实验,并且希望始终提取所有差异。如果您确定发生了什么,可以通过lmerControl禁止显示这些警告,可以将其设置为不使用相关测试。例如,您可以包括

control=lmerControl(check.conv.singular = .makeCC(action = "ignore",  tol = 1e-4))
Run Code Online (Sandbox Code Playgroud)

在您的电话会议中。这保留了默认公差(makeCC需要),但是抑制了奇异拟合测试。(默认值为action =“ warning”,它将运行测试并发出警告)。

  • 只是一点直觉,并不一定是最终的答案。@Roasty247,如果方差项估计接近于零,它或多或少告诉我们可以忽略依赖结构。在像您这样的情况下,说这一点很可怕,因为您知道存在特定的依赖结构。但接近零的估计值有效地告诉您这些数字实际上并没有以这种方式显示依赖性,并且对于手头的数据,可以忽略它。 (3认同)
  • 我有一个类似的问题 - 估计随机效应方差接近零,导致奇异拟合警告。我的随机效应专门用于控制来自同一个人的某些数据点的非独立性,即 Individual_ID 是我的随机效应。如果我要从模型中删除这种随机效应,这不等同于伪复制吗?尽管估计值为零,这是否是将随机效应留在模型中的理由? (2认同)

小智 0

您真的对模型中的每个固定效应是否产生影响感兴趣吗?例如,年龄或性别可以解释一些变化,但也许您可以将其视为随机效应而不是固定效应。将其更改为随机效应(如果这是合理的)可能会解决过度分散的问题。

我对奇点问题的解释(当然可能是错误的)是模型的每种组合只有一个观察/测量。因此,您可能没有足够的观察结果来将所有这些变量包含为固定效应。