文章目录
- 8.1 方差分析的原理
- 8.1.1 方差分析
- 8.1.2 误差分解
- 8.2 单因素方差分析
- 8.2.1 单因素方差分析
- 8.2.2 效应量分析
- 8.2.3 多重比较
- 8.3 双因素方差分析
- 8.3.1 双因素方差分析
- 8.3.2 效应量分析
- 8.4 方差分析的假定及其检验
- 8.4.1 正态性检验
- 8.4.2 方差齐性检验
8.1 方差分析的原理
8.1.1 方差分析
1、方差分析:分析类别自变量对数值因变量影响的一种统计方法。
2、基本功能:对多组平均数差异的显著性进行检验。
3、单因素实验:只有一个自变量的实验。
4、多因素实验:有两个或两个以上自变量的实验。
5、单因素方差分析:检验某一个因素对因变量的作用.
6、多因素方差分析:检验某几个因素对自变量的作用。
7、无重复双因子方差分析:如果两个因子对实验结果的影响是相互独立的,分别判断因子A和因子B对实验数据的单独影响。
8、可重复双因子方差分析:如果除了因子A和因子B对实验数据的单独影响外,两个因子的搭配还会对结果产生一种新的影响。
8.1.2 误差分解
1、方差分析基本原理:不同处理组的间的差别基本来源有以下两个
- 实验条件:即不同的处理造成的差异,称为组间差异。
各组的均值与总均值之偏差平方和的总和,记作SSA,组间自由度dfA。 - 随机误差:如测量误差造成的差异或个体间的差异,称为组内差异。
各组的均值与该组内变量值之偏差平方和的总和, 记作SSE,组内自由度dfE。 - 总偏差平方和 SST= SSA + SSE。
2、方差分析的逻辑:通过对组间差异与组内差异比值的分析,推断几个相应平均数差异的显著性。组间差异对组内差异的比值越大,各组平均数的差异就越明显。
- 做F检验:F=MSA/MSE
- 用F值与其临界值比较,可以检验组间与组内方差是否相等。若组间与组内方差相等,即F比值等于或接近1,表明各组平均数无显著差异;若F值很大,超过临界值,表明各组平均数有显著性差异。
3、方差分析的基本步骤如下:
(1)建立检验假设;
H0:多个样本总体均值相等;(自变量对因变量的影响不显著)
H1:多个样本总体均值不全相等;(自变量对因变量的影响显著)
(2)计算检验统计量F值;
(3)确定P值,根据给定的显著性水平作出推断结果。
8.2 单因素方差分析
8.2.1 单因素方差分析
example8_1<-read.csv("./data/example/chap08/example8_1.csv")
# 将短格式数据转为长格式数据
library(reshape2)
example8_2<-melt(example8_1,variable.name="品种",value.name="产量")
# 单因素方差分析模型
model<-aov(产量~品种,data=example8_2)
summary(model)
# 方差分析模型的参数估计
model$coefficients
- 单因子方差分析表
误差来源 | 平方和SS | 自由度df | 方差MS | 检验统计量F |
处理效应 | SSA=各组均值与总均值的偏差平方和 | 组数-1 | MSA=SSA/dfA | MSA/MSE |
误差 | SSE=各组均值与组内值的偏差平方和 | 总容量-组数 | MSE=SSE/dfE | |
总效应 | SST=各组内值与总均值的偏差平方和 | 总容量-1 |
8.2.2 效应量分析
1、效应量:如果方差分析拒绝原假设,则表明自变量对因变量的影响显著,影响的大小则用效应量来度量。记为η²
2、在单因子方差分析中,η²=SSA/SST
- 效应量越大,说明自变量与因变量之间的关系就越强。
# 单因子的效应量分析
library(DescTools)
EtaSq(model,anova=T)
8.2.3 多重比较
1、意义:若方差检验的结果是变量(因子)对因变量(观测结果)有显著影响,但是这一检验并未告诉我们究竟哪些品种之间的产量差异显著。为了分析这种差异到底出现在哪些品种之间,需要对均值进行配对检验,即多重比较。
2、多重比较的方法:
(1)LSD方法
研究者在事先就计划好要对某几对均值进行比较,无论是否作方差分析都进行比较。
# 输出基本结果
library(agricolae)
LSD<-LSD.test(model,"品种")
LSD
# 输出更多信息
library(DescTools)
PostHocTest(model,method="lsd")
(2)HSD方法
研究者事先并未计划进行多重比较,只是在方差分析决绝原假设后,才需要对任意两个处理的均值进行比较。
# 输出基本信息
library(agricolae)
HSD<-HSD.test(model,"品种")
HSD
# 输出更多信息
TukeyHSD(model)
8.3 双因素方差分析
8.3.1 双因素方差分析
example8_4<-read.csv("./data/example/chap08/example8_4.csv")
# 短格式数据转换为长格式数据
library(reshpe2)
example8_5<-melt(example8_4,variable.name="品种",value.name="产量")
# 主效应方差分析模型
model<-aov(产量~品种+施肥方式,data=example8_5)
summary(model)
model$coefficients
# 交互效应方差分析模型
model<-aov(产量~品种+施肥方式+品种:施肥方式,data=example8_5)
summary(model)
model$coefficients
- 双因子方差分析表
误差来源 | 平方和SS | 自由度df | 均方MS | 检验统计量F |
因子A的处理效应 | SSA | I-1 | MSA=SSA/(I-1) | FA=MSA/MSE |
因子B的处理效应 | SSB | J-1 | MSB=SSB/(J-1) | FB=MSB/MSE |
AB的交互效应 | SSAB | (I-1)(J-1) | MSAB=SSAB/(I-1)(J-1) | FAB=MSAB/MSE |
误差 | SSE | IJK-I-J-1 | MSE=SSE/(IJK-I-J-1) | |
总效应 | SST | IJK-1 |
8.3.2 效应量分析
1、偏效应量:某个因子的偏效应量是排除另一个因子的主效应后,该因子对因变量的效应。
2、偏η²=SSA/SSA+SSE;偏η²=SSB/SSB+SSE
library(DescTools)
EtaSq(model,anova=T)
8.4 方差分析的假定及其检验
假定 | 含义 |
正态性 | 每个处理所对应的总体都应服从正态分布,即对于因子的每一个水平,其观测值是来自正态分布总体的简单随机样本。 |
方差齐性 | 每个因子的每一水平的总体的方差必须相同 |
独立性 | 每个样本数据是来自因子各水平的独立样本(该假定不满足对结果影响较大) |
8.4.1 正态性检验
假设要求每个因子所对应的水平的总体都服从正态分布。通常有两种检验方法:图示法和假设检验方法。
1、图示法
- 当每个处理的样本量足够大时,可以对每个样本绘制正态概率图来检查每个处理对应的总体是否服从正态分布。
- 当每个处理的样本量比较小时,正态概率图中的点很少,提供的正态性信息很有限。这时,可以将每个处理的样本数据合并绘制一个正态概率图来检验正态性。
example8_1<-read.csv(".\\data\\example\\chap08\\example8_1.csv")
# 绘制每个品种产量的正态Q-Q图
windows()
par(mfrow=c(1,3),cex=0.6,mai=c(0.5,0.5,0.2,0.1))
qqnorm(example8_1$品种1,xlab="期望正态值",ylab="观察值",datax=TRUE,main="品种1的Q-Q图")
qqline(example8_1$品种1,datax=TRUE)
qqnorm(example8_1$品种2,xlab="期望正态值",ylab="观察值",datax=TRUE,main="品种2的Q-Q图")
qqline(example8_1$品种2,datax=TRUE)
qqnorm(example8_1$品种3,xlab="期望正态值",ylab="观察值",datax=TRUE,main="品种3的Q-Q图")
qqline(example8_1$品种3,datax=TRUE)
2、假设检验法
样本量较小时,正态概率图的应用就会受到很大限制,这时可以使用标准的统计检验。如Shapiro—Wilk检验、Kolmogorov-Smirnov检验等,均可以做正态性检验。
example8_2<-read.csv(".\\data\\example\\chap08\\example8_2.csv")
# Shapiro—Wilk检验
shapiro.test(example8_2$产量)
# KS检验
ks.test(example8_2$产量,"norm",mean(example8_2$产量),sd(example8_2$产量))
8.4.2 方差齐性检验
假设要求各处理的总体方差必须相等。通常有两种方法:图的方法和假设检验法。
(1)图示法
检验方差齐性的图形:箱线图和残差图
# 箱线图
example8_2<-read.csv(".\\data\\example\\chap08\\example8_2.csv")
boxplot(产量~品种,data=example8_2,xlab="品种",ylab="产量")
# 残差图
example8_2<-read.csv(".\\data\\example\\chap08\\example8_2.csv")
model_1w<-aov(产量~品种,data=example8_2)
windows()
par(mfrow=c(1,2),mai=c(0.5,0.5,0.2,0.1),cex=0.6,cex.main=0.7)
plot(model_1w,which=c(1,2))
example8_5<-read.csv("C:/example/ch8/example8_5.csv")
model_2wi<-aov(产量~品种+施肥方式+品种:施肥方式,data=example8_5)
windows()
par(mfrow=c(1,2),mai=c(0.5,0.5,0.2,0.1),cex=0.6,cex.main=0.7)
plot(model_2wi,which=1:2)
(2)假设检验法
当各处理的样本量较小时,无法用图示法进行方差齐性检验,可以采用假设检验方法。通常有Barlett方差齐性检验和Levene方差齐性检验。
# Barlett方差齐性检验
example8_5<-read.csv("C:/example/ch8/example8_5.csv")
# 不同品种产量的Barlett检验
bartlett.test(产量~品种,data=example8_5)
# 不同施肥方式产量的Barlett检验
bartlett.test(产量~施肥方式,data=example8_5)
# Levene方差齐性检验
library(car)
# 不同品种产量的Levene检验
leveneTest(产量~品种,data=example8_5)
# 不同施肥方式产量的Levene检验
leveneTest(产量~施肥方式,data=example8_5)