【学习记录】列联表检验、Kruskal-Wallis检验、Friedman检验

 目  录

1 算法基础理论

1.1列联表检验理论

1.1.1 定义

1.1.2 检验步骤

1.1.3一些补充问题

1.2 Kruskal-Wallis检验理论

1.2.1定义

1.2.2检验步骤

1.2.3适用情况

1.3 Friedman检验理论

1.3.1定义

1.3.2检验步骤

1.3.3适用情况

2 算法R语言实现

2.1列联表检验实现

2.1.1 常用函数及参数意义

2.1.2 例题

2.2 Kruskal-Wallis检验实现

2.2.1 常用函数及参数意义

2.2.2 例题

2.3 Friedman检验实现

2.3.1 常用函数及参数意义

2.3.2 例题

3 参考资料汇总

1 算法基础理论

1.1列联表检验理论

1.1.1定义

对列联表中两分类变量是否独立的检验,也是假设检验的一个重要内容,称为列联表分析或列联表检验。

1.1.2检验步骤

步骤:建立设置原假设H0,确定置信区间,根据H0构建卡方统计量,根据将统计量观测值与拒绝域比较,最后否定或接受原假设。

1.已知一个二维列联表(r行s列)

二维列联表,有变量A、B,证明变量A、B相互独立,则证明任意

2.建立假设

置信区间设置为95%,即α=0.05,置信度即置信区间,是指由样本统计量所构造的总体参数的估计区间,而α则是置信度的标准偏差。

3.构建统计量

已知:实际观察次数与理论次数之差的平方再除以理论次数得到的统计量近似服从卡方分布

则拒绝域为:

  1. 计算卡方统计量的观测值

根据列联表的值,计算卡方统计量的观测值,并且与比较(单侧检验,置信区间设置为95%,即α=0.05),若观测值落到拒绝域,则拒绝原假设,说明变量A、B具有相关关系。

1.1.3一些补充问题

  1. 关于卡方统计量的构建

在A、B变量独立的原假设下,将列联表中的变量(正态分布)用线性变换去除相关性(等同于独立),然后再求得卡方统计量。(具体证明见参考资料:卡方独立性检验原理 - 知乎 (zhihu.com))

(,实际观察次数与理论次数之差的平方再除以理论次数得到的统计量近似服从卡方分布)

2.列联表检验为单侧检验

卡方统计量构造的核心思想是:理论频率和实际频率差异的加权平均,这个差异越小,表示独立性越好;反之,差异越大,就越是要拒绝原假设,因此是单侧检验。

3.列联表检验的p值

P值为构建的卡方统计量大于算出的卡方统计量观测值的概率,p<α时,拒绝原假设。

1.2 Kruskal-Wallis检验理论

1.2.1定义

W.H.克鲁斯卡尔(Kruskal)和W.A.沃利斯(Wallis)于1952年提出了仅仅要求顺序(排序)测量尺度数据的非参数检验,不需要对总体分布形态做任何假定,用于多个连续型独立样本的比较。该检验被称为克鲁斯卡尔-沃利斯单因素秩方差分析(Kruskal-Wallis one-way analysis of variance by ranks)。

1.2.2检验步骤

1.数据从小到大排序,算出每个数据的秩

KW检验是一种秩和检验,根据所有数据从小到大排序,算出每个数据的秩。

在小样本的情况下:k=3,ni<=5时,KW统计量可通过表查询得到;

在大样本情况下:ni>5时,N越大,kw在零假设下近似服从自由度为(k-1)的卡方分布,此时KW 统计量可利用卡方分布进行检验(其中Ri为每组的秩和,Ni为每组的样本个数)。

2.统计量KW构建

如果样本中存在结值(有相同秩值的样本的个数,有多少相同的秩值就有多少组),则校正系数C为:

3.确立假设

检验的假设H0应为:多个总体分布相同,即多个样本来自同一总体;对立的备择假设H1为多个总体分布位置不全相同。

置信区间设置为95%,即α=0.05,置信度即置信区间,是指由样本统计量所构造的总体参数的估计区间,而α则是置信度的标准偏差。

4.计算统计量观测值与比较,若观测值大于时,拒绝原假设。

p值为构建的卡方统计量大于算出的卡方统计量观测值的概率,当用程序计算p值时,p<α时,拒绝原假设。

1.2.3适用情况

条件1:有一个观察变量和一个分组变量。

条件2:观察变量为非正态分布或方差不齐的连续变量或有序分类变量。

条件3:存在多个分组(k≥2)。

条件4:观察变量是相互独立的观测值。

1.3 Friedman检验理论

1.3.1定义

Friedman检验也称弗里德曼双向评秩方差分析。由Friedman在1937年提出,基本思想是独立对每一个区组分别对数据进行排秩,消除区组间的差异以检验各种处理之间是否存在差异。

1.3.2检验步骤

1.Friedman检验为非参数检验,用于多配对样本检验

2.构建统计量

算法a

算法b

算法c

数据集d1

100%

85%

90%

数据集d2

100%

80%

90%

数据集d3

95%

90%

90%

数据集d4

95%

80%

90%

friedman test是一个非参数检验,假设有3个算法a,b,c在数据集d1,d2,d3,d4上求预测准确率,则N和k分别是数据集个数和算法个数,在本例中分别为4和3

3.确立假设

检验的假设H0应为:多个总体分布相同,即多个样本来自同一总体;对立的备择假设H1为多个总体分布位置不全相同。

置信区间设置为95%,即α=0.05,置信度即置信区间,是指由样本统计量所构造的总体参数的估计区间,而α则是置信度的标准偏差。

4.计算统计量观测值与比较,若观测值大于时,拒绝原假设。

p值为构建的卡方统计量大于算出的卡方统计量观测值的概率,当用程序计算p值时,p<α时,拒绝原假设。

1.3.3适用情况

  1. 顺序级数据;
  2. 三个或更多组;
  3. 相关的小组;
  4. 从搭配的数值中随机地抽取样本

2 算法R语言实现

2.1列联表检验实现

2.1.1常用函数及参数意义

chisq.test(x, y = NULL, correct = TRUE,

           p = rep(1/length(x), length(x)), rescale.p = FALSE,

           simulate.p.value = FALSE, B = 2000)

x:数字矢量或矩阵。x和y也可以都是因子。

y:数字矢量;如果x是矩阵,则忽略。如果x是一个因子,那么y应该是一个长度相同的因子。

correct:指示在计算2乘2表的测试统计数据时是否应用连续性校正的逻辑:从所有|O-E|ŞO−EŞ差异中减去一半;然而,修正幅度不会比差异本身更大。如果simulate.p.value=TRUE,则不进行校正。

p:与x长度相同的概率向量。如果p的任何条目为负,则给出误差。

rescale.p:逻辑标量;如果为TRUE,则重新缩放p(如果必要)以求和为1。如果重新缩放.p为FALSE,并且p的总和不为1,则报错。

simulate.p.value:指示是否通过蒙特卡罗模拟来计算p值的逻辑。

B:指定蒙特卡洛测试中使用的重复次数的整数。

2.1.2 例题

代码:

a<-matrix(c(320,300,100,100,10,20),nrow=2,byrow=3,dimnames = list(c("w", "b"), c( "mzd", "ghd","wd" )) )

chisq.test(a)

结果:

,故在置信度为95%条件下拒绝原假设,认为不同种族对党派的支持有关。

2.2 Kruskal-Wallis检验实现

2.2.1 常用函数及参数意义

kruskal.test(formula, data, subset, na.action, ...)

参数

意义

formula

为函数表达式,一般为 response ~ group ,
response为y,group为分组变量

data

为数据集

subset

可以取数据集的子集进行分析

2.2.2 例题

有三个工厂生产一种零件,各工厂生产零件的重量(g)如下:
H0: 三个工厂生产的零件重量无显著差异
H1: 三个工厂生产的零件重量有显著差异

代码:

data<-data.frame(

  weigth=c(71,61,55,65,78,

          58,62,79,60,55,78,

          40,55,61,49,56),

  group=c(rep("A",5),

          rep("B",6),

          rep("C",5))

)

kruskal.test(weigth~group,data=data)

结果:

df=2,α=0.05时,,程序得出p=0.07384>0.05,故在置信区间为95%的条件下支持原假设,认为三个工厂生产的零件重量无显著差异。

2.3 Friedman检验实现

2.3.1 常用函数及参数意义

## Default S3 method:

friedman.test(y, groups, blocks, ...)

## S3 method for class 'formula'

friedman.test(formula, data, subset, na.action, ...)

y:数据值的数字矢量或数据矩阵。

group:如果这是一个向量,则给出y的对应元素的群的向量;如果y是矩阵,则忽略。如果不是因子对象,则它被强制为一个因子对象。

blocks:如果这是一个向量,则给出y的对应元素的块的向量;如果y是矩阵,则忽略。如果不是因子对象,则它被强制为一个因子对象。

formula:形式为a~b|c的公式,其中a、b和c分别给出数据值和相应的组和块。

data:一个可选的矩阵或数据帧(或类似的:请参阅model.frame),包含公式中的变量。默认情况下,变量取自环境(公式)。

subset:指定要使用的观测子集的可选向量。

na.action:指示当数据包含NA时应该发生什么的函数。默认为getOption(“na.action”)

2.3.2 例题

假设有3个算法a,b,c在数据集d1,d2,d3,d4上求预测准确率,得到如下的结果:

那么,在每个数据集上将算法从好到坏排名,得到算法在各个数据上的名次,如果有多个算法在同一数据集上性能相同,则平分名次,数据集d3中算法b和c的准确率相同,所以将2、3名平分给b和c,所以b和c的名次都是(2+3)/2=2.5。再计算各个算法在所有数据集上的平均名次,得到以下结果:

将3个算法的平均名次分别记为r1,r2,r3,那么friedman test的原假设h0就是“r1=r2=r3",即三个算法的性能没有明显差异。friedman统计量可计算如下:

代码:

algorithm_a<- c(1,1,0.95,0.95) #算法a在4个数据集中的准确率

algorithm_b<- c(0.85,0.8,0.9,0.8)

algorithm_c<- c(0.9,0.9,0.9,0.9)

mat<- cbind(algorithm_a, algorithm_b, algorithm_c)

rownames(mat)<- c('d1', 'd2', 'd3', 'd4')

mat #这个数据必须是matrix类型数据

friedman.test(mat)

结果:

df=2,α=0.05时,,程序得出p=0.02237<0.05,故在置信区间为95%的条件下拒绝原假设,认为三个算法的性能有明显差异。

3 参考资料汇总

参考资料:

数理统计复习笔记七——列联表的独立性检验_列联表拒绝域公式_米法·的博客-CSDN博客

卡方独立性检验原理 - 知乎 (zhihu.com))

请教:列联表分析中的卡方检验,为什么是单侧的? - 计量经济学与统计软件 - 经管之家(原人大经济论坛) (pinggu.org)

科学网—列联表检验之R篇 - 林元震的博文 (sciencenet.cn)

列联表中变量独立性的判断(R语言版) - 知乎 (zhihu.com)

六、列联表独立性检验例题(R语言)_列连表与独立性题目_一蓑烟雨晴的博客-CSDN博客

Kruskal-Wallis(详细)和卡方检验的介绍_ LUC 的博客-CSDN博客

蒲虎. Kruskal-Wallis检验原理介绍及其应用[J]. 兴义民族师范学院学报, 2019(04):108-111.

Kruskal-Wallis H检验(Kruskal-Wallis H Test)——理论介绍 - 梦特医数通 (mengte.online)

R语言统计—Kruskal-Wallis检验 - 知乎 (zhihu.com)

friedman test的原理及r实现_r语言friedman检验代码_斗南花卉市场的博客-CSDN博客

课程论文爆改博客,公式不想再打一遍了,全用图片代替了。 

  • 45
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值