方差分析模型中“+”与“*”的区别是什么?
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 中的方差分析中的统计差异是什么:
- aov(ATF6.M ~ G + AMB + GGXAMB, 数据)
- 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)
,它来自于在满排序矩阵上拟合线性模型并且所有系数都是可估计的(如您所见从上面)。
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 中的方差分析中的统计差异是什么:
- aov(ATF6.M ~ G + AMB + GGXAMB, 数据)
- 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)
,它来自于在满排序矩阵上拟合线性模型并且所有系数都是可估计的(如您所见从上面)。