Wilcoxon秩和检验MATLAB实现

本文介绍了Wilcoxon秩和检验的基本概念,用于检验两组数据是否有显著差异,通过MATLAB实例展示了如何使用ranksum函数,并解释了p值和q值的含义。最后,讨论了如何正确处理不同数据结构的比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在看论文,看到有作者用Wilcoxon秩和检验来检验两个算法的差异性,好奇了解了一下。

定义

简单点说,就是判断两组数据有无差异性,但是看了很多文章,很多人都说是在对比中位数的情况下的比较。想详细了解的,可以调转链接

关于Wilcoxon秩和检验(Wilcoxon rank-sum test) - 知乎 (zhihu.com)

威尔科克森秩和检验 - MATLAB ranksum - MathWorks 中国

说的再好,还是直接看实例,看得头疼

在这里直接使用大规模的(0,1)均匀分布数据来实现

x=rand(1,10000);
y=rand(1,10000);
[p,q,r]=ranksum(x,y)

p = 
   0.640773667675908
q = logical
   0
r = 包含以下字段的 struct:
       zval: 0.466617355456995
    ranksum: 100195501

在这里本人对于输出结果的解读是这样的,在64%水平上没有差异。按官方的表示是

表示未能在 64% 显著性水平上拒绝原假设

多次运行,发现q是不变的,在MATLAB中文网里面说过的,q要么是0,要么是1,所以,得出结论:

当q=0时,表示两组数据没有差异的;反之,为1时是有差异的

验证一下

x=rand(100,1);
y=5*rand(100,1);
[p,q,r]=ranksum(x,y)

p = 
     5.026024152685828e-22
q = logical
   1
r = 包含以下字段的 struct:
       zval: -9.647721020817423
    ranksum: 6101

还有就是考虑列时,同样的效果

x=rand(10000,1);
y=rand(10000,1);
[p,q,r]=ranksum(x,y)
p = 
   0.655492485862250
q = logical
   0
r = 包含以下字段的 struct:
       zval: 0.446145031988502
    ranksum: 100187143

有小伙伴可能发现漏洞了,万一比较的是两个10000×2的数据矩阵咋整;给你们考虑到了

x=rand(10000,2);
y=rand(10000,2);
[p,q,r]=ranksum(x,y)

错误使用 ranksum (第 61 行)
RANKSUM 需要向量而不是矩阵数据。

比较的数据有且只能是向量

当然了,在同样的q值下,p值越小,说明差异性越大。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值