我很难理解R中的factorial anova的总结 我不明白为什么我只得到第一个变量的Df为2。 A,B,C和D都有3个等级,所以在我的理解中我应该得到2个Df用于那些和那些的相互作用。 请帮我修改代码或理解结果。
P.S。我在哪里可以找到summary()的选项列表?我看到一个示例在sig级别之后移除了*,我想看看我有哪些选项。
提前谢谢
这是我的数据我有完整的数据集
Runs I A B C D AB E AD BC F G H J K B1 B2 y
1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 190.9
2 2 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 436.2
3 3 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 480.3
4 4 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 406.3
5 5 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 212.9
6 6 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 478.7
7 7 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 396.5
8 8 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 349.7
9 9 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 119.7
10 10 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 372.2
11 11 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 411.6
12 12 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 382.8
13 13 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 161.2
14 14 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 424.3
15 15 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 322.8
16 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 302.1
17 17 1 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 302.4
18 18 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 318.2
19 19 1 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 332.8
> data
###Factors
> A
[1] -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 0 0 0
Levels: -1 0 1
> B
[1] -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 0 0 0
Levels: -1 0 1
> C
[1] -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 0 0 0
Levels: -1 0 1
> D
[1] -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 0 0 0
Levels: -1 0 1
####Response variable
> data$y
[1] 190.9 436.2 480.3 406.3 212.9 478.7 396.5 349.7 119.7 372.2 411.6 382.8 161.2 424.3 322.8 302.1 302.4 318.2
[19] 332.8
A=as.factor(data$A)
B=as.factor(data$B)
C=as.factor(data$C)
D=as.factor(data$D)
out3=lm(data$y~C+B+A+D)
fit1=aov(out3)
summary(fit1)
> summary(fit1)
Df Sum Sq Mean Sq F value Pr(>F)
C 2 2743 1372 0.170 0.8456
B 1 26896 26896 3.332 0.0910 .
A 1 45839 45839 5.679 0.0331 *
D 1 12928 12928 1.602 0.2279
Residuals 13 104934 8072
具有不同变量顺序的相同anova
摘要(FIT1) Df Sum Sq Mean Sq F值Pr(> F)
B 2 28199 14100 1.747 0.2129
A 1 45839 45839 5.679 0.0331 * D 1 12928 12928 1.602 0.2279
C 1 1440 1440 0.178 0.6796
残余物13 104934 8072
如果我只用2个级别进行anova(对所有变量排除0,并且仅使用[1:16]数据,因为最后3个数据基于“0”级别),那么它很好。所有var但残差都得到Df为1。
答案 0 :(得分:0)
我正在努力思考和思考,并说如何能够正确计算自由度?但有时我们只考虑复杂的事情而忘记简单的事情。我发现了问题所在:
data <- read.table(header=T,text='Runs I A B C D AB E AD BC F G H J K B1 B2 y
1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 190.9
2 2 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 436.2
3 3 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 480.3
4 4 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 406.3
5 5 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 212.9
6 6 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 478.7
7 7 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 396.5
8 8 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 349.7
9 9 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 119.7
10 10 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 372.2
11 11 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 411.6
12 12 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 382.8
13 13 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 161.2
14 14 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 424.3
15 15 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 322.8
16 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 302.1
17 17 1 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 302.4
18 18 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 318.2
19 19 1 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 332.8')
a.dummies <- model.matrix(~A)
b.dummies <- model.matrix(~B)
c.dummies <- model.matrix(~C)
d.dummies <- model.matrix(~D)
a<-cbind(a.dummies[,-1],b.dummies[,-1])
b<-cbind(c.dummies[,-1],d.dummies[,-1])
all<-cbind(a,b)
我冒昧地自己创造了假人,一个接一个地检查它们。问题就出现了。 简单相关表:
COR(全部)
A0 A1 B0 B1 C0 C1 D0 D1
A0 1.0000000 -0.3692745 1.0000000 -0.3692745 1.0000000 -0.3692745 1.0000000 -0.3692745
A1 -0.3692745 1.0000000 -0.3692745 0.1363636 -0.3692745 0.1363636 -0.3692745 0.1363636
B0 1.0000000 -0.3692745 1.0000000 -0.3692745 1.0000000 -0.3692745 1.0000000 -0.3692745
B1 -0.3692745 0.1363636 -0.3692745 1.0000000 -0.3692745 0.1363636 -0.3692745 0.1363636
C0 1.0000000 -0.3692745 1.0000000 -0.3692745 1.0000000 -0.3692745 1.0000000 -0.3692745
C1 -0.3692745 0.1363636 -0.3692745 0.1363636 -0.3692745 1.0000000 -0.3692745 0.1363636
D0 1.0000000 -0.3692745 1.0000000 -0.3692745 1.0000000 -0.3692745 1.0000000 -0.3692745
D1 -0.3692745 0.1363636 -0.3692745 0.1363636 -0.3692745 0.1363636 -0.3692745 1.0000000
lm函数的工作方式(以及更多的模型函数)是消除两个相关正好为1的变量之一,即删除重复列。在你的情况下,C0与A0,B0和D0的相关性为1,因此从模型中删除了3个,有效地将因子的级别数减少到A,B和D的2个。因此,自由度现在为1 A,B和D。
神秘解决了!!!