1.前言
我们在方差分析里面有讲过,方差分析有一个很重要的前提就是叫方差齐性。这一篇来讲讲如何来检验方差齐性。
先讲讲什么是方差齐性,方差齐性是指不同组间的总体方差是一样的。那为什么方差分析的前提是要组间的总体方差保持一致呢?先想想方差分析是做什么呢?方差分析是用来比较多组之间均值是否存在显著差异。那如果方差不一致,也就意味着值的波动程度是不一样的,如果此时均值之间存在显著差异,不能够说明一定是不同组间处理带来的,有可能是大方差带来大的波动;如果方差一样,也就意味着值的波动程度是一样的,在相同波动程度下,直接去比较均值,如果均值之间存在显著差异,那么可以认为是不同组间处理带来的。
方差齐性检验是对两组样本的方差是否相同进行检验。检验思想与均值之间差异性检验是一样的。常用的方法有:方差比、Hartley检验、Levene检验、BF法、Bartlett检验。
2.方差比
方差比顾名思义就是两组方差的比,用较大一组的方差除较小一组的方差,最后得到一个F值,然后根据F值的大小来判断两组之间的方差是否相等。F值越大,则认为两组方差越不相等。
3.Hartley检验
Hartley检验与方差比的思想比较类似,差别在于Hartley检验用于多组方差的检验,用多组中最大的方差除最小的方差,得到一个F值,然后通过F值的判断来对方差齐性进行判断。
4.Levene检验
Levene检验是将每个值先转换为为该值与其组内均值的偏离程度,然后再用转换后的偏离程度去做方差分析,即组间方差/组内方差。
在这里关于组内均值有多种计算方式:平均数、中位数、截取平均数(去掉最大和最小值后求平均)。
在Python中有现成的函数可以使用:
from scipy.stats import levene
stat, p = levene(x, y, z)
print(stat, p)
上面公式中x、y、z代表不同组的样本。
5.BF法
Levene检验最开始计算组内均值的时候只是用了组内平均数,后来又有名叫Brown和Forsythe的两位前辈对齐进行了改造,添加了中位数和截取均值的方法,简称BF法。
这个在Python里面用的也是levene函数,通过调整参数的取值即可。
6.Bartlett检验
Bartlett检验的核心思想是通过求取不同组之间的卡方统计量,然后根据卡方统计量的值来判断组间方差是否相等。该方法极度依赖于数据是正态分布,如果数据非正态分布,则的出来的结果偏差很大。
在Python中有现成的函数可以使用:
from scipy.stats import bartlett
stat, p = bartlett(x, y, z)
print(stat, p)
上面公式中x、y、z代表不同组的样本。
7.总结
前面介绍了好几种方法,最后来总结下这几种方法的利弊及适用条件:方差比、Hartley检验、Bartlett检验都需要原始数据是正态分布,Levene检验和BF法对正态分布不是很依赖。比较常用的是Levene检验,适用于多组方差的比较,且对正态性没要求。