lm.anova 在 R 中究竟执行了什么测试?

机器算法验证 r 方差分析 流明
2022-04-02 09:14:53

我一直认为对anova(myFit)模型中的每个回归器执行子模型测试(即将模型与所有回归器与没有测试回归器的模型进行比较)。然而,这显然不是真的。

玩具示例:

set.seed(0)
n = 20
data = data.frame(
  Y = rbinom(n,20,0.5),
  X1 = sample(LETTERS[1:3], n, T),
  X2 = rbinom(n,6,0.5)
)

anova(lm(Y ~ X1 + X2, data = data))
# Analysis of Variance Table
# Response: Y
#           Df Sum Sq Mean Sq F value Pr(>F)
# X1         2  1.883  0.9413  0.1677 0.8471
# X2         1  3.265  3.2648  0.5817 0.4568
# Residuals 16 89.803  5.6127

anova(lm(Y ~ X2, data = data), lm(Y ~ X1 + X2, data = data))
# Analysis of Variance Table
# Model 1: Y ~ X2
# Model 2: Y ~ X1 + X2
#   Res.Df    RSS Df Sum of Sq      F Pr(>F)
# 1     18 92.908
# 2     16 89.803  2    3.1057 0.2767 0.7619

在第二种情况下,比较 RSS 的变化导致 F(2,16) = 0.2767。在第一种情况下进行什么测试?

1个回答

R 有全面的文档。对于这种特定情况help(anova.lm)说:

细节:

指定单个对象给出该拟合的方差表的顺序分析。也就是说,随着公式的每一项依次相加,残差平方和的减少以表格行的形式给出,加上残差平方和。

该表将包含将行的均方与残差均方进行比较的 F 统计量(和 P 值)。

如果指定了多个对象,则该表有一行表示每个模型的剩余自由度和平方和。对于除第一个模型之外的所有模型,还给出了自由度和平方和的变化。(这仅在模型嵌套时才具有统计意义。)按照惯例从最小到最大列出模型,但这取决于用户。

可选地,该表可以包括测试统计信息。通常,F 统计量是最合适的,它将行的均方与所考虑的最大模型的残差平方和进行比较。如果指定了“规模”,则可以使用卡方检验。Mallows 的 Cp 统计量是残差平方和加上 sigma^2 估计值的两倍乘以残差自由度。

因此,对于您示例中的第一种情况,不是将每个协变量与仅截距模型进行比较,而是将协变量一个一个地添加到模型中,因此顺序很重要。IE

> anova(lm(Y ~ X1 + X2, data = data))
Analysis of Variance Table
Response: Y
          Df Sum Sq Mean Sq F value Pr(>F)
X1         2  1.883  0.9413  0.1677 0.8471
X2         1  3.265  3.2648  0.5817 0.4568
Residuals 16 89.803  5.6127


> anova(lm(Y ~ X2 + X1, data = data))
Analysis of Variance Table
Response: Y
          Df Sum Sq Mean Sq F value Pr(>F)
X2         1  2.042  2.0417  0.3638 0.5549
X1         2  3.106  1.5528  0.2767 0.7619
Residuals 16 89.803  5.6127

对于第二种情况,它将嵌套模型的序列与第一种进行比较:

> anova(lm(Y ~ 1, data = data), lm(Y ~ X1, data = data), lm(Y ~ X1 + X2, data = data))
Analysis of Variance Table
Model 1: Y ~ 1
Model 2: Y ~ X1
Model 3: Y ~ X1 + X2
  Res.Df    RSS Df Sum of Sq      F Pr(>F)
1     19 94.950
2     17 93.067  2    1.8825 0.1677 0.8471
3     16 89.803  1    3.2648 0.5817 0.4568