为什么我没有从 R 中的 ANOVA 中得到 p 值?

机器算法验证 r 方差分析 数据集 自由程度
2022-03-09 15:12:30

这是数据:

> tires <- data.frame(Wear  = c(17, 14, 12, 13, 14, 14, 12, 11,
                                13, 13, 10, 11, 13, 8, 9, 9),
                      Brand = rep(LETTERS[1:4], 4),
                      Car   = as.character(as.roman(rep(1:4, each = 4))))
> tires
   Wear Brand Car
1    17     A   I
2    14     B   I
3    12     C   I
4    13     D   I
5    14     A  II
6    14     B  II
7    12     C  II
8    11     D  II
9    13     A III
10   13     B III
11   10     C III
12   11     D III
13   13     A  IV
14    8     B  IV
15    9     C  IV
16    9     D  IV

现在我拟合双向方差分析与交互:

two.way <- aov(Wear ~ Brand + Car + Brand:Car, data = tires)

最后,没有 p 值:

> summary(two.way)
            Df Sum Sq Mean Sq
Brand        3  30.69  10.229
Car          3  38.69  12.896
Brand:Car    9  11.56   1.285

常规的双向 ANOVA(即Wear ~ Brand + Car)给了我 p 值:

> summary(aov(Wear ~ Brand + Car, data = tires))
            Df Sum Sq Mean Sq F value  Pr(>F)   
Brand        3  30.69  10.229   7.962 0.00668 **
Car          3  38.69  12.896  10.038 0.00313 **
Residuals    9  11.56   1.285                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

有没有办法解释这个?交互图向我展示了两者之间肯定存在交互BrandCar因此我希望将其合并到我的模型中。

2个回答

您的模型已饱和。任何模型都将使用至少 1 个自由度。您有 2 个因子,每个因子有 4 个水平。它们都需要 3 个额外的自由度。交互作用又消耗了 9 个自由度。将这些 1 + 3 + 3 + 9 = 16 相加,但您只有 16 个数据。因此,没有任何自由度可以用来确定残差变异性、形成标准误差或检验任何假设。

如果有人有同样的疑问,我将提出一个替代方案。

如前所述,在您的模型设计中,我们无法考虑因素品牌和汽车之间可能的γij

yij=μ+αi+βj+γij+ϵij

特别是因为我们缺乏观察来估计参数,所以模型是饱和的。但是,我们可以提出一个具有如下自由度的测试:

yij=μ+αi+βj+λ(α^iβ^j)+ϵij

其中交互作用被简化为没有交互作用的估计参数的乘积。所以我们要做的是在没有交互的情况下将已知数据的回归变量添加到模型中,它将是它的回归系数。这实际上是 Tukey 几年前提出的,作为非可加性(交互)的一个自由度测试。λ