首页 文章

用lmer分组错误

提问于
浏览
2

我有一个具有以下结构的数据框:

> t <- read.csv("combinedData.csv")[,1:7]
> str(t)
'data.frame':   699 obs. of  7 variables:
 $ Awns               : int  0 0 0 0 0 0 0 0 1 0 ...
 $ Funnel             : Factor w/ 213 levels "MEL001","MEL002",..: 1 1 2 2 2 3 4 4 4 4 ...
 $ Plant              : int  1 2 1 3 8 1 1 2 3 5 ...
 $ Line               : Factor w/ 8 levels "a","b","c","cA",..: 2 2 1 1 1 3 1 1 1 1 ...
 $ X                  : int  1 2 3 4 7 8 9 10 11 12 ...
 $ ID                 : Factor w/ 699 levels "MEL_001-1b","MEL_001-2b",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ BobWhite_c10082_241: int  2 2 2 2 2 2 0 2 2 0 ...

我想构建一个混合效果模型 . 我知道在我的数据框中我想要包含的随机效果(漏斗)是一个因素,但它不起作用:

> lmer(t$Awns ~ (1|t$Funnel) + t$BobWhite_c10082_241)
Error: couldn't evaluate grouping factor t$Funnel within model frame: try adding grouping factor to data frame explicitly if possible

事实上,无论我想要包括什么作为随机效果,这都会发生,例如厂:

> lmer(t$Awns ~ (1|t$Plant) + t$BobWhite_c10082_241)
Error: couldn't evaluate grouping factor t$Plant within model frame: try adding grouping factor to data frame explicitly if possible

为什么R给我这个错误?我可以谷歌的另一个答案是,输入的随机效应不是DF中的一个因素 . 但正如str所示,df $ Funnel肯定是 .

1 回答

  • 2

    实际上,为建模函数提供方便的语法并且同时具有强大的实现并不容易 . 大多数软件包作者都假设您使用 data 参数,即使这样也可能发生范围问题 . 因此,如果您使用 DF$col 语法指定变量,则可能会发生奇怪的事情,因为包作者很少花费大量精力使其正常工作,并且不包含大量的单元测试 .

    因此,如果模型函数提供 formula 方法,强烈建议使用 data 参数 . 如果你不遵循那个实践(也有其他模型函数,如 lm ),就会发生奇怪的事情 .

    在你的例子中:

    lmer(Awns ~ (1|Funnel) + BobWhite_c10082_241, data = t)
    

    这不仅有效,而且编写起来也更方便 .

相关问题