方差齐性检验
总第235篇/张俊红
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检验,适用于多组方差的比较,且对正态性没要求。
- spring boot + embed tomcat + standalone jar的内存泄露问题
- 树莓派:设置与软件安装
- spring-boot 速成(11) - 单元测试
- OOAD-设计模式(四)结构型模式之适配器、装饰器、代理模式
- 2018年智能家居行业趋势 写在2017年关键词里
- 树莓派与arduino通信
- process information unavailable 的解决办法
- JS魔法堂:再识IE的内存泄露
- 给树莓派安装中文字库
- Hadoop(十七)之MapReduce作业配置与Mapper和Reducer类
- Design Pattern: Observer Pattern
- Hadoop(十六)之使用Combiner优化MapReduce
- ActiveMQ笔记(6):消息延时投递
- CentOS 安装 Maven
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 我用 Python 写了个基金涨跌通知助手
- 模仿腾讯新闻做了款新闻阅读小程序
- 使用关键点进行小目标检测
- 彻底搞懂 etcd 系列文章(八):etcd 事务 API
- 使用docker搭建一套开发环境全家桶
- TypeScript里的.d.ts语法
- 宋宝华:当Linux内核遭遇鲨鱼—kernelshark
- 基于Pytorch的动态卷积复现
- SAP Spartacus的StorefrontConfig对象
- Linux内核虚拟内存管理之匿名映射缺页异常分析
- Elasticsearch:如何把 Elasticsearch 中的数据导出为 CSV 格式的文件
- Nginx 负载均衡配置(实战教程)
- 教懂你什么是 “ 流量劫持 ”
- SAP Spartacus中使用到的Angular ModuleWithProviders类型
- 架构设计 | 基于消息中间件,图解柔性事务一致性