错误:无效的分组因素规范

6
我正在尝试使用glmer建模珊瑚招募,并在重新缩放变量后运行模型时出现错误“ Error:Invalid grouping factor specification,Site”。非常感谢您的帮助。
m1<-glmer(Tot~cs.Tile(Tile)+cs.Coral_T(Coral_T)+cs.Sponge(Sponge)+
cs.Turf(Turf)+cs.Acro(Acro)+cs.Por(Por)+cs.Poc(Poc)+
cs.Mer(Mer)+cs.Agar(Agar)+cs.Fav(Fav)+
cs.Den(Den)+cs.Sid(Sid)+cs.CCA(CCA)+cs.Soft(Soft)+
  (1|Site), 
family=poisson, data=data)

我有16个变量和368个观测值:
str(data)
'data.frame':   368 obs. of  16 variables:
 $ Site   : Factor w/ 25 levels "Eight","Eighteen",..: 10 10 10 10 10 10 10 10 10 10 ...
 $ Tile   : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Tot    : int  28 24 17 13 29 19 6 13 14 4 ...
 $ Coral_T: num  32.6 32.6 32.6 32.6 32.6 ...
 $ Sponge : num  0.206 0.206 0.206 0.206 0.206 ...
 $ Turf   : num  32.3 32.3 32.3 32.3 32.3 ...
 $ Acro   : num  3.45 3.45 3.45 3.45 3.45 ...
 $ Por    : num  1.15 1.15 1.15 1.15 1.15 ...
 $ Poc    : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Mer    : num  0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 ...
 $ Agar   : num  24.2 24.2 24.2 24.2 24.2 ...
 $ Fav    : num  1.02 1.02 1.02 1.02 1.02 ...
 $ Den    : num  1.18 1.18 1.18 1.18 1.18 ...
 $ Sid    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ CCA    : num  0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 ...
 $ Soft   : num  0 0 0 0 0 0 0 0 0 0 ...

你能解释一下你的符号表示吗?括号是指代替变量,例如你要么使用 Tile 要么使用 cs.Tile,其中后者是 Tile 的居中缩放版本吗?我无法立即看出这可能发生的原因。我们可以看看居中缩放的数据框中有什么吗?我猜可能是你忘记在居中缩放的数据框中包含 Site 了... ??? - Ben Bolker
1
您可以提供一个 [mcve],或者更好的是,您可以提供一个最小化、完整、可重现的示例。 - Ben Bolker
1个回答

11

在对变量重新缩放后,我在调用update.merMod时遇到了相同的错误。经过查找traceback()堆栈并使用缩放和未缩放数据集进行搜索,我发现问题出现在模型框架的创建上,原因是我的缩放和居中算法未能考虑原始变量中的NA值。我最初的居中/缩放操作如下:

csData <- data %>% mutate(Var1 = (Var1 - mean(Var1) / sd(Var1),
                          Var2 = (Var2 - mean(Var2) / sd(Var2))

其中一个变量中有一些NA值,以这种方式进行缩放和居中处理导致csData中出现了一个空(全部为NA)向量。这随后(并且悄无声息地)导致从model.frame()返回一个空框架。尽管空框架是导致错误的原因,但它(错误)是由于我在重新缩放期间对变量中的NA值的(误)处理引起的。对于对sd()mean()的调用,设置na.rm=TRUE解决了我的问题:

csData <- data %>% mutate(Var1 = (Var1 - mean(Var1, na.rm=TRUE) / sd(Var1, na.rm=TRUE),
                          Var2 = (Var2 - mean(Var2, na.rm=TRUE) / sd(Var2, na.rm=TRUE))

同时解决了我的问题。我对连续预测变量进行了缩放,没有意识到其中一列有一些NA值。 - dmt
我使用glmmTMB时遇到了相同的错误,原因是我的数据中出现了一些NAs - EcologyTom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接