这一次我们来了解一下假设检验中另一个重要检验-F检验

什么是F检验?

F检验(F-test),最常用的别名叫做联合假设检验(英语:joint hypotheses test),此外也称方差比率检验、方差齐性检验,方差分析,它是一种在(H0)之下,统计值服从的检验。其通常是用来分析用了超过一个参数的统计模型,以判断该模型中的全部或一部分参数是否适合用来估计总体

F检验对于数据的正态性非常敏感,因此在检验方差齐性的时候,Levene检验, Bartlett检验或者Brown–Forsythe检验的稳健性都要优于F检验。 F检验还可以用于三组或者多组之间的均值比较(方差分析),但是如果被检验的数据无法满足均是正态分布的条件时,该数据的稳健型会大打折扣,特别是当显著性水平比较低时。但是,如果数据符合正态分布,而且alpha值至少为0.05,该检验的稳健型还是相当可靠的。

若两个母体有相同的方差(方差齐性),那么可以采用F检验,但是该检验会呈现极端的非稳健性和非常态性,可以用T、巴特勒特检验等取代。

在上节做独立双样本T检验的时候,需要先判断两个样本的方差是否相等,需要做方差齐性检验,提到了Levene检验,现在聊一下这个方差齐性检验。

方差齐性检验

1,什么是方差齐性检验?

方差齐性检验是对两样本方差是否相同进行的检验。

也有好多人把方差齐性检验说成是F检验,和两样本平均数的差异性检验在假设检验的基本思想上是没有什么差异性的,只是所选择的抽样分布不一样。方差齐性检验所选择的抽样分布为F分布,即是F=Sx/Sy,方差齐性检验其实就是两个正态总体的方差比的F检验。

2,为什么要做方差齐性检验?

对于T检验而言,两个样本的方差是否相同决定了T统计量是否相同,我们做T检验的时候经常会出现F值,就是因为要做方差齐性检验,这两兄弟经常一起出现。

对于方差分析,方差齐性检验是方差分析的重要前提,是方差可加性原则应用的一个条件。方差分析中有三条前提假设,一是:不同水平的总体方差相等。因为F检验对方差齐性的偏离较为敏感,故方差齐性检验十分必要。在线性回归分析中,也要满足三条前提假设,除了方差齐性检验外,还有两个是:因变量是否符合正态分布和是否待分析的因变量中的个案彼此独立也就是个案间不存在自相关并来自于同一个总体。对于线性回归分析,只是多一个需要因变量和自变量有线性趋势。

3,方差齐性检验的方法

对以下三种方差齐性检验的方法,其原假设(H0)均为'变量的总体方差相同'

Bartlett检验,利用卡方检验,对数据有正态性要求,scipy.stats.bartlett(a, b)

Levene检验,在数据非正态的情况下,精度比Bartlett检验好。Levene检验这一方法更为稳健,且不依赖总体分布,是方差齐性检验的首选方法。它既可用于对两个总体方差进行齐性检验,也可用于对多个总体方差进行齐性检验,提供了python接口scipy.stats.levene(a, b, center = 'trimmed')

如下图:生成统计量和P值。P值大于显著性水平0.05,接受原假设,即三组数据方差无显著性差异

方差分析

我们之前做的T分布都是对两个样本都的均值进行比较,如果是三个、四个或者更多呢?这个时候我们需要考虑使用方差分析了。方差分析就是用来检验两个或者多个样本均值之间差异的显著性,也就是用来研究诸多控制变量中哪些变量对观测值有显著的影响。

为什么叫方差分析?

在检验均值之间的差异是否有统计学意义的过程中,我们实际上是从观测变量的方差入手,通过比较方差而得到的。

方差分析的原理

方差分析认为控制变量值的变化手两类因素的影响,第一类是控制因素的不同水平所产生的,第二类是随机因素产生的影响,这里的随机因素主要是实验过程中的抽样误差。

什么是因素?所要检验的对象就是因素

什么是水平?因素的不同类别或者不同取值就是因素的水平,每一个水平都可以看成一个总体

不同处理组的均数间的差别基本来源有两个:

(1) 因子条件,即不同的因子造成的差异,称为组间平方和。用变量在各组的均值与总均值之偏差平方和的总和表示,记作SSB

(2) 随机误差,如测量误差造成的差异或个体间的差异,称为组内平方和,用变量在各组的均值与该组内变量值之偏差平方和的总和表示,记作SSE

总偏差平方和 SST = SSB + SSE。

SSB/SSE比值构成F分布。

用F值与其临界值比较,推断各样本是否来自相同的总体 。

根据因素的个数,可以将方差分析分为单因素方差分析和多因素方差分析两种

单因素方差分析

原假设H0:不同因子对观测结果没有产生显著性影响(不同因子对观测量的效应同时为零)

举个栗子:

在一个饲料养鸡研究中,提出A,B,C三种饲料,为比较三种饲料的效果,选择24只相似的雏鸡随机分为三组,各组喂养一种饲料,60天后观察他们的重量

问三组饲料对养鸡增重的作用是否相同?

1,使用Excel实现

P值为0.045432,小于0.05,所以拒绝原假设,说明三种饲料对鸡增重有明显的差别

Python实现单因素方差分析

结果如下:

说明: 上述结果中, df表示自由度; sum_sq表示平方和; mean_sq表示均方和;F表示F检验统计量的值,; PR(>F)表示检验的p值; x就是因素x ;Residuals为残差。

其中P=0.45432,和用Excel做的一样,拒绝原假设

python使用方差分析在特征选择上的应用-单变量特征选择

单变量特征选择的原理是分别单独的计算每个变量的某个统计指标,根据该指标来判断哪些指标重要,剔除那些不重要的指标

Python库sklearn.feature_selection.SelectKBest(score_func,K),score_func提供了许多种统计指标,默认的是f_classif,主要用于分类任务的标签和特性之间的方差分析。当然还有分类问题卡方检验(Chi2),还有回归问题的F检验(f_regression)

多因素方差分析

多因素方差分析用来研究两个及两个以上的控制变量是否对观测值产生显著的影响,不仅能够分析多个因素对观测值的影响,还能够分析多个控制变量的交互作用能否对观测值产生影响,进而找到有利于观测值的最优组合。

在 ANOVA 呈现显著性之后,我们很自然就想知道究竟哪些组的均值不一样。

要回答这个问题,我们需要用到「事后检验」( post-hoc test )。事后检验的方法有很多,其中 Tukey-Kramer(又叫做 Tukey HSD)检验是最常用的办法。它不仅给出 p 值,还能同时给出置信区间,方便判断效应大小,一举两得。统计学里面正好有一个分布就是描述来自同一正态分布的多组数据的平均值最大和最小的两组的差距,叫做学生范围分布( Studentized range distribution )。Tukey-Kramer 检验是正是根据学生范围分布提出来的。

具体来讲,Tukey-Kramer 检验会对所有组进行两两比较,在SPSS中单因素ANOVA或者一般线性模型中都有'两两比较'选项卡,勾选Tukey即为本文中提到的Tukey-Kramer方法

这里提供python的方法

举个栗子:

教学实验中,采用不同的教学方法和不同的教材进行教学实验,获取数据分析不同教法和不同教材对教改成绩的影响,数据如下:

结果如下:

结果显示教法(P=0.000004)对教改成绩有显著影响,教材和教法的交互作用(P=0.016695)对教改成绩有显著影响,而教材(p=0.377)对教改成绩没有显著影响

有必要进行事后简单,使用tukey方法对教法进行多重比较的方法及结果:

结果说明:1和2的reject=False,两种教法无显著性差异;1和3,2和3的reject=True,说明这两种教法有显著性差异

说了这么多,F分布到底长啥样?来最后看一下F分布:

后记:

T检验和方差分析有什么区别:

其方差分析和t检验其实相通的,在特定情况下甚至是等价的。比如要比较两个独立样本的均值是否有显著不同,在双边检验的情况下 t 检验算出来的 p 值与 ANOVA 算出来的 p 值相等,ANOVA 的统计检验量 F 正好是 t 检验得到的 t 值的平方。

方差分析在实际应用中使用非常广泛。比如研究几条不同生产线生产的同一种零件会不会有显著差异,同一种药物对不同年龄组的人群会不会有不同的效果,同一个城市居住在几个不同城区的人患某种疾病的概率是不是一样等等问题。

python 单因子方差分析_假设检验之F检验-方差分析相关推荐

  1. python写因子策略_单因子策略进阶版 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码,以股息率作为择股条件,自动筛选出股息率前十名的股... - 雪球...

    来源:雪球App,作者: 爱喝豆汁的投资者,(https://xueqiu.com/2680567071/130470562) 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码, ...

  2. Python 单下划线(“_“)与双下划线(“__“)以及以双下划线开头和结尾的的区别

    由于python 中没有java 语言中的private ,public, protected 之类的,就引用了下划线. 单下划线的作用: 以单下划线("_")开头的模块变量或者函 ...

  3. 双侧检验的p值和单侧检验_假设检验03----假设检验的步骤

    假设检验的步骤 [经典四步] 1.提出原假设(Null Hypothesis) 和备择假设(Alternative Hypothesis) 2.设计检验统计量 3.给定显著性水平和确定相应的临界值 4 ...

  4. python单链表操作_单链表的创建、增删改查等操作(Python实现)

    单链表的创建.增删改查等操作(Python实现) # 单链表 class Node: def __init__(self, elem): self.elem = elem self.next = No ...

  5. python单链表排序_奇数结点升序偶数结点降序的单链表排序(Python实现)

    题目 一个链表,奇数结点升序,偶数结点降序,要求变成一个全升序的链表. 例如:1->8->2->7->3->6->4->5,变为1->2->3-& ...

  6. python单分支结构_单分支结构

    选择结构概述 在实际应用中,有时需要通过某个判断来决定任务是否执行或者执行的方式.对于这样的情况,仅有顺序结构控制是不够的,需要选择结构. Python中的if语句实现了选择结构控制,还可以使用if- ...

  7. python单链表排序_单链表排序之选择排序

    单链表排序是单链表的常见编程任务之一,也是面试中经常出现的题目.单链表排序的关键是交换算法,需要额外考虑.选择排序是比较直观的排序算法之一,这里就使用选择排序实现单链表的排序. C实现代码如下: Li ...

  8. F检验.医学统计实例详解

    F检验是一种重要的医学统计方法,常用于检验两个或多个样本的方差是否相等,也被称为方差齐性检验.方差齐性检验是医学研究中的基本方法,因为许多重要的统计分析都要求样本方差相等,如方差分析.t检验等.以下将 ...

  9. 卡方分布的期望和方差_T检验、F检验、卡方检验详细分析及应用场景总结

    本文从什么是?有什么用?怎么用?以及注意事项?四个角度来介绍常用的几种统计分析方法:T检验.F检验.卡方检验 一.T检验 (一)什么是T检验 T检验是一种适合小样本的统计分析方法,通过比较不同数据的均 ...

  10. python行业中性_单因子测试(上)——因子中性化

    之前做了很多因子测试的工作,但一直没有总结,感觉很凌乱,决定花时间把这部分东西写一写,温故知新,也为后续学习打基础.首先写一下单因子测试部分,分三篇,数据预处理一篇, 回归法一篇,分层测试法一篇.本篇 ...

最新文章

  1. asyncio.Protocol socket 断线重连
  2. 用python的turtle画圆-PYTHON练习1-turtle画圆
  3. JQuery选择器大全
  4. window.location.href如何多次请求_RabbitMQ如何保证幂等性?
  5. linux inode详解
  6. RHEL 6 下VNC Server 的安装配置
  7. 平均数、中位数、众数的深刻定义,了解一下
  8. layui table工具栏点击时间_layui table表格上添加日期控件laydate
  9. 交流电的有效值rms值_交流电路的功率三角因数原来是这样理解的
  10. 一文读懂 | CPU负载均衡实现
  11. Centos-shell-简介
  12. 【解题报告】SRM-08
  13. android os 2.2刷机包,N1内置CoreELEC9.2.2、安卓7.1.2双系统刷机包,全功能刷机包V2.2...
  14. java画图板_java画图板工具下载
  15. 免费10分钟邮箱上线啦~~
  16. ssm是java框架吗,大名鼎鼎的SSM是指哪几个开源Java框架?( )
  17. linux加法计算器程序,Linux下实现一个计算器程序
  18. Mybatis调用存储过程和函数
  19. 两中方式找出Excel中相同和不同的数据
  20. 罗马数字 古罗马数字转换为阿拉伯数字

热门文章

  1. 下载速度MB/s与Mb/s的区别
  2. android压缩gif大小,使用手机制作GIF动图,免费无水印、大小可调,安卓、iphone都可以...
  3. mysql varchar 长度设置_Mysql中varchar长度设置方法
  4. 计算机主板外部接口功能,笔记本电脑主板接口功能分享
  5. html写简历怎么导出pdf,简历在线生成,在线生成PDF或word格式简历
  6. 统计推断——假设检验——方差分析之多重比较(LSD法、Sidak法、Bonferroni法、Dunnett法、Tukey法、SNK 法、Duncan法)
  7. LM2596电源模块原理图及PCB分享
  8. 英寸和厘米的交互python_Python新手尝试编写厘米到英寸的代码,反之亦然
  9. SkipList算法原理分析
  10. Fiddler抓取手机端APP接口数据