【通俗理解】显著性检验,T-test,P-value

源:https://www.cnblogs.com/hdu-zsk/p/6293721.html

1 前言

显著性检验:用于判定实验结果是否由随机误差导致,即用量化方法来判断实验结果能否被接受。

举例:
赵先生开了一家日用百货公司,该公司分別在郑州和杭州开设了分公司。现在存在下列数据作为两个分公司的销售额,集合中的每一个数代表着一年中某个月的公司销售:

郑州分公司 Z={23,25,26,27,23,24,22,23,25,29,30}$

杭州分公司 H={24,25,23,26,27,25,25,28,30,31,29}H=\{24,25,23,26,27,25,25,28,30,31,29\}

现在,赵先生想要知道两个公司的销售额是否有存在明显差异(郑州分公司销售额>杭州分公司销售额,抑成反之),以便对接下来公司的战略业务调整做出规划。
下属们知知道赵老板的难处,纷纷建议“只需要求平均值就知道哪个分公司的销售额更大了"。但是作为拥有高学历的赵先生懂得这样一件哲学即“我们生活在概率的世界之中”。那也就意味着,平均值并不能够说明什么问题,即便杭州分公司的销售额平均值大于郑州分公司的销售额平均值仍然不能说明杭州分公司的销售额一定就大于郑州分公司的销售额,因为“这样一种看似存在的大于关系实质上可能是偶然造成的,而不是一种必然”。
赵先生最终決定,使用方差验检查这两个数据。(请先忽略为什么用方差检验,检验方法的选择下文中会详述),最后赵先生发现,方差检验的 P 值=0.2027,那也就意味着,虽然杭州分公司的年平均销售额 26.63 大于郑州分公司销售额 25.18,但实质上,两个分公司销售额并没有明显差异。

(此时的你心中有万干草泥马奔过:方差检验是怎么做的?p 值是什么鬼?为什么 p=0.2027 意味着销售额没有明显差异?)

【统计学解释】

虽然样本中,苏州销售额均值大于郑州,但 T 检验发现这是随机导致的(P>0.05),当样本量足够大时可能他们的销售额就没有差异了。
**假设:**两个样本集之间不存在任何区别。
**结果:**在显著性水平 α =0.05 的情况下,p>0.05 接受原假设,p 值< 0.05 拒绝原假设
**方法:**F 值 = 组间方差与组内方差的比值,查表:F 实际值>F 查表值,则 p<=0.05 ;F 实际值<F 查表值,则 p>0.05

无论你从事何种领域的科学研究还是统计调查,显著性检验作为判断两个乃至多个数据集之间是否存在差异的方法被广泛应用于各个科研领域。笔者作为科研界一名新人也曾经在显著性检验方面吃过许多苦头。后来醉心于统计理论半载有余才摸到显著性检验的皮毛,也为显著性检验理论之精妙,品种之繁多,逻辑之严谨所折服。在此,特写下这篇博文,以供那些仍然挣扎在显著性检验泥潭的非统计专业的科研界同僚们参考。由于笔者本人也并非统计专业毕业,所持观点粗陋浅鄙,贻笑大方之处还望诸位业界前辈,领域翘楚不吝赐教。

本篇博文致力于解决一下几点问题,在此罗列出来:

  1. 什么是显著性检验?
  2. 为什么要做显著性检验?
  3. 怎么做显著性检验?

下面就请跟随笔者的步伐一步步走入显著性检验的“前世与今生”。


2 什么是显著性检验?

在统计学中,显著性检验是“统计假设检验”的一种方法【注:统计学中,统计推断主要用于两方面任务,一是假设检验,即判断设立模型的前提假设是否成立,如果不成立则模型也不可信;二是参数估计,即假设一个模型,估计该模型的参数,以便用于以后的预测】。显著性检验是用于检测科学实验中实验组与对照组之间是否有差异以及差异是否显著的办法。实际上,了解显著性检验的“宗门背景”(统计假设检验)更有助于一个科研新手理解显著性检验。

“统计假设检验”指出了“显著性检验”的前提条件“统计假设”,换言之“无假设,不检验”。任何人在使用显著性检验之前必须明白自己的科研假设是什么,否则显著性检验就是“水中月,镜中花”,可望而不可即。用更通俗的话来说就是要先对科研数据做一个假设,然后用检验来检查假设对不对。

假设检验的基本思想是“小概率事件”原理,其统计推断方法是带有某种概率性质的反证法。小概率思想是指小概率事件在一次试验中基本上不会发生。反证法思想是先提出检验假设,再用适当的统计方法,利用小概率原理,确定假设是否成立。即为了检验一个假设 H0 是否正确,首先假定该假设 H0 正确,然后根据样本对假设 H0 做出接受或拒绝的决策。如果样本观察值导致了“小概率事件”发生,就应拒绝假设 H0,否则应接受假设 H0 [1] 。

假设检验中所谓“小概率事件”,并非逻辑中的绝对矛盾,而是基于人们在实践中广泛采用的原则,即小概率事件在一次试验中是几乎不发生的,但概率小到什么程度才能算作“小概率事件”,显然,“小概率事件”的概率越小,否定原假设 H0 就越有说服力,常记这个概率值为 α(0<α<1),称为检验的显著性水平。对于不同的问题,检验的显著性水平 α 不一定相同,一般认为,事件发生的概率小于 0.1、0.05 或 0.01 等,即“小概率事件” [1] 。

一般而言,把要检验的假设称之为原假设(或零假设),记为 H0;把与 H0 相反的假设称之为备择假设,记为 H1。

则存在四种情况可能性:

  • 原假设是真的,但检验结果告诉你是假的–>第一类错误;
  • 原假设是真的,检验结果也告诉你是真的–>正确;
  • 原假设是假的,但检验结果告诉你是真的–>第二类错误;
  • 原假设是假的,检验结果也告诉你是假的–>正确。

通常我们考虑的是“原假设是否为真?”这一命题,以便我们判断参数估计的结果是否可信。因此我们通常关注前两种可能性,实际上最关心第一类错误发生的概率,如果某些统计特征告诉我们,第一种错误发生的概率极低,那说明原假设是真的,反之则说明原假设有可能是假的。

当只考虑第一类错误发生的概率时,通常会给出一个我们能接受的显著性水平 α ,当概率高于这个水平时,表明第一类错误的发生概率比较高,需要采信原假设;当概率低于这个水平时,表明第一类错误发生的概率比较小,需要否定原假设。

只限定犯第一类错误的最大概率 α, 不考虑犯第二类错误的概率 β 。我们把这样的假设检验称为显著性检验,概率 α 称为显著性水平。显著性水平是数学界约定俗成的,一般有 {α=0.05,0.025.0.01}\{α =0.05,0.025.0.01\} 三种取值情况。代表着显著性检验的结论错误率必须低于 5%5\%2.5%2.5\%1%1\%(统计学中,通常把在现实世界中发生几率小于 5%的事件称之为“不可能事件”)。

以前面赵先生为例:

第一点:如上文所述的一样,“无假设,不检验”,赵先生做了什么样的假设(Hypothesis)?

由于赵先生想要知道两个公司的销售额是否有存在明显的差异 ,所以他的假设就是“样本集 Z(郑州分公司)和样本集 H(杭州分公司)不存在显著性差异,换言之这两个集合没有任何区别(销售额间没有区别)!”

那么问题来了,为什么赵先生要假设这两个样本集之间不存在任何区别,而不是假设这两个样本集存在区别。因为这个假设正是方差检验的原假设。那么问题又来了,什么是原假设。所谓原假设是数学界为了方便讨论而默认的“原始假设”。没有为甚么可言,约定俗成罢了。

第二点:p 值怎么回事?

这里并不用管 p 值是怎样得到的,直接给出结论。在显著性水平 α =0.05 的情况下,p>0.05 接受原假设,p 值< 0.05 拒绝原假设。我们的原假设是样本集 Z 和样本集 H 间不存在显著性差异,但是由于 p=0.2027 > 0.05,所以接受原假设,即样本集 Z 和样本集 H 间不存在显著性差异。当然有接受就有拒接,如果这里的 p 值小于 0.05,那么就要拒绝原假设,即集合 Z 和集合 H 间存在显著性差异。

第三点:怎么做方差检验以及为何做方差检验之后再细讲,这里暂且不表。

3 什么是统计假设检验?

所谓统计假设检验就是事先对总体(随机变量)的参数总体分布形式做出一个假设,然后利用样本信息来判断这个假设是否合理。而把只限定第一类错误概率的统计假设检验称之为显著性检验。在上例中,我们的假设就是一种显著性检验。因为方差检验不适用于估计参数和估计总体分布,而是用于检验两个试验组间是否有差异。而方差检验正是用于检测我们所关心的两个集合(两个分布)的均值是否存在差异。

假设检验(hypothesis testing),又称统计假设检验,是用来判断样本与样本、样本与总体的差异是由抽样误差引起还是本质差别造成的统计推断方法。显著性检验是假设检验中最常用的一种方法,也是一种最基本的统计推断形式,其基本原理是先对总体的特征做出某种假设,然后通过抽样研究的统计推理,对此假设应该被拒绝还是接受做出推断。常用的假设检验方法有 Z 检验、t 检验、卡方检验、F 检验等 [1] 。

4 为什么要做显著性检验?

因为我们想要判断样本与我们对总体所做的假设之间的差异是纯属机会变异,还是由我们所做的假设与总体真实情况之间不一致所引起的。 在我们的例子中,差异就是 H 的均值要高于 Z 的均值,但是最终的结论 p>0.05 证明,这个差异纯属机会变异(H 均值>Z 均值是偶然的,当 H 和 Z 的采样点数趋于无穷多时,H 的均值会趋近等于 Z 的均值)而不是假设与真实情况不一致。如果 p 值<0.05,那么也就意味着我们的假设(H 集合和 Z 集合没差别)与真实情况不一致,这就使得假设不成立,即 H 集合和 Z 集合有差别。

5 怎么做显著性检验?

1、提出检验假设又称无效假设,符号是 H0;备择假设的符号是 H1 [2] 。

H0:样本与总体或样本与样本间的差异是由抽样误差引起的 [2] ;

H1:样本与总体或样本与样本间存在本质差异 [2] ;

预先设定的检验水准为 0.05;当检验假设为真,但被错误地拒绝的概率,记作 α,通常取 α=0.05 或 α=0.01 [2] 。

2、选定统计方法,由样本观察值按相应的公式计算出统计量的大小,如 X2 值、t 值等。根据资料的类型和特点,可分别选用 Z 检验,T 检验,秩和检验卡方检验等 [2] 。

3、根据统计量的大小及其分布确定检验假设成立的可能性 P 的大小并判断结果。若 P>α,结论为按 α 所取水准不显著,不拒绝 H0,即认为差别很可能是由于抽样误差造成的,在统计上不成立;如果 P≤α,结论为按所取 α 水准显著,拒绝 H0,接受 H1,则认为此差别不大可能仅由抽样误差所致,很可能是实验因素不同造成的,故在统计上成立。P 值的大小一般可通过查阅相应的界值表得到 [2] 。

4、注意问题

1、作假设检验之前,应注意资料本身是否有可比性 [2] 。

2、当差别有统计学意义时应注意这样的差别在实际应用中有无意义 [2] 。

3、根据资料类型和特点选用正确的假设检验方法 [2] 。

4、根据专业及经验确定是选用单侧检验还是双侧检验 [2] 。

5、判断结论时不能绝对化,应注意无论接受或拒绝检验假设,都有判断错误的可能性 [2] 。

两类错误

[编辑](javascript:;)

假设检验的基本思想是利用“小概率事件”原理做出统计判断的,而“小概率事件”是否发生与一次抽样所得的样本及所选择的显著性水平 α 有关,由于样本的随机性及选择显著性水平 α 的不同,因此检验结果与真实情况也可能不吻合,从而假设检验是可能犯错误的 [1] 。

一般地,假设检验可能犯的错误有如下两类 [1] :

① 当假设 H0 正确时,小概率事件也有可能发生,此时我们会拒绝假设 H0。因而犯了“弃真”的错误,称此为第一类错误,犯第一类错误的概率恰好就是“小概率事件”发生的概率 α,即 [1]

P{拒绝 H0/H0 为真}=α

② 当假设 H0 不正确,但一次抽样检验未发生不合理结果时,这时我们会接受 H0,因而犯了“取伪”的错误,称此为第二类错误,记 β 为犯第二类错误的概率,即 [1]

P{接受 H0/H0 不真}=β

理论上,自然希望犯这两类错误的概率都很小。当样本容量 n 固定时,α、β 不能同时都小,即 α 变小时,β 就变大;而 β 变小时,α 就变大。一般只有当样本容量 n 增大时,才有可能使两者变小。在实际应用中,一般原则是:控制犯第一类错误的概率,即给定 α,然后通过增大样本容量 n 来减小 B。这种着重对第一类错误的概率 α 加以控制的假设检验称为显著性检验 [1] 。

显著性检验可以分为参数检验和非参数检验。

  • 参数检验:要求样本来源于正态总体(服从正态分布),且这些正态总体拥有相同的方差,在这样的基本假定(正态性假定和方差齐性假定)下检验各总体均值是否相等,属于参数检验。
  • 非参数检验:当数据不满足正态性和方差齐性假定时,参数检验可能会给出错误的答案,此时应采用基于秩的非参数检验。

5.1 参数检验方法

参数检验的方法及其相应知识点的解释(这里只给出参数检验中常见的方差分析):

方差分析主要分为’① 单因素一元方差分析’; '② 双因素一元方差分析 '; '③ 多因素一元方差分析 '; '④ 单因素多元方差分析 '。下面一节对各种方差分析的实现方法进行介绍。但在介绍之前,我要首先“剧透”一下两个重要的点,理解这些点有助于区别不同类型的方差分析。

先解释一下什么叫做"元"。我假定正在看这篇博文的人一定具有小学以上文化水平,那么想必你一定对“一元二次方程”“二元一次方程”“多元一次方程”这种概念不陌生。所谓的“元”,正是指未知变量的个数。在统计假设检验中,仍然把待检验的未知变量称之为“元”而把影响未知变量的行为(事件)称之为“因素”。有过机器学习基础的同学可以把“元”和“因素”分别理解成机器学习中的“特征个数”和“标签个数”。拥有多个特征便是“多元”,而拥有多个标签便是“多因素”。

① 单因素一元方差分析的方法和案例:

相关 MATLAB 函数:

函数一:anova1( X, Group, displayopt)

参数解释:在第一种用法中,X 是一个 n 行 1 列的数组,Group 也是一个 n 行 1 列的数组。X 为待检验的样本集,这个样本集中包括若干个对照组和实验组的全部数据。那么机器怎么知道哪个数据属于哪个组呢?很简单,通过 Group 这个列向量一一对应指明即可。一下这个例子来自于 MATLAB 的 help 文档,在这里用于实例说明:

假定现在有三组数据

组一(st):82 86 79 83 84 85 86 87

组二(al1):74 82 78 75 76 77

组三(al2):79 79 77 78 82 79

现在需要对这三组数据做方差检验,使用 anova1 函数的方法如下

1.首先将所有的数据放在同一个数组 strength 中:

>> strength = [82 86 79 83 84 85 86 87 74 82 78 75 76 77 79 79 77 78 82 79];

2.设置对应与 strength 对应位置的标签为 alloy:

>> alloy = {‘st’,‘st’,‘st’,‘st’,‘st’,‘st’,‘st’,‘st’,‘al1’,‘al1’,‘al1’,‘al1’,‘al1’,‘al1’,‘al2’,‘al2’,‘al2’,‘al2’,‘al2’,‘al2’};

3.调用 anova1 函数

>> p = anova1(strength,alloy)

最终得到的结果会是一个数值和两幅图,一个值是 p 值。p 值得看法在上文已经介绍过,这里不再细细的介绍。在本例中,p 的值如下

p =

1.5264e-004

显然,从 p 值看,三组值之间存在显著性差异。有一点必须提一下:这里 p 存在显著性差异并不意味着三组之间两两都存在显著性差异,而只是说明显著性差异在这三组之间存在。

第一幅图是一张表,这张表被称之为 ANOVA 表。相信许多非统计专业的同学见到 ANOVA 表的一瞬间是崩溃的,一堆问题奔涌而出:

Source 是什么鬼?SS 是什么鬼,df 是什么鬼,MS 是什么鬼,F 是什么鬼,Prob>F 是什么鬼,etc.

这里为了解决“什么鬼”的问题,对这张表给出详细的解释:

Source 表示方差来源(谁的方差),这里的方差来源包括 Groups(组间),Error(组内),Total(总计);

SS(Sum of squares)表示平方和

df(Degree of freedom)表示自由度

MS(Mean squares)表示均方差

F 表示 F 值(F 统计量),F 值等于组间均方和组内均方的比值,它反映的是随机误差作用的大小。

Prob>F 表示 p 值

这里需要引出两个小问题:第一个小问题是 F 值怎么使用,第二个小问题是 p 值和 F 值的关系是什么?

率先普及一下 p 值和 F 值之间的关系:

F 实际值>F 查表值,则 p<=0.05

F 实际值<F 查表值,则 p>0.05

不难看出 F 值在本例中等于 15.4,它正是组间方差 92.4 和组内方差 6 的比值。查 F 分布表(下图),

根据 n=19( Total 的 df),m=2(Groups 的 df)

可得 F0.05( m, n-m-1) = F0.05( 2, 16) = 3.634。F 实际值 15.4>F 查表值 3.634,所以可以判定显著性差异存在,且 p 值小于 0.05

以上讲述了如何仅仅使用 F 值判断显著性差异的方法并讲述了 F 值同 p 值之间的关系。下面这张表格是箱型图,它的看法如下图所表注:

这里有必要提一下 anova1 函数中的参数 displayopt 的作用。在大规模的 anova1 调用中(例如把 anova1 放在 for 循环中反复调用),需要把 displayopt 设置为’off’,否则 anova1 每调用一次就会绘制两幅图,这样会迅速的耗费计算机的内存,容易造成程序崩溃。

除了上文中介绍的第一种调用 anova1 的方式,还有一种方式用于均衡的方差分析。所谓均衡就是要求不同的组别内的统计数据个数必须相同。在上例中出现的各个组的统计个数分别为{8,6,6}就属于非均衡。在均衡状态下,每个组的数据单独构成 X 中的一列,这样便可以省略参数 Group,调用方式就可以简化为 anova1(X)

在上文中,我们提到过。方差分析必须满足两条假设,分别是正态性假定和方差齐性假定。因此,在一个完整的统计工程中,必须首先检测数据的正态性假定和方差齐性假定,这就涉及到另外两个函数 lillietest 正态检验函数(这正是我们上文提到的分布假设检验而不是参数检验,它检验的目标是数据集服从何种分布)和 vartestn 方差齐性检验(这正是我们上文提到的参数检验而不是分布假设检验 ,它检测的目标是数据集的分布服从什么样的参数,这里就是方差)

函数二:lillietest(X)

>> [h,p] = lillietest (strength(1:8))

h =

 0

p =

0.5000

解释:h = 0 可以认为数据服从正态分布,h=1 则认为不服从正态分布

p >0.05 可以认为接受原假设 h = 0,则数据服从正态分布

>> [h,p] = lillietest (strength(9:14))

h =

 0

p =

0.5000

>> [h,p] = lillietest (strength(15:20))

h =

 0

p =

0.5000

可以得出结论,strength 中三组数都服从正态分布

函数三:vartestn(X, Group)

>> p = vartestn(strength,alloy,‘off’)

p

=0.5142

注意:X 和 Group 必须是列向量,否则会报错

p>0.05 则说明 X 中的不同 Group 是齐次的,也就是方差性齐。

② 双因素一元方差分析的方法和案例:

正如上文所述,既然是双因素,那便是有多个标签了。因此双因素一元方差分析可以理解成“单特征双标签机器学习技术”。由于双因素一元方差分析要求数据是均衡的,所以它的标签可以省略,就如同上文中介绍的 anova1 的第二种使用方法一样。这里的例子引用于 MATLAB 的 anova2 的 help 文档,用于说明 anova2 的使用方法。

这里有一批爆米花数据,现在我们知道这些爆米花的质量打分同两个因素相关,一个是爆米花的品牌(有三个品牌:Gourmet,National,Generic)另一个是爆米花的制作工艺(油炸,气压)。这些数据如下所述:

                 brand    Gourmet        National       Generic

methods

 油炸                        5.5000          4.5000         3.5000

 油炸                        5.5000          4.5000         4.0000

 油炸                        6.0000          4.0000         3.0000

 气压                        6.5000          5.0000         4.0000

 气压                        7.0000          5.5000         5.0000

 气压                        7.0000          5.0000         4.5000

现在需要了解的目标有三个,第一:列和列之间是否有显著性差异(品牌间的显著性差异),原假设是显著性差异不存在;第二:行与行之间是否存在显著性差异,原假设是显著性差异不存在 ;第三:品牌和方法之间的交互作用是否明显,原假设是交互作用不明显

为了完成以上三个问题,所以特别引入 anova2 函数,anova2 函数的参数如下:

p = anova2( X, reps, displayopt)

X 即为待检验数组。其中,X 的每列一代表一种因素,X 的每若干行代表另一种因素,这里的若干使用 reps 指明。displayopt 同 anova1 一样,这里不再详述。anova2 的返回是一值一幅图。下面是具体的 MATLAB 方法:

>> popcorn =[

5.5000 4.5000 3.5000

5.5000 4.5000 4.0000

6.0000 4.0000 3.0000

6.5000 5.0000 4.0000

7.0000 5.5000 5.0000

7.0000 5.0000 4.5000];

>> [p,table,stats] = anova2(popcorn,3)

p =

0.0000    0.0001    0.7462

解释:p(1) = 0.0000, 推翻原假设,所以列与列之间的显著性差异存在(品牌间存在显著性差异);p(2) = 0.0001,推翻原假设,所以行与行之间的显著性差异存在(方法间的显著性差异存在);p(3) = 0.7462,保留原假设,则品牌和方法间的交互作用不明显。

图表中的 Columns 代表列,Rows 代表行,Interaction 代表交互作用,其他的与我们在 anova2 中讲述的完全相同,这里也不再详细分析。

③ 多因素一元方差分析的方法和案例:

p = anovan(X, Group, Opt);

其中,X 代表着待检验数据;Group 代表着 X 的因素,由于是多因素,所以 Group 是多个列组成的。Opt 可以选择为’model’,model 后面可以填写’full’和’interaction’。

比如因素有三个 x,y,z,那么如果 model 为 interaction,计算结果会包括 x 的显著性,y 的显著性,z 的显著性,xy,xz,yz 的交互影响显著性

如果 model 为 full,计算结果会包括 x 的显著性,y 的显著性,z 的显著性,xy,xz,yz 的交互影响显著性以及 xyz 的交互显著性。

这里的例子仍然来自于 MATLAB 的 help 文档,y 是待检验的数据,g1,g2,g3 是与 y 中数据一一对应的 3 个因素(数据标签)

y = [52.7 57.5 45.9 44.5 53.0 57.0 45.9 44.0]';

g1 = [1 2 1 2 1 2 1 2];

g2 = {‘hi’;‘hi’;‘lo’;‘lo’;‘hi’;‘hi’;‘lo’;‘lo’};

g3 = {‘may’;‘may’;‘may’;‘may’;‘june’;‘june’;‘june’;‘june’};

>> p = anovan(y,{g1 g2 g3},‘model’,‘interaction’)

p =

0.0347

0.0048

0.2578

0.0158

0.1444

0.5000

这里有一个使用的小窍门,如果你想做非平衡双因素一元方差分析那么也可以采用多因素一元方差分析函数。

④ 单因素多元方差分析的方法和案例:

[d, p] = manova1(X, Group);

p,X 和 Group 与之前相同。该方差分析的原假设是“各组的组均值是相同的多元向量”这里对 d 做出解释:

d=0,接受原假设

d=1,拒绝原假设,认为各组的组均值不完全相同,但是不能拒绝它们共线的假设。

d=2,拒绝原假设,各组的组均值向量可能共面,但是不共线。

四种商品(x1,x2,x3,x4)按照不同的两种销售方式进行销售,数据如下:

编号 x1 x2 x3 x4 销售方式

1 125 60 338 210 1

2 119 80 233 330 1

3 63 51 260 203 1

4 65 51 429 150 1

5 130 65 403 205 1

6 65 33 480 260 1

7 100 34 468 295 2

8 65 63 416 265 2

9 110 69 377 260 2

10 88 78 299 360 2

11 73 63 390 320 2

12 103 54 416 310 2

13 64 51 507 320 2

>> X =

125 60 338 210

119 80 233 330

63    51   260   203

65    51   429   150

130 65 403 205

65    33   480   260

100 34 468 295

65    63   416   265

110 69 377 260

88    78   299   360

73    63   390   320

103 54 416 310

64    51   507   320

>> Groups =

 1

 1

 1

 1

 1

 1

 2

 2

 2

 2

 2

 2

 2

>> [d, p] = manova1(X, Groups);

d =

 0

p =

0.0695

因此,拒绝原假设,各组的组均值不是相同的多元向量。

5.2 非参数检验方法

到这类,参数检验部分就算是说完了。我们可以回顾一下,参数检验的四种函数分为 anova1,anova2,anovan,manova1。他们都基于共同的两个假设:正态性假定和方差齐性假定 ,分别对应着函数 lillietest 和 vartestn。但是,我们在实际工作中,不可能总是遇到满足这两个假定的统计数据,这时候,如果强行采用参数检验就会造成错误。此时,可以采用基于秩和的非参数检验。这里我们介绍两种非参数检验:Kruskal-Wallis 检验,Friedman 检验。通过参数检验的部分介绍,想必读者已经对显著性检验入门,有些细节这里不再详细介绍,留作有兴趣读者自行查询。这里对分参数检验只做必要介绍。

①Kruskal-Wallis 检验

Kruskal-Wallis 检验又被称之为单因素非参数方差分析,是非参数版的 anova1。该检验的原假设是:k 个独立样本来自于相同的正态总体。其 MATLAB 函数如下:

p = kruskalwallis(X,Group)

X,Group,p 和参数检验里的完全相同。不再详细介绍。

②Friedman 检验

Friedman 检验又被称之为双因素秩方差分析,是非参数版的 anova2。同 anova2 一样,待检验的数据也必须是均衡的。但是需要特别注意的是,Friedman 检验和 anova2 检验不完全相同,anova2 同时注意两个因素对待检验数据的影响,但是,Friedman 检验只注重 2 个因素中的其中一个对待检验数据的影响,而另一个因素则是用来区分区组用的。

如上图所示矩阵 X,Friedman 检验只关注 X 的各个列(因素 A)水平之间有无显著差异,他对各行之间(因素 B,也被称之为区组因素)完全不感兴趣。因此,Friedman 检验的原假设是 k 个独立样本(X 的各列)来自于相同的正态总体。至于为何 Friedman 检验对因素 B 不感兴趣,这里通过一个例子说明。该例子来源于《MATLAB 统计分析与应用 40 个案例分析》

有 4 名美食评委 1234 对来自于四个地区 ABCD 的名厨的名菜水煮鱼做出评价打分,数据如下:

           地区       A       B       C      D

美食评委

 1                    85     82     82     79

 2                    87     75     86     82

 3                    90     81     80     76

 4                    80     75     81     75

现在我们想知道,这四个地方的水煮鱼品质是否相同。

数据分析:我们的目标是四个地方水煮鱼的品质是否相同。那么同一个评委对四个地区厨师的打分就具有可参考性,而不同地区评委之间对同一个厨师的打分参考性几乎没有(受评委自己的主观意识影响太强)。因此,我们认为四个地区是因素 A,而评委是因素 B(区组因素),不同区组之间的数据没有可比较性。

>> X =

85    82    82    79

87    75    86    82

90    81    80    76

80    75    81    75

>> p = friedman(X,1)

p = 0.0434

因此可以认为,四个地区制作水煮鱼的水平有显著性差别。至于是那两个之间有显著性差别还需要一一比较。

6 结语

讲到这里,常见的显著性检验方法就算是讲完了。希望通过这篇博文可以使显著性检验不再成为各位看官的心头大患,不必再谈“检”色变。如果真的可以做到这样,于愿足矣。