我在理解R中阶乘方差分析的摘要时遇到了麻烦。我不明白为什么仅对第一个变量获得Df为2。A,B,C和D都有3个等级,所以据我所知,我应该得到2 Df以及它们之间的相互作用。请帮助我修复代码或了解结果。
PS在哪里可以找到summary()的选项列表?我看到了一个示例,该示例删除了信号级别后的*,我想看看我有哪些选项。
先感谢您
这是我的数据我拥有的完整数据集
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
具有不同阶数变量的相同方差分析
摘要(fit1)Df总和Sq平均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
残差13104934 8072
如果我仅使用2个级别进行方差分析(所有变量均排除0,并且仅使用[1:16]数据,因为后3个数据均基于“ 0”级别),那么结果就很好。对于所有var残差,我得到的Df为1。
我一直在尝试,思考和思考,并说这怎么可能导致自由度计算不正确?但是有时我们只考虑复杂的事情而忽略了简单的事情。我发现了问题所在:
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。
谜团已揭开!!!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句