R版本的方差分析
#做方差分析有三个假设,需要提前进行检验。1.每个处理效应和随机误差是可加的。2.正态独立性,检验误差应该是正态分布的。3.方差齐次性。水平间的方差应该相等。
数据导入
wheat<- data.frame(
+ x=c(5.4,5.3,6.1,5.1,5.6,5.1,4.5,6,6.6,6.5,5.8,6.2,5.6), a=factor(c(rep(1,3),rep(2,4),rep(3,3),rep(4,3)))) #rep:重复产生数据
正态分布检验
shapiro.test(wheat x[wheat a==1])
Shapiro-Wilk normality test
data: wheat
x[wheat
a == 1]
W = 0.84211, p-value = 0.2196
shapiro.test(wheat x[wheat a==2])
Shapiro-Wilk normality test
data: wheat
x[wheat
a == 2]
W = 0.94078, p-value = 0.6591
shapiro.test(wheat x[wheat a==3])
Shapiro-Wilk normality test
data: wheat
x[wheat
a == 3]
W = 0.87097, p-value = 0.2983
shapiro.test(wheat x[wheat a==4])
Shapiro-Wilk normality test
data: wheat
x[wheat
a == 4]
W = 0.96429, p-value = 0.6369
正态检验,4组数据的p值都大于0.05 都不能拒绝原假设,每组数据是正态的,所以满足方差分析的一个条件,接下来做方差齐性检验
原假设这个原假设H0: 各个水平是等方差的
bartlett.test(wheat x,wheat a)#方差齐性检验,
Bartlett test of homogeneity of variances
data: wheat
xandwheat
a
Bartlett’s K-squared = 0.44019, df = 3, p-value = 0.9318
p>0.05,不能拒绝原假设,具有方差齐性,可以进行方差分析。
方差分析
wheat.aov <- aov(x~a, data=wheat)
summary(wheat.aov)
Df Sum Sq Mean Sq F value Pr(>F)
a 3 3.002 1.0007 6.523 0.0123 *
Residuals 9 1.381 0.1534
Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1
p<0.05 ,拒绝原假设,认为浓度对wheat有影响。
R代码
wheat<- data.frame(
x=c(5.4,5.3,6.1,5.1,5.6,5.1,4.5,6,6.6,6.5,5.8,6.2,5.6), a=factor(c(rep(1,3),rep(2,4),rep(3,3),rep(4,3))))
#正态分布检验
shapiro.test(wheat$x[wheat$a==1])
shapiro.test(wheat$x[wheat$a==2])
shapiro.test(wheat$x[wheat$a==3])
shapiro.test(wheat$x[wheat$a==4])
#正态检验,4组数据的p值都大于0.05 都不能拒绝原假设,每组数据是正态的,所以满足方差分析的一个条件,接下来做方差齐性检验
#原假设这个原假设H0: 各个水平是等方差的
bartlett.test(wheat$x, wheat$a)#方差齐性检验,
#p>0.05,不能拒绝原假设,具有方差齐性,可以进行方差分析。
wheat.aov <- aov(x~a, data=wheat)#方差分析
summary(wheat.aov)
#p<0.05 拒绝原假设,认为浓度对wheat有影响。