【问题标题】:lme function for mixed models for dichotomous variables: Singularity in backsolve at level 0, block 1用于二分变量混合模型的 lme 函数:第 0 级反解中的奇异性,块 1
【发布时间】:2021-02-12 11:33:09
【问题描述】:

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

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 是一个二分变量。在我看来,这似乎干扰了模型的收敛或估计。我该如何解决?

【问题讨论】:

  • 看起来在使用 lmer 时可以正常工作:lmer(log(Resp)~log(VarX1)+log(VarX2)+(VarX3)+(VarX4)+VarX5/VarX6 + (1 | VarCat), data=dados)
  • 我可能应该将其作为stackoverflow.com/questions/50505290/… 的副本关闭(但我已经投票关闭/迁移到 CrossValidated)

标签: r statistics regression lme4 mixed-models


【解决方案1】:

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

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 的交互是冗余信息。

正如 cmets 中所指出的,如果您在 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 

这个问题与Singularity in backsolve at level 0, block 1 in LME model 非常相似。当您有这样的不平衡设计时,“如何处理”不是一个简单的问题。

  • 您可以自己从模型中删除项(例如,在这种情况下,您无法真正估计有关 VarX6 的任何信息,因为它与 VarX5 完全多余,因此将模型中的 VarX5/VarX6 替换为 VarX5 .
  • 您可以使用诸如lmer 之类的函数来自动为您删除字词

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2021-12-25
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多