4

我正在尝试使用 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”和其他答案,但我仍然不知道哪里出错了。

4

3 回答 3

4

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

于 2018-08-11T03:29:13.363 回答
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
于 2013-09-25T23:03:56.490 回答
0

从语法上讲,这是正确的。您想拟合具有动物随机效应的随机截距模型。你有 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编码。尝试重新编码为其他值。

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

于 2013-09-25T22:34:45.490 回答