方差分析(analysis of variance,ANOVA)几乎是在统计学分析中最常用的方法,通过分析各变量主效应(main effect)和交互效应(interaction effect),从而发现因变量(dependent variable)的变异源。另外,通过配合使用多重比较的检验方法,其也常用于比较不同处理导致的因变量的差异。

一、基本原理

假设我们实验获得了这样的一组数据:通过对研究对象(各实验单位)进行不同处理(控制各变量的水平),导致实验对象的某一指标(因变量)在实验单位间出现差异。同时,为了更好的探讨差异的来源,同时提高结果的可靠性,同样的处理我们做了多次重复(一般要大于3)。

1、数学模型

这样就可以将数据的变异划分为组内变异和组间变异,组内变异即各实验重复间的差异,由于随机误差导致。组间变异即各处理组之间的差异,由随机误差和处理效应导致。方差分析的基本思路就是将变异分解为组间变异和组内变异差异的大小(服从white 异方差检验的辅助回归表达式 异方差的white检验原理_方差分布),并使用white 异方差检验的辅助回归表达式 异方差的white检验原理_方差检验来比较二者差异的显著性。

设实验一共有white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_03个处理,每个处理有white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_04个重复,因此第white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_05个处理的第white 异方差检验的辅助回归表达式 异方差的white检验原理_经验分享_06次重复的观测表示为white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_07,且有white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_08总体平均数white 异方差检验的辅助回归表达式 异方差的white检验原理_经验分享_09white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_10为处理数,white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_11为各处理组的均值),white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_12处理效应(样本为总体时,white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_13),white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_14随机误差(相互独立且white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_15~white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_16),则观测与变异间的关系可表示为:
white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_17
使用样本统计数表示就是:
white 异方差检验的辅助回归表达式 异方差的white检验原理_经验分享_18

2、方差分解

在方差分析中,通常使用方差white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_19来表征数据的变异,而方差通过平方和自由度来计算:
white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_20
所以,将总变异分解为组间变异组内变异实质上就是分解平方和自由度

(1)平方和的分解

沿用上述的例子,则总变异的平方和white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_21为:

white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_22

化简得:

white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_23

可以看出组间平方和white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_24(处理平方和)为:

white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_25

组内平方和 white 异方差检验的辅助回归表达式 异方差的white检验原理_经验分享_26(误差平方和)为:

white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_27

也有white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_28的公式:
white 异方差检验的辅助回归表达式 异方差的white检验原理_经验分享_29

(2)自由度的分解

在计算方差的时候,各方差的自由度受对应的平方和的约束,所以可以分别得出总自由度、处理自由度和误差自由度:

总自由度white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_30

white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_31

处理自由度white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_32:

white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_33

误差自由度white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_34

white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_35

(3)方差和white 异方差检验的辅助回归表达式 异方差的white检验原理_方差统计量

所以通过上述推导可得分解后得自由度和平方和,并以此计算方差(方差分析中表示为white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_37,即均方):

white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_38

因此,white 异方差检验的辅助回归表达式 异方差的white检验原理_方差统计量为:

white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_40

通过white 异方差检验的辅助回归表达式 异方差的white检验原理_方差统计量即可确定处理效应是否显著(white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_42)。

3、多重比较

在确定处理均方(处理效应)是否显著后,即可通过多重比较检验各处理组别间差异的显著性。主要的检验方法可大致分为两类:最小显著差数法最小显著极差法。常用的方法如下:
white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_43

4、方差分析表

为了更好的解读方差分析结果,有必要按特定的规范书写方差分析,一般方差分析的结果可表示为:

white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_44

white 异方差检验的辅助回归表达式 异方差的white检验原理_方差值得上标white 异方差检验的辅助回归表达式 异方差的white检验原理_经验分享_46表示处理效应显著性,有时也会额外加一列表示处理效应的显著性,例如R中agricolae包的结果:

white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_47

二、R实现

1、方差分析

R中提供了很多用于方差分析得包,这里以stats包为例:

setwd("your workspace")
#加载包
library(agricolae)
#R version(4.0.5)

#读取数据
data <- read.csv("data.csv",header = T)

数据集data.csv是某一作物在不同激素浓度处理Treatwhite 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_48)下对叶长Length)生长量的影响。
单因素方差分析

#描述性统计
#方差分析
fit <- aov(Length ~ Treat, data = data)
#结果
summary(fit)

输出结果如下:

white 异方差检验的辅助回归表达式 异方差的white检验原理_r语言_49


可看出不同激素处理对叶长生长量的变化(white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_50)极显著(white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_51)。

2、多重比较

使用white 异方差检验的辅助回归表达式 异方差的white检验原理_经验分享_52agricolae包)进行多重比较

#显著性检验(LSD检验)
var<- LSD.test(fit, "Treat")
#结果
var

输出结果如下:

white 异方差检验的辅助回归表达式 异方差的white检验原理_经验分享_53


从结果中可看出四种处理下叶长生长量大小关系为:white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_54,其中white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_55white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_56处理的差异并不显著。另外,结果中还列出了均值、标准差、分位数、white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_57等关键信息。

3、可视化

单因素方差分析结果一般辅以箱型图来展示,可有效的提供处理效应显著性、差异显著性、数据分布等有效信息。

(1)ggplot法

ggplot系列包因为可以图层叠加,可以极大的节省后期修图的工作量,目前基本已成为R语言可视化的首选。
下列代码以ggplot2绘制箱型图,数据集仍为data.csv,最后使用ggsignif标记差异显著性
绘制箱形图

#加载ggplot2包
library(ggplot2)

#绘制箱型图
boxplot=
  ggplot(data, aes(x=Treat, y=Length, fill=Treat))+#定义图形属性
  geom_boxplot()+#以箱型图显示
  #添加图例、标题等信息
  labs(title="Effect of Hormones on Leaf Length (p<0.001)", x="Treat", y="Length")+
  theme(plot.title=element_text(hjust=0.5), 
        legend.title=element_blank())#定义主题

#查看可视化结果
boxplot

white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_58

添加差异显著性标签

#加载ggsignif
library(ggsignif)

#添加差异显著性标签
boxplot = boxplot +
  #A1对A2
  geom_signif(comparisons = list(c(1, 2)),#处理组对比对
              y_position = 18.9,          #标签位置对应y轴的值
              tip_length = 0,             #标签竖线长度
              annotations = "P < 0.05")+  #标签文本
  #A1对A3
  geom_signif(comparisons = list(c(1, 3)),
              y_position = 15.9,          
              tip_length = 0,             
              annotations = "P < 0.05")+  
  #A1对A4
  geom_signif(comparisons = list(c(1, 4)),
              y_position = 15,          
              tip_length = 0,             
              annotations = "P < 0.05")+  
  #A3对A4
  geom_signif(comparisons = list(c(3, 4)),
              y_position = 18.5,          
              tip_length = 0,             
              annotations = "P < 0.05")+  
  #A2对A4
  geom_signif(comparisons = list(c(2, 4)),
              y_position = 18.7,         
              tip_length = 0,             
              annotations = "P < 0.05")
#查看结果
boxplot

white 异方差检验的辅助回归表达式 异方差的white检验原理_方差_59


可以看出,在比较组别较多的时候ggsignif包的方法得到的结果会过于复杂,违反了直观性原则。因此,也可以直接使用AI根据多重比较结果进行标记

white 异方差检验的辅助回归表达式 异方差的white检验原理_white 异方差检验的辅助回归表达式_60

(2)基础绘图法

基础绘图也提供了可视化方法,使用上述的方差分析结果fit进行多重比较(TukeyHSD test),并使用data数据集绘制均值图,涉及的包为gplots:

#加载包
library(gplots)

#绘图
par(mfcol=c(1,2))
par(las = 2)
plotmeans(data = data,
          Length ~ Treat,
          xlab = "Treatment",
          ylab = "Length",
          main = "Effect of Hormones on Leaf Length (p<0.001)")

#使用ukey HSD进行多重比较并可视化
Tukey = TukeyHSD(fit)
par(las = 2)
plot(Tukey)

white 异方差检验的辅助回归表达式 异方差的white检验原理_概率论_61


不难看出,使用不同方法进行多重比较,获得的结果并不相同,这是因为两类检验方法在确定显著性的标准上有一定的差异。因此,在实际操作中,需要根据自己的数据集特点,选择合适的检验方法。

Ending!!!