多个样本的f检验(假设检验之F检验-方差分析)
多个样本的f检验(假设检验之F检验-方差分析)2,为什么要做方差齐性检验?也有好多人把方差齐性检验说成是F检验,和两样本平均数的差异性检验在假设检验的基本思想上是没有什么差异性的,只是所选择的抽样分布不一样。方差齐性检验所选择的抽样分布为F分布,即是F=Sx/Sy,方差齐性检验其实就是两个正态总体的方差比的F检验。在上节做独立双样本T检验的时候,需要先判断两个样本的方差是否相等,需要做方差齐性检验,提到了Levene检验,现在聊一下这个方差齐性检验。1,什么是方差齐性检验?方差齐性检验是对两样本方差是否相同进行的检验。
这一次我们来了解一下假设检验中另一个重要检验-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 值的平方。
方差分析在实际应用中使用非常广泛。比如研究几条不同生产线生产的同一种零件会不会有显著差异,同一种药物对不同年龄组的人群会不会有不同的效果,同一个城市居住在几个不同城区的人患某种疾病的概率是不是一样等等问题。