我们知道ANOVA是方差分析中经常会用到的。那么R包里面有可以调用的直接帮我们算好ANOVA表,来计算议员方差分析的各种Sum of Square/Mean Square,非常方便!!!
那么如何在两元方差分析中构建ANOVA表,就是表里还包含interaction的Sum of Square/Mean Square,以及和书上一样还有Total的一行:
在R环境下:
x=c(19,36,40,30,4,10,30,5,34,21,19,35,22,28,1,27,27,16,3,18,37,6,28,4,32,16, 8,41,29,18,39,18,32,22,16,2,36,43,7,16, 30,47,6,27,44 ,26,33,48,23,21,51,52,43,48,39,33,56,43,40,51)
A=gl(3,10,length(x)) #根据你的数据具体来看,gl(A因子的level数,重复次数,x总长度)
B=gl(2,30,length(x))# 这里B因子level数为2,在x数据中,前30个为level1,后三十个为level2,所以gl(2,30,length(x)
x.aov <- aov(x~A*B) #表示包含A,B的交互作用。A+B则不会有交互作用那一项
summary(x.aov)
利用summary直接生成熟悉的ANOVA表:
若要增加total一行,则如下代码:
anova.tab <- function(fm){
tab <- summary(fm)
k <- length(tab[[1]]-2)
temp <- c(sum(tab[[1]][,1]),sum(tab[[1]][,2]),rep(NA,k))
tab[[1]]["Total",] <- temp
tab
}
anova.tab(x.aov )
ANOVA table为: