当嵌套隐含在数据中时,是否需要指定嵌套随机效果?

时间:2019-03-26 01:04:01

标签: r statistics lme4

我正在使用包含嵌套组的数据集,并且想知道如何正确指定模型。

数据是组是否同意“代码”的二进制指标。对照条件下分为3组,治疗条件下分为3组。

我正在尝试对治疗条件中存在的各种规范的概率进行建模。

一些玩具数据:

library(lme4)

Data <- rbind(data.frame(Code = rep(LETTERS[1:5],6),
                   Condition = rep("Control", 30),
                   Trial = rep(c(1:3), each = 5), 
                   Group = rep(letters[1:3],10),
                   Present = sample(0:1, 30, replace = T)),data.frame(Code = rep(LETTERS[1:5],6),
                   Condition = rep("Treatment", 30),
                   Trial = rep(c(1:3), each = 5),
                   Group = rep(letters[4:6],10),
                   Present = sample(0:1, 30, replace = T)))

给出数据中固有的嵌套,我可以将模型指定为:

Mod1 <- glmer(Present ~ Condition * Code + (1|Group), family=binomial(link = "logit"), data = Data)

还是我需要使用类似以下内容来指定嵌套:

Mod2<- glmer(Present ~ Condition * Code + (1|Condition/Group), family=binomial(link = "logit"), data = Data)

我不确定是哪个模型捕获了设计,并且看到过关于/:的使用的相互矛盾的帖子,因此我不清楚是否正确指定了嵌套(在除了是否有必要)。

示例数据很小,因此第二个模型给出了奇异拟合警告。我不具备数据生成/模拟技能,因此也欢迎提供有关创建更好的示例集的建议!

1 个答案:

答案 0 :(得分:0)

不,所有嵌套(在编码意义上)所做的都是创建两个术语,一个是第一术语,另一个是第一和第二术语的相互作用。交互所需要的就是每个唯一组合的唯一标识符。

也就是说,A / B产生A + A:B,如果您有第三个变量C,例如paste(A,B),那么这也将等效于A + C。

在您的情况下,“条件/组”减少为“条件+条件:组”,这相当于“条件+组”。因此,这就是您的两个模型不相同的原因,第二个模型包含对Condition的随机效应,而第一个模型则不。

回到我的第一句话,重要的是区分设计中的嵌套和编码中的嵌套;在您的情况下,从设计的角度讲,组嵌套在Condition中,因为每个组的Condition的每个级别都不相同,但是您可以通过为每个组赋予唯一的标识符来在计算机中强制执行此操作,因此您无需嵌套在代码。