首页 > 解决方案 > 用于二分变量混合模型的 lme 函数:第 0 级反解中的奇异性,块 1

问题描述

考虑到一些协变量,我正在调整一个固定效应模型。关于模型的规范,其中两个协变量是嵌套的并且具有固定效应。看到下面的错误正在发生。

library(nlme)
library(lme4)

dados$VarCat=as.factor(dados$VarCat)
dados$VarX5=as.factor(dados$VarX5)
dados$VarX6=as.factor(dados$VarX6)

modelANew <- lme(log(Resp)~log(VarX1)+log(VarX2)+(VarX3)+(VarX4)+VarX5/VarX6 ,random = ~1|VarCat, 
                 dados, method="REML")

Error in MEEM(object, conLin, control$niterEM) : 
  Singularity in backsolve at level 0, block 1

变量 X6 是一个二分变量。在我看来,这似乎干扰了模型的收敛或估计。我该如何解决?

标签: rstatisticsregressionlme4mixed-models

解决方案


您的数据不平衡,导致固定效应模型秩不足(或多重共线性,如果您愿意)。当您包含时X5/X6,您表示您要估计 和 的所有组合的X5效果X6。然而:

with(dd, table(VarX6,VarX5))
     VarX5
VarX6   A   B   H IND   Q   S   T
    0   2   9  94 155   0   1  15
    1   0   0   0   0   8   0   0

只有VarX5=Q在水平上被测量过VarX6=1,而在水平上从来没有被测量过VarX6=0。这意味着VarX6变量及其与 的交互VarX5是冗余信息。

正如评论中所指出的,如果您在其中运行lme4::lmer()它,它将自动为您删除多余的列,并显示一条消息:

library(lme4)
m2 <- lmer(log(Resp)~log(VarX1)+log(VarX2)+(VarX3)+(VarX4)+
                     VarX5/VarX6 + (1|VarCat),
                 dd, REML=TRUE)

固定效应模型矩阵秩不足,因此删除 7 列/系数

您可以通过 找出它删除了哪些列attr(getME(m2,"X"), "col.dropped")

或者,如果你适合它lm()(我知道你想适合一个混合模型,但这是一个很好的诊断)你会看到它不会抱怨,但它会自动将所有冗余系数设置为NA

m3 <- lm(log(Resp)~log(VarX1)+log(VarX2)+(VarX3)+(VarX4)+
                     VarX5/VarX6, data=dd)
coef(m3)
    (Intercept)      log(VarX1)      log(VarX2)           VarX3           VarX4 
     0.46921538      0.79476848     -0.45769296      1.85386835     -2.78321092 
         VarX5B          VarX5H        VarX5IND          VarX5Q          VarX5S 
    -0.04677216      0.21896140      0.24584351     -2.00226719      0.32677006 
         VarX5T   VarX5A:VarX61   VarX5B:VarX61   VarX5H:VarX61 VarX5IND:VarX61 
     0.17474369              NA              NA              NA              NA 
  VarX5Q:VarX61   VarX5S:VarX61   VarX5T:VarX61 
             NA              NA              NA 

这个问题与LME 模型中第 0 级块 1 的逆解中的奇异性非常相似。当您有这样的不平衡设计时,“如何处理它”不是一个简单答案的问题。

  • 您可以自己从模型中删除术语(例如,在这种情况下,您无法真正估计任何关于VarX6的,因为它与 完全多余VarX5,因此VarX5/VarX6在您的模型中替换为VarX5
  • 您可以使用lmer可以自动为您删除条款的功能

不能做的是实际估计VarX5/VarX6——你的设计只是不包含这些信息。这有点像说“我想估计汽车颜色对速度的影响,但我只测量了红色汽车”。


推荐阅读