anova()命令对lmer模型对象有什么作用?


30

希望这是一个问题,在这里有人可以为我解答,该问题的本质是根据拟合的混合效应模型lmer(来自lme4 R软件包)分解平方和。

首先,我应该说我已经意识到使用这种方法的争议,在实践中,我更有可能使用自举LRT来比较模型(如Faraway,2006年所建议)。但是,我对如何复制结果感到困惑,因此出于我的理智,我想在这里问一下。

基本上,我正在使用lme4包装所适合的混合效果模型。我知道您可以使用该anova()命令来总结按顺序测试模型中的固定效果。据我所知,这就是Faraway(2006)所说的“预期均方”方法。我想知道的是平方和如何计算?

我知道我可以从特定模型中获取估计值(使用coef()),假设它们是固定的,然后使用有和没有感兴趣因素的模型残差平方和进行测试。这对于包含单个主题内因子的模型来说是很好的。但是,在实施分割图设计时,平方和值I get等于R通过aov()适当的Error()名称使用R生成的值。但是,尽管F比率相同,但这与命令在模型对象上产生的平方和并不anova()相同。

当然这是完全有意义的,因为Error()在混合模型中不需要分层。但是,这必须意味着在混合模型中对平方和进行某种程度的惩罚,以提供适当的F比率。如何实现的?模型如何以某种方式校正图间平方和而不校正图内平方和。显然,这是通过为不同效果指定不同的误差值而实现的经典分割图方差分析所必需的,那么混合效果模型如何做到这一点?

基本上,我希望能够自己复制anova()应用于lmer模型对象的命令的结果,以验证结果和我的理解,但是,目前,我可以针对常规的受试者内部设计实现此目标,而对于拆分主体则无法实现。情节设计,我似乎无法找出为什么是这种情况。

举个例子:

library(faraway)
library(lme4)
data(irrigation)

anova(lmer(yield ~ irrigation + variety + (1|field), data = irrigation))

Analysis of Variance Table
           Df Sum Sq Mean Sq F value
irrigation  3 1.6605  0.5535  0.3882
variety     1 2.2500  2.2500  1.5782

summary(aov(yield ~ irrigation + variety + Error(field/irrigation), data = irrigation))

Error: field
           Df Sum Sq Mean Sq F value Pr(>F)
irrigation  3  40.19   13.40   0.388  0.769
Residuals   4 138.03   34.51               

Error: Within
          Df Sum Sq Mean Sq F value Pr(>F)
variety    1   2.25   2.250   1.578  0.249
Residuals  7   9.98   1.426               

可以看出,首先,F-比率同意。各种平方和也相同。但是,灌溉的平方和并不相同,但是看起来lmer的产出是成比例的。那么anova()命令实际上是做什么的呢?


1
你可能想看看函数mixed()afex该提供你想要的东西(通过method = "PB")。显然,您已经对玩具数据进行了一些测试,如果可以显示与数据和代码的等效性,那么它肯定会有所帮助(因此,没有+1)。
亨里克

@Henrik Tough人群... Martyn,您能给Faraway(2006)提供参考吗?
Patrick Coulombe 2013年


@PatrickCoulombe呵呵,你是对的。但是有时候,一些友善的力量有助于获得更好的问题。
亨里克

1
亚伦在书籍参考书中是正确的,很抱歉原本没有提供它!
马丁·

Answers:


31

使用消息来源,卢克。通过执行操作,我们可以窥视ANOVA函数getAnywhere(anova.Mermod)。该功能的第一部分是比较两个不同的模型。固定效果的方差分析在else下半年大放异彩:

 dc <- getME(object, "devcomp")
        X <- getME(object, "X")
        asgn <- attr(X, "assign")
        stopifnot(length(asgn) == (p <- dc$dims[["p"]]))
            ss <- as.vector(object@pp$RX() %*% object@beta)^2
        names(ss) <- colnames(X)
        terms <- terms(object)
        nmeffects <- attr(terms, "term.labels")[unique(asgn)]
        if ("(Intercept)" %in% names(ss)) 
            nmeffects <- c("(Intercept)", nmeffects)
        ss <- unlist(lapply(split(ss, asgn), sum))
        stopifnot(length(ss) == length(nmeffects))
        df <- vapply(split(asgn, asgn), length, 1L)
        ms <- ss/df
        f <- ms/(sigma(object)^2)
        table <- data.frame(df, ss, ms, f)
        dimnames(table) <- list(nmeffects, c("Df", "Sum Sq", 
            "Mean Sq", "F value"))
        if ("(Intercept)" %in% nmeffects) 
            table <- table[-match("(Intercept)", nmeffects), 
                ]
        attr(table, "heading") <- "Analysis of Variance Table"
        class(table) <- c("anova", "data.frame")
        table

object是lmer输出。我们开始计算第5行的平方和:ss <- as.vector ...代码将固定参数(in beta)与上三角矩阵相乘;然后将每一项平方。这是灌溉示例的上三角矩阵。每行对应五个固定效果参数之一(截取,灌溉的3个自由度,变化的1 df)。

zapsmall(irrigation.lmer@pp$RX(), digits = 3)
      [,1]  [,2]   [,3]   [,4]  [,5]
[1,] 0.813 0.203  0.203  0.203 0.407
[2,] 0.000 0.352 -0.117 -0.117 0.000
[3,] 0.000 0.000  0.332 -0.166 0.000
[4,] 0.000 0.000  0.000  0.287 0.000
[5,] 0.000 0.000  0.000  0.000 2.000

第一行为您提供截距的平方和,最后一行为您提供场内变化效果的SS。第2-4行仅涉及灌溉水平的3个参数,因此预乘法为您提供了灌溉的三个SS。

这些片段本身并不有趣,因为它们来自R中的默认处理对比度,但是ss <- unlist(lapply(split ....Bates 线根据级别数和所引用的因素来挖出平方和。这里有很多记账工作。我们也获得了自由度(灌溉时为3)。然后,他得到均方根,该均方根出现在的打印输出上anova。最后,他将所有均值平方除以组内残差方差sigma(object)^2

lmeraovlmerRXR00σ2/σf2σf2

渐近地,固定效应的估计具有以下分布:

β^N(β,σ2[R001R00T])

R00β^β=0,则这些项的平方(除以σ2)遵循卡方分布。除以σ2 (除以另一个卡方 σ2)给出F统计量。对于组间分析,我们不除以均方误差,因为这与此处发生的情况无关。我们需要比较通过获得的平方和[R00 通过将它们与 σ2

请注意,如果数据不平衡,您将不会获得相同的F统计信息。如果您使用ML而不是REML,也不会获得相同的F统计信息。

背后的想法aov是,灌溉的预期均方是σ2σF2和灌溉效果。场残差的预期均方是σ2σF2。当灌溉效果为0时,这两个量都估计相同,并且它们的比率遵循F分布。

有趣的是,Bates和Pinheiro建议使用ANOVA来拟合两个模型并进行似然比检验。后者往往是反保守的。

当然,如果数据不平衡,则不再确切地知道ANOVA正在测试什么假设。我从灌溉数据中删除了第一个观测值并进行了调整。这里是[R00 再次矩阵:

zapsmall(fit2@pp$RX(), digits = 3)
      [,1]  [,2]   [,3]   [,4]   [,5]
[1,] 0.816 0.205  0.205  0.205  0.457
[2,] 0.000 0.354 -0.119 -0.119 -0.029
[3,] 0.000 0.000  0.334 -0.168 -0.040
[4,] 0.000 0.000  0.000  0.288 -0.071
[5,] 0.000 0.000  0.000  0.000  1.874

如您所见,灌溉参数的平方和现在也包含一些variety效果。


10
+6,很高兴看到一个古老的未回答的问题并得到很好的回答。愿消息来源与您同在……
gung-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.