我有六个固定因素:A, B, C, D, E
和F
,以及一个随机因素R
。我想使用语言R来测试线性项,纯二次项和双向交互。所以,我构建了完整的线性混合模型,并试图用drop1
测试它的术语:
full.model <- lmer(Z ~ A + B + C + D + E + F
+ I(A^2) + I(B^2) + I(C^2) + I(D^2) + I(E^2) + I(F^2)
+ A:B + A:C + A:D + A:E + A:F
+ B:C + B:D + B:E + B:F
+ C:D + C:E + C:F
+ D:E + D:F
+ E:F
+ (1 | R), data=mydata, REML=FALSE)
drop1(full.model, test="Chisq")
似乎drop1
完全忽略了线性术语:
Single term deletions
Model:
Z ~ A + B + C + D + E + F + I(A^2) + I(B^2) + I(C^2) + I(D^2) +
I(E^2) + I(F^2) + A:B + A:C + A:D + A:E + A:F + B:C + B:D +
B:E + B:F + C:D + C:E + C:F + D:E + D:F + E:F + (1 | R)
Df AIC LRT Pr(Chi)
<none> 127177
I(A^2) 1 127610 434.81 < 2.2e-16 ***
I(B^2) 1 127378 203.36 < 2.2e-16 ***
I(C^2) 1 129208 2032.42 < 2.2e-16 ***
I(D^2) 1 127294 119.09 < 2.2e-16 ***
I(E^2) 1 127724 548.84 < 2.2e-16 ***
I(F^2) 1 127197 21.99 2.747e-06 ***
A:B 1 127295 120.24 < 2.2e-16 ***
A:C 1 127177 1.75 0.185467
A:D 1 127240 64.99 7.542e-16 ***
A:E 1 127223 48.30 3.655e-12 ***
A:F 1 127242 66.69 3.171e-16 ***
B:C 1 127180 5.36 0.020621 *
B:D 1 127202 27.12 1.909e-07 ***
B:E 1 127300 125.28 < 2.2e-16 ***
B:F 1 127192 16.60 4.625e-05 ***
C:D 1 127181 5.96 0.014638 *
C:E 1 127298 122.89 < 2.2e-16 ***
C:F 1 127176 0.77 0.380564
D:E 1 127223 47.76 4.813e-12 ***
D:F 1 127182 6.99 0.008191 **
E:F 1 127376 201.26 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
如果我从模型中排除互动:
full.model <- lmer(Z ~ A + B + C + D + E + F
+ I(A^2) + I(B^2) + I(C^2) + I(D^2) + I(E^2) + I(F^2)
+ (1 | R), data=mydata, REML=FALSE)
drop1(full.model, test="Chisq")
然后测试线性项:
Single term deletions
Model:
Z ~ A + B + C + D + E + F + I(A^2) + I(B^2) + I(C^2) + I(D^2) +
I(E^2) + I(F^2) + (1 | R)
Df AIC LRT Pr(Chi)
<none> 127998
A 1 130130 2133.9 < 2.2e-16 ***
B 1 130177 2181.0 < 2.2e-16 ***
C 1 133464 5467.6 < 2.2e-16 ***
D 1 129484 1487.9 < 2.2e-16 ***
E 1 130571 2575.0 < 2.2e-16 ***
F 1 128009 12.7 0.0003731 ***
I(A^2) 1 128418 422.2 < 2.2e-16 ***
I(B^2) 1 128193 197.4 < 2.2e-16 ***
I(C^2) 1 129971 1975.1 < 2.2e-16 ***
I(D^2) 1 128112 115.6 < 2.2e-16 ***
I(E^2) 1 128529 533.0 < 2.2e-16 ***
I(F^2) 1 128017 21.3 3.838e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
答案 0 :(得分:4)
因为这是drop1
的工作方式(它并非特定于混合模型 - 您会发现这种行为适用于符合lm
的常规线性模型)。来自?drop1
:
中详细讨论了这个问题在考虑添加或删除术语时,会尊重层次结构:二阶交互中包含的所有主效应必须保留,依此类推。
统计上棘手的部分是,在包含更高级别交互的模型中测试较低级别的交互(取决于您与谁交谈)要么(i)难以正确执行,要么(ii)只是简单愚蠢(对于后一个位置,见比尔维纳布尔斯"exegeses on linear models"的第5部分。这方面的标题是边缘性原则。至少,低阶项的含义敏感地取决于模型中对比度的编码方式(例如治疗与中点/总和为零)。我的默认规则是,如果您不确定为什么这可能是一个问题,那么您就不应该违反边际原则。
但是,正如Venables在链接文章中实际描述的那样,如果你愿意,可以让R违反边缘性(第15页):
令我高兴的是,我看到因素术语之间的边缘限制默认受到尊重,学生不会在逻辑上滑落的“III型平方和”路径中被引导。我们讨论为什么没有显示主要效果,它是一个有用的教程点。
当然,具有讽刺意味的是,如果只有人们了解他们的真实情况以及如何获得这些正方形,那么他们可以获得第三类正方形。如果对
drop1
的调用包含任何公式作为第二个参数,则对应于所有非截距项的模型矩阵的部分将从模型中省略 seriatim ,从而进行某种测试一个主要的影响...提供你使用了具有零和列的对比矩阵,它们将是独一无二的,它们就是臭名昭着的'Type III of of square'。但是,如果你使用
contr.treatment
对比,那么列的总和不是零,你会得到废话。对这种情况应该是任意的事物的这种敏感性应该足以提醒任何人注意事情正在做的事情。
换句话说,使用scope = . ~ .
会强制drop1
忽略边缘性。 您这样做需要您自担风险 - 您应该能够自己向自己解释当您按照此程序进行实际测试时...
例如:
set.seed(101)
dd <- expand.grid(A=1:10,B=1:10,g=factor(1:10))
dd$y <- rnorm(1000)
library(lme4)
m1 <- lmer(y~A*B+(1|g),data=dd)
drop1(m1,scope=.~.)
## Single term deletions
##
## Model:
## y ~ A * B + (1 | g)
## Df AIC
## <none> 2761.9
## A 1 2761.7
## B 1 2762.4
## A:B 1 2763.1