Wilcoxon秩和检验MATLAB实现

7 篇文章 1 订阅
6 篇文章 0 订阅

Wilcoxon秩和检验MATLAB实现


在单目标优化算法中,得到结果后一般要进行威尔克森秩和检验。

Wilcoxon(威尔克森)秩和检验的目的是用于比较两个独立样本的差异。在算法中用于比较自己的算法和别人的算法有没有差异,有差异才可以比较优劣,没有差异默认在改测试中性能相等。

clear all

%初始化参数
n=30;
m=10;
x = zeros(n,m);
y = zeros(n,m);

%导入数据
load 002.mat
for i = 1 : n
    for j = 1 : m
        x (i,j) = result(i,j).bestval;
    end    
end

%导入数据
load 002.mat
for i = 1 : n
    for j = 1 : m
        y (i,j) = result( i , j ).bestval;
    end    
end


p = zeros(1,n);
h = zeros(1,n);      
for i = 1 : n
    [p(i),h(i)]=ranksum(x(i,:),y(i,:));
end

h=h'
% if h=1 represent the two vector not equal and the p<=0.05
% if h=0 represent the two vector equal
  • 3
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Wilcoxon检验Wilcoxon rank-sum test)是一种非参数的假设检验方法,用于比较两组独立样本的中位数是否相同。Wilcoxon检验的原假设是两组样本的中位数相同,备择假设是两组样本的中位数不同。 在Matlab中,Wilcoxon检验可以使用函数ranksum来实现。该函数的用法如下: ```matlab [p,h] = ranksum(x,y) ``` 其中,x和y分别是两组样本的数据,p是假设检验的p值,h是表示是否拒绝原假设的逻辑值。如果h为1,则拒绝原假设,说明两组样本的中位数不同;如果h为0,则不能拒绝原假设,说明两组样本的中位数可能相同。 例如,假设有两组数据x和y: ```matlab x = [6, 8, 10, 12, 14]; y = [5, 7, 9, 11, 13]; ``` 则可以使用ranksum函数进行Wilcoxon检验: ```matlab [p,h] = ranksum(x,y) ``` 运行结果为: ``` p = 0.5 h = 0 ``` 由于p值为0.5,大于显著性水平0.05,且h为0,因此不能拒绝原假设,即两组样本的中位数可能相同。 ### 回答2: Wilcoxon检验又称为Mann-Whitney U检验,是一种非参数检验方法,用于比较两组独立样本的中位数是否有显著差异。 在Matlab中,我们可以使用ranksum函数进行Wilcoxon检验。该函数的语法格式如下: [p,h,stats] = ranksum(x,y,'alpha',0.05,'tail','both') 其中,x和y分别表示两组独立样本数据,'alpha'是置信水平,默认为0.05,'tail'表示检验方向,默认为'both',可以为'left'或'right'。 ranksum函数的返回值分别为p,h和stats。其中,p表示显著性水平;h表示拒绝原假设的判断;stats包含了Wilcoxon检验的统计量,包括和、均数、标准偏差等信息。 在进行Wilcoxon检验之前,需先做数据预处理,包括数据清洗、缺失值处理、数据标准化等。然后,我们可以使用ranksum函数对两组独立样本进行比较,得到显著性水平和拒绝原假设的判断。如果显著性水平小于设定的置信水平,则拒绝原假设,说明两组数据的中位数存在显著差异。 总的来说,Wilcoxon检验是一种常用的假设检验方法,可以用于比较两组独立样本的中位数是否有显著差异。在Matlab中,我们可以使用ranksum函数进行计算,并对结果进行解释和判断。 ### 回答3: Wilcoxon检验是一种非参数统计方法,用于检验两个样本的中位数是否相同。其原假设为两个样本的中位数相同,备择假设为两个样本的中位数不相同。Wilcoxon检验不要求数据呈正态分布,具有较好的稳健性和适用性。Matlab是一种常用的科学计算软件,可以使用其内置函数进行Wilcoxon检验。 在Matlab中,进行Wilcoxon检验有多种方法,包括ranksum函数和signrank函数。其中,ranksum函数适用于两个独立样本,而signrank函数适用于相依的样本(即配对样本)。使用方法如下: 1. 对于独立样本,使用ranksum函数,输入两个样本的数据向量,即可得出检验结果。示例代码如下: data1 = [1, 2, 3, 4, 5]; data2 = [2, 3, 4, 5, 6]; p = ranksum(data1, data2); 其中,p为检验结果的P值,P值小于0.05则拒绝原假设,即认为两个样本的中位数不相同。 2. 对于相依样本,使用signrank函数,输入两个样本的差分值,即可得出检验结果。示例代码如下: data1 = [1, 2, 3, 4, 5]; data2 = [2, 3, 5, 3, 6]; diff = data1 - data2; p = signrank(diff); 其中,p为检验结果的P值,P值小于0.05则拒绝原假设,即认为两个样本的中位数不相同。 需要注意的是,在使用Wilcoxon检验之前,需要满足一些前提条件:样本数据应为连续型数值型数据;两个样本的样本量应该相等或接近;样本数据不能有过多的缺失值或极端异常值。若不符合前提条件,需要进行数据处理或选择其他适用的统计方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤影墨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值