首页 > 解决方案 > 错误:无效的分组因子规范,主题

问题描述

我正在尝试在 R 中运行多级逻辑回归模型。

这是我的模型:

modA <- glmer(Past_01 ~ Scene_01 + Speech_01 + (1| Subject), data = df2, 
        family = binomial, control = glmerControl(optimizer = "bobyqa"),
        nAGQ = 10)

当我运行它时,我收到以下信息:

错误:无效的分组因子规范,主题。

有人可以告诉我(a)这个错误是什么意思吗?和/或 (b) 解决方案是什么?

虽然我注意到有人提出了相同的问题,但我还没有找到充分解决问题的答案。

这些是我到目前为止所采取的步骤,基于以前相关线程的建议。

  1. 在使用 na.rm 运行模型之前,我删除了 NA
  2. 我使用 na.action=na.omit 删除了 NA。
  3. 我仔细检查了主题的结构(有问题的分组变量),这是一个因素。Past、Scene 和 Speech 都是整数。

任何指导将不胜感激!

这是@NelsonGon 要求的我的数据样本。

使用输入:

dput(head(df2,50))

我收到以下输出:

structure(list(Subject = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), Trial = c(1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L), Spont = 
c(NA, NA, 3L, NA, NA, NA, NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, 
NA, 5L, NA, NA, NA, NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA, NA, NA), 
Speech_01 = c(NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, 
NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, NA, 
NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, 
NA, NA), Scene_01 = c(NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, 1L, 
NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, 1L, NA, 
NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, NA, 
NA, NA, NA, NA), VisElem_01 = c(NA, NA, NA, 0L, NA, NA, NA, NA, NA, 
NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA, NA, 
NA, 0L, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, 
1L, NA, NA, NA, NA, NA, NA), AudElem_01 = c(NA, NA, NA, NA, 0L, NA, 
NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, NA, 
NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, 
NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA), Past_01 = c(NA, NA, NA, NA, 
NA, 0L, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, 
0L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, 0L, 
NA, NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA), Pres_01 = c(NA, NA, 
NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, 
NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, 
NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA), Fut_01 = 
c(NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, 0L, NA, 
NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, 
NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA)), 
.Names = c("Subject", "Trial", "Spont", "Speech_01", "Scene_01", 
"VisElem_01", "AudElem_01", "Past_01", "Pres_01", "Fut_01"), 
row.names = c(NA, 50L), class = "data.frame")

这是我使用 str(df2) 的数据结构。

'data.frame':   28800 obs. of  10 variables:
 $ Subject   : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Trial     : int  1 1 1 1 1 1 1 1 2 2 ...
 $ Spont     : int  NA NA 3 NA NA NA NA NA NA NA ...
 $ Speech_01 : int  NA NA NA NA 0 NA NA NA NA NA ...
 $ Scene_01  : int  NA NA NA 1 NA NA NA NA NA NA ...
 $ VisElem_01: int  NA NA NA 0 NA NA NA NA NA NA ...
 $ AudElem_01: int  NA NA NA NA 0 NA NA NA NA NA ...
 $ Past_01   : int  NA NA NA NA NA 0 NA NA NA NA ...
 $ Pres_01   : int  NA NA NA NA NA NA 1 NA NA NA ...
 $ Fut_01    : int  NA NA NA NA NA NA NA 1 NA NA ...

数据类型 Subject 是参与者 ID。Spont 是一个连续变量。其他变量(Scene_01、Speech_01、VisElem_01、AudElem_01、Past_01、Pres_01 和 Fut_01)是虚拟编码的,值分别为 1 和 0(分别表示是和否)。在模型中,我编辑了变量以匹配数据框中的实际变量名称。

注意 NA 是在虚拟编码步骤中生成的,我在现有列(来自原始数据集)上使用 dyplr::spread 函数从该现有列的唯一值中创建新列。如果您熟悉 dyplr::spread 函数,您可能已经注意到它会分散数据并产生一堆 NA。

标签: rlme4

解决方案


推荐阅读