为什么drop1忽略混合模型的线性项?

时间:2016-12-30 20:55:57

标签: r linear-regression mixed-models

我有六个固定因素:A, B, C, D, EF,以及一个随机因素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

1 个答案:

答案 0 :(得分:4)

因为这是drop1的工作方式(它并非特定于混合模型 - 您会发现这种行为适用于符合lm的常规线性模型)。来自?drop1

  

在考虑添加或删除术语时,会尊重层次结构:二阶交互中包含的所有主效应必须保留,依此类推。

我在this CrossValidated post

中详细讨论了这个问题
  

统计上棘手的部分是,在包含更高级别交互的模型中测试较低级别的交互(取决于您与谁交谈)要么(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