关于显著性检验,你想要的都在这儿了!!(基础篇)

这里有必要提一下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

 

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

 

非参数检验:

到这类,参数检验部分就算是说完了。我们可以回顾一下,参数检验的四种函数分为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

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

 

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

转载至:https://www.cnblogs.com/hdu-zsk/p/6293721.html

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值