【问题标题】:invalid grouping factor specification in lmer modellmer模型中的无效分组因子规范
【发布时间】:2013-09-25 22:03:37
【问题描述】:

我正在尝试使用 lmer 函数运行混合效果模型。我的实验包括使用一些相同个体在不同温度下的代谢率(一些缺失数据)。文本文件的结构如下所示:

> str(data.by.animal)
'data.frame':   18 obs. of  17 variables:
 $ animal: Factor w/ 18 levels "08_03","08_07",..: 17 6 5 10 15 14 11 12 16 9 ...
 $ temp  : int  2 0 -2 -4 -6 -8 -10 -12 -14 -16 ...
 $ X2    : num  0.0129 0.0176 0.0132 NA 0.0144 0.0133 0.0101

当我运行脚本 [model_1 <- lmer(X2 + X0 + X.2 + X.4 + X.6 + X.8 + X.10 + X.12 + X.14 + X.16 + X.18 + X.20 + X.22 + X.24 + X.26 ~ temp + (1 | animal), data.by.animal)] 时,我得到以下信息:[Error in FUN(X[[1L]], ...) : Invalid grouping factor specification, animal] 尽管在这里咨询了“The R Book”和其他答案,但我仍然不知道哪里出错了。

【问题讨论】:

  • 很抱歉,如果您真的使用了这个模型规范,我觉得这个模型规范没有任何意义。 lmer 需要在~ 左侧的单个 响应变量...这真的是您尝试过的吗?
  • 对@dhd 的评论,其作为答案发布的问题/评论已被删除。您可以将此作为新问题发布。我唯一能看到在你的公式或数据集中看起来可疑的是我们可以看到的所有time2 的值都是NA ...当你重新发布时,你能不能也显示@987654328 的结果@(将计算NAs 的数量)?还是droplevels(na.omit(test))的结构?

标签: r lmer


【解决方案1】:

我在使用 lmer 时也遇到了这个问题。当我检查我的数据时,我发现几个变量的值是 NA (由于重新调整)。排除这些变量后,问题就解决了。

【讨论】:

  • 这也适用于我...请注意,除了随机效应因素之外,NA 还可以是固定效应变量。
【解决方案2】:

正如我在评论中所说,这个模型规范没有意义——lmer 需要在~ 的左侧有一个响应变量。它没有经过测试,因为这不是我们认为任何人犯的错误......(你想做什么??你想对每个 X* 变量运行单独的分析吗?)

我可以或多或少地重现这一点,只要左侧的元素之一是一个因素......

library(lme4)

有些东西,但我不确定是什么...

lmer(Reaction + Days ~ (1| Subject), sleepstudy)

它接近于lmer(Reaction ~ (1|Subject), sleepstudy)(我可能已经预料到了——默默地忽略了 LHS 的第二个术语?),但不完全相同......

LHS 上的因子是允许的,尽管它们没有多大意义(它们可能只是被转换为数字):

lmer(factor(Days) ~ (1| Subject), sleepstudy)

如果我把它们都放进去,我会得到错误:

lmer(Reaction + factor(Days) ~ (1| Subject), sleepstudy)
## Error in FUN(X[[1L]], ...) : 
##   Invalid grouping factor specification, Subject
## In addition: Warning message:
## In Ops.factor(Reaction, factor(Days)) : + not meaningful for factors

【讨论】:

  • 除非 OP 隐瞒了有关 X.is 编码方式的信息,否则公式的 LHS 没有任何因素。虽然错误是相同的,但我们需要知道 X.is 是否是因素,然后才能确定这是这里的问题。无论出于何种原因,R 都会将在公式对象的 LHS 上添加的变量解释为单个总和。用一个简单的 lm 对象试试这个,你会发现 I(y1 + y2) ~ x1 的输出与 y1 + y2 ~ x1 相同。与在 RHS 上添加变量相比,R 将它们解析为设计矩阵的唯一列。
【解决方案3】:

从语法上讲,这是正确的。您想拟合具有随机动物效应的随机截距模型。你有 18 个观察值,而动物是一个有 17 个水平的因子,所以基本上最多只有 1 个重复测量。在这种情况下,混合模型不会收敛。我敦促您重新考虑这里的分析。

至于报错,lme4包源码在这里抛出错误:

    ## convert grouping variables to factors as necessary
    for (i in all.vars(x[[3]])) {
        frloc[[i]] <- factor(frloc[[i]])
    }
    ff <- eval(substitute(factor(fac), list(fac = x[[3]])), frloc)
    if (all(is.na(ff)))
        stop("Invalid grouping factor specification, ",
             deparse(x[[3]]))

您可能需要考虑animal 的编码方式。尝试重新编码为其他值。

你能在你的shell抛出错误后打印traceback()的输出吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多