方差分析模型中“+”与“*”的区别是什么?

What is the difference of "+" versus "*" in ANOVA model?

       GG      AMB GGXAMB     ATF6.M
1    COBB CONFORTO     CC  1.7391386
2    COBB CONFORTO     CC  0.8269537
3    COBB CONFORTO     CC  0.3464495
4    COBB CONFORTO     CC  1.3126458
5    COBB CONFORTO     CC  1.3938351
6    COBB CONFORTO     CC  1.0969472
7    COBB   STRESS     CS  3.1431619
8    COBB   STRESS     CS  0.9023480
9    COBB   STRESS     CS  2.5106332
10   COBB   STRESS     CS  1.2833235
11   COBB   STRESS     CS  0.4485298
12   COBB   STRESS     CS  0.3553028
13 PELOCO CONFORTO     PC  0.3481456
14 PELOCO CONFORTO     PC  2.5095779
15 PELOCO CONFORTO     PC  0.8871572
16 PELOCO CONFORTO     PC  2.3148108
17 PELOCO CONFORTO     PC 73.2463832
18 PELOCO CONFORTO     PC 16.0056771
19 PELOCO   STRESS     PS 15.4836898
20 PELOCO   STRESS     PS  1.2041695
21 PELOCO   STRESS     PS  1.8424005
22 PELOCO   STRESS     PS  0.9193776
23 PELOCO   STRESS     PS  0.9451780
24 PELOCO   STRESS     PS  0.9715508

抱歉,如果问题太愚蠢,但我还没有找到答案。

这两个模型在 R 中的方差分析中的统计差异是什么:

  1. aov(ATF6.M ~ G + AMB + GGXAMB, 数据)
  2. aov(ATF6.M ~ G*AMB, 数据)

我从结果中注意到,当您使用“*”时,它会计算每个自变量以及交互作用的方差分析(例如:GG:AMB)。但是,如果您看一下我的 table,GGXAMB 变量正是这种相互作用,但是如果将结果与方差分析摘要中的 GG:AMB 获得的值与 1. 公式的结果进行比较,他们很接近,但不一样。我的模型对吗?

使用您的数据:

data = structure(list(GG = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L
), .Label = c("COBB", "PELOCO"), class = "factor"), AMB = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("CONFORTO", "STRESS"), class = "factor"), 
    GGXAMB = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
    2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L
    ), .Label = c("CC", "CS", "PC", "PS"), class = "factor"), 
    ATF6.M = c(1.7391386, 0.8269537, 0.3464495, 1.3126458, 1.3938351, 
    1.0969472, 3.1431619, 0.902348, 2.5106332, 1.2833235, 0.4485298, 
    0.3553028, 0.3481456, 2.5095779, 0.8871572, 2.3148108, 73.2463832, 
    16.0056771, 15.4836898, 1.2041695, 1.8424005, 0.9193776, 
    0.945178, 0.9715508)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"
))

我们做方差分析:

f1 = aov(ATF6.M ~ GG + AMB + GGXAMB, data=data)
f2 = aov(ATF6.M ~ GG * AMB, data=data)

可解释的方差基本相同:

summary(f1)
            Df Sum Sq Mean Sq F value Pr(>F)
GG           1    428   427.7   1.990  0.174
AMB          1    216   216.1   1.005  0.328
GGXAMB       1    240   239.9   1.116  0.303
Residuals   20   4299   214.9               
summary(f2)
            Df Sum Sq Mean Sq F value Pr(>F)
GG           1    428   427.7   1.990  0.174
AMB          1    216   216.1   1.005  0.328
GG:AMB       1    240   239.9   1.116  0.303
Residuals   20   4299   214.9 

系数不同:

f1$coefficients
(Intercept)    GGPELOCO   AMBSTRESS    GGXAMBCS    GGXAMBPC    GGXAMBPS 
   1.119328   14.765964  -12.324231   12.645452          NA          NA 
f2$coefficients
       (Intercept)           GGPELOCO          AMBSTRESS GGPELOCO:AMBSTRESS 
         1.1193283         14.7659637          0.3212216        -12.6454525 

这是因为在第一个回归中,GGXAMB 的组合可以 return 你 GG 的系数,例如 CC + CS 给你 COBB in GG,使你的 3 个系数变得多余。这将导致在估计系数时出现问题。在这种情况下,效果是 AMBSTRESS 得到一个小值,其余为 NA。

您可以在 this discussion and maybe this 中阅读一些相关内容,这个术语是全排序矩阵。

要回答您的问题,您应该使用 aov(ATF6.M ~ GG*AMB, data)aov(ATF6.M ~ GG+AMB+GG:AMB, data),它来自于在满排序矩阵上拟合线性模型并且所有系数都是可估计的(如您所见从上面)。