带有 Error() 的 aov() 是否与 R 中 lme4 包的 lmer() 相同?

机器算法验证 r 方差分析 混合模式 重复测量 lme4-nlme
2022-03-19 07:26:12

以下2个模型真的一样吗?

> library(lme4)
> library(lmerTest)
> lmod = lmer(Reaction ~ Days + (Days|Subject), data=sleepstudy)    
> summary(lmod)
Linear mixed model fit by REML 
t-tests use  Satterthwaite approximations to degrees of freedom ['merModLmerTest']
Formula: Reaction ~ Days + (Days | Subject)
   Data: sleepstudy

REML criterion at convergence: 1743.6

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.9536 -0.4634  0.0231  0.4634  5.1793 

Random effects:
 Groups   Name        Variance Std.Dev. Corr
 Subject  (Intercept) 612.09   24.740       
          Days         35.07    5.922   0.07
 Residual             654.94   25.592       
Number of obs: 180, groups:  Subject, 18

Fixed effects:
            Estimate Std. Error      df t value             Pr(>|t|)    
(Intercept)  251.405      6.825  17.000  36.838 < 0.0000000000000002 ***
Days          10.467      1.546  17.000   6.771           0.00000326 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
     (Intr)
Days -0.138

和:

> laov = aov(Reaction ~ Days + Error(Subject/Days), data=sleepstudy)   
> summary(laov)

Error: Subject
          Df Sum Sq Mean Sq F value Pr(>F)
Residuals 17 250618   14742               

Error: Subject:Days
          Df Sum Sq Mean Sq F value     Pr(>F)      
Days       1 162703  162703   45.85 0.00000326 ***  
Residuals 17  60322    3548                       
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Error: Within
           Df Sum Sq Mean Sq F value Pr(>F)
Residuals 144  94312   654.9               

两者都显示了 Days 变量的相似 P 值。两种方法有什么区别?

1个回答

这两个模型给出相同的p值,并且F=45.85=6.77=t,是模型确实相同的强有力的先验证据。两者最终都适合模型

μit=β0+b0,i+(β1+b1,i)tYiNormal(μit,σ2)bMVN(0,Σ)

一般来说,aov()它更简单、更快,但只适用于更简单的模型子集。

请注意,虽然nlme::lme也可以拟合此模型,并获得相同的统计量,但在这种情况下,其猜测正确分母自由度的启发式方法是不正确的(它得到 161 而不是 17):F

library(nlme)
anova(lme(Reaction ~ Days,
                random = ~Days|Subject, sleepstudy))
##             numDF denDF   F-value p-value
## (Intercept)     1   161 1454.0766  <.0001
## Days            1   161   45.8534  <.0001

@amoeba 正确地指出

一个非常重要的警告是,这两个模型只是因为Days被视为数值变量而重合。如果它是一个分类因素,那么aovwithError(Subject/Days)lmerwith(Days|Subject)将是两个不同的模型。要获得 [在这种情况下] 的 [the]lmer等价物,aov可能需要使用(1|Subject)+(1|Subject:Days)[or equivalent (1|Subject/Days)]