目录

一、 Kruskal-Wallis检验简介

二、matlab函数

三、 实例


参考链接:

一、 Kruskal-Wallis检验简介

  • 实质上是两独立样本时的Mann-Whitney检验在多个独立样本下的推广,用于检验多个总体的分布是否存在显著差异。
  • 假设

H0:多个独立样本来自的多个总体的分布无显著差异。

  • 检验步骤:
  • 假设有m个相互独立的简单随机样本(X1, …, Xni) (i=1,…, m)
  • 将多组样本数混合并按升序排序;
  • Ri (i=1, …, m)表示第 i个样本的ni个观测值X1, …, Xni在此排列中的秩的和;
  • 计算统计量
  • (当N充分大时H近似服从卡方分布,自由度df = m - 1);
  • 对于给定的显著性水平α和自由度df = m-1,查出卡方分布上侧分位数
  • 当,m组样本不全来自同一总体。

二、matlab函数

<1>p=kruskalwallis(X)


    根据样本观测值矩阵X进行Kruskal-Wallis检验,检验矩阵X的各列是否来自于相同的总体,X是一个mxn的矩阵,X的每一列是一个独立的样本,包含m个相互独立的观测。返回检验的p值,如果p小于等于显著性水平,拒绝原假设,否则接受原假设,原假设表示X的各列来自于相同的总体。


<2>p=kruskalwallis(X,group)


 当X是一个矩阵时,用group参数(一个字符数组或字符串元胞数组)设定箱线图的标签,group的每一行(或每个元胞)与X的每一列对应,也就是说group的长度等于X的列数。 如果X是一个向量,此时用group来指定X的每个元素(观测值)所在的组。


<3>p=kruskalwallis(X,group,displayopt)


 通过displayopt参数设定是否显示方差分析表和箱线图,当displayopt参数设定为‘on’时(默认)显示方差分析表和箱线图;设为‘off’时,不显示方差分析表和箱线图。


<4>[p,table,stats]=krusalwallis(......)


  还返回元胞数组形式的方差分析表table。


<5>[p,table,stats]=kruskalwallis(....)


  还返回一个结构体变量stats,用于后续的多重比较。当kruskalwallis函数给出的结果拒绝了原假设,则在后续的分析中,可以调用multcompare函,把stats作为它的输入参数,进行多重比较。

三、 实例

某灯泡厂有四种不同配料方案制成的灯丝生产四批灯泡,每一批中随机抽取若干个做寿命试验,寿命数据如下表:

r语言如何秩和检验 kruskal-wallis秩和检验 r语言_方差分析

根据上表中的数据分析灯丝的不同配料方案对灯泡寿命有无显著影响。显著性水平为0.05

灯泡寿命通常不服从正态分布,不满足参数方差分析的基本假定,应该做非参数检验,下面调用kruskalwallis函数作非参数Kruskal-Wallis检验。

clc;clear;close all;
%第1种配料方案的灯泡的寿命,需要转置
A1=[1600,1610,1650,1680,1700,1720,1800]';
%repmat函数,其功能是以第一个参数的内容堆叠在和A1同纬度的矩阵阵g1中
%是group参数的一部分,用来指定观测值所在的分组
g1=repmat({'A1'},size(A1));
 
%第2种配料方案
A2=[1580,1640,1600,1650,1660]';
g2=repmat({'A2'},size(A2));
 
%第3种配料方案
A3=[1460,1550,1600,1620,1640,1610,1540,1620]';
g3=repmat({'A3'},size(A3));
 
%第4种
A4=[1510,1520,1530,1570,1600,1680]';
g4=repmat({'A4'},size(A4));
 
%将4种配料方案的灯泡寿命放在一起构成一个向量
life=[A1;A2;A3;A4];
group=[g1;g2;g3;g4];
 
%调用kruskalwallis函数作Kruskal-Wallis检验
[p1,table1,stats1]=kruskalwallis(life,group)

r语言如何秩和检验 kruskal-wallis秩和检验 r语言_学习_02

r语言如何秩和检验 kruskal-wallis秩和检验 r语言_学习_03

kruskalwallis函数返回的检验值p=0.0213<0.05,说明在显著性水平0.05下,两种检验均拒绝了原假设,认为灯丝的不同配料方案对灯泡有显著影响

多重比较

由于Kruskal-Wallis非参数检验认为灯丝是不同配料方案对灯泡寿命有显著影响,下面通过多重比较来检验在哪种配料方案下灯泡寿命的差异是显著的。

%调用multcompare函数对不同配料方案下灯泡的寿命进行多重比较
[c,m,h,gnames]=multcompare(stats1);
[gnames,num2cell(m)]      %把矩阵m转换为元胞数组,与gnames放在一起显示

r语言如何秩和检验 kruskal-wallis秩和检验 r语言_数组_04


注意: 这些区间虽然可以用来检验,但不是联合置信区间。

c =


    1.0000    2.0000   -6.6331    4.8429   16.3188    0.6993

    1.0000    3.0000   -0.5630    9.5804   19.7237    0.0722

    1.0000    4.0000    1.0724   11.9762   22.8800    0.0247

    2.0000    3.0000   -6.4356    4.7375   15.9106    0.6961

    2.0000    4.0000   -4.7344    7.1333   19.0010    0.4110

    3.0000    4.0000   -8.1888    2.3958   12.9804    0.9377

ans =


  4×3 cell 数组


    {'A1'}    {[20.1429]}    {[2.8835]}

    {'A2'}    {[15.3000]}    {[3.4117]}

    {'A3'}    {[10.5625]}    {[2.6972]}

    {'A4'}    {[ 8.1667]}    {[3.1145]}

从上面结果中可以看出,在显著性水平0.05下,灯丝的第1、4两种配料方案所对应的灯泡寿命的差异是显著的,其余配料方案所对应的灯泡寿命的差异是不显著的,并且第1种方案的平均秩最大,即灯丝的第一种配料方案所对应的灯泡的寿命最长。