符号检验及matlab实现

 

目录

一、符号检验的原理

二、符号检验的matlab实现

三、实例

1、 例子一

2、例子二


参考连接:matlab非参数检验(符号检验,秩和)_sereasuesue的博客-CSDN博客_matlab 符号检验

X Y样本数量相等

一、符号检验的原理

  • 设X为连续总体,其中位数记为Me,考虑假设检验问题

  H0:Me=M0,                   H1:Me/=M0(Me不等于M0)

 记p+=P(X>M0),p-=P(X<M0),由于Me是总体X的中位数,可知当H0成立时,p+=p-=0.5,因此可以把上述假设等价于

 H0:p+=p-=0.5,            H1:p+/=p-(p+不等于p-)

把Xi>M0的个数记为n+,Xi<M0的个数记为n-,另m=n+  +  n-

如果H0成立,当m固定时,min(n+,n-)不应太小,否则应认为H0不成立。选取检验统计量

    S=min(n+,n-)

对于固定的m和给定的显著性水平a,根据S的分布计算临界值Sa,当S<=Sa时,拒绝原假设H0,即认为总体中位数Me与M0有显著差异;当S>Sa时,接受H0,,即认为总体中位数Me与M0为显著性差异。

  符号检验还可用于配对样本的比较检验,符号检验法是通过两个相关样本的每对数据之差的符号进行检验,从而比较两个样本的显著性。具体地讲,若两个样本差异不显著,正差值与负差值的个数应大致各占一半

二、符号检验的matlab实现

MATLAB统计工具箱中提供了signtest函数,用来符号检验,其调用格式如下:

  •  [p,h,stats] = signtest(x)

     根据样本观测量x做双侧符号检验原假设x来自于中位数为0的连续分布备择假设x来自中位数不为0的连续分布

输出参数分别为检验的p值,变量h,和包含检验统计量信息的结构体变量stats,当p>a(显著性水平)或h=0时,接受原假设;当p<=a或h=1时,拒绝原假设。

[p,h,stats]=signtest(x,m,param1,val1,.....)

  双侧符号检验原假设x来自于中位数为m的连续分布备择假设x来自于中位数不为m的连续分布,此时用可选的成对出现的参数名和参数值来控制计算结果,可用的参数名与参数值如下表

参数名                  参数值及说明

'alpha'                检验的显著性水平,其取值介于0--1

                            默认值为0.05

‘method’         指定计算p值的方法,可能的取值情况如下

                           ‘exact’:利用精确方法计算p值,适用于小样本(样本容量<100)情形

                           ‘approximate’:利用正态近似计算p值,适用于大样本情形

[p,h,stats]=signtest(x,y,param1,val1,.......)

     配对样本x和y的双侧符号检验原假设x-y来自于中位数为0的连续分布备择假设x-y来自于中位数不为0的连续分布,x,y是等长的向量

三、实例

1、 例子一

例:在一次选举的民意调查中,随机询问了200名选民,结果显示,69人支持甲,108人支持乙,23人弃权。分析甲乙两人的支持率是否有显著差异。取显著性水平a=0.05;

分析:  用p1和p2分别表示甲乙两位候选人的支持率,根据题目要求可写出如下假设:

 H0:p1=p2=0.5,  H1:p1/=p2(p1不等于p2)

调用signtest函数求解

%定义样本观测值向量,-1表示支持甲,0表示弃权,1表示支持乙

x=[-ones(69,1);zeros(23,1);ones(108,1)];

p=signtest(x)     %符号检验,检验x的中位数是否为0

p =

    0.0043

由于signtest函数返回的检验值p=0.0043<0.01,所以在显著性水平=0.01下拒绝原假设H0,认为甲乙两位候选人的支持率有非常显著的差异。

2、例子二

两组(各10名)有资质的评酒员分别对12种不同的酒进行品评,每个评酒员在品尝后进行评分,然后对每组的每个样品计算其平均分,评分结果如下

                样品1      样本2      样品3    样品4     样品5      样品6      样品7      样品8      样品9      样品10    样品11     样品12   

第一组     80.3      68.6          72.2     71.5      72.3          70.1         74.6        73.0        58.7        78.6         85.6           78.0

第二组     74.0       71.2        66.3      65.3     66.0           61.6        68.8          72.6        65.7        72.6         77.1           71.5

 

利用符号检验方法比较两组评酒员的评分是否有显著差异,取显著性水平a=0.05

%样本1

x=[80.3,68.6,72.2,71.5,72.3,70.1,74.6,73.0,58.7,78.6,85.6,78.0];

%样本2

y=[74.0,71.2,66.3,65.3,66.0,61.6,68.8,72.6,65.7,72.6,77.1,71.5];

p=signtest(x,y)  %配对样本的符号检验

p =

    0.0386

由于signtest函数返回p=0.0386<0.05,所以在显著性水平=0.05下认为两组评分有显著差异。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Wilcoxon符号秩检验是一种非参数检验方法,用于比较两组相关或配对的样本数据。在MATLAB中,可以使用ranksum函数进行Wilcoxon符号秩检验。具体使用方法如下: 1. 准备数据:将两组相关或配对的样本数据存储在两个向量中。 2. 调用ranksum函数:使用ranksum函数进行Wilcoxon符号秩检验,语法如下: [p,h,stats] = ranksum(x,y) 其中,x和y分别为两组样本数据的向量,p为检验的p值,h为检验的假设是否被拒绝的结果(1表示拒绝,表示接受),stats为检验的统计量。 3. 解释结果:根据p值和h值来判断检验的结果,如果p值小于显著性水平(通常为.05),则拒绝原假设,即认为两组样本数据存在显著差异。 以上就是Wilcoxon符号秩检验在MATLAB中的使用方法。 ### 回答2: Wilcoxon符号秩检验是用来比较两组相关或无关样本的非参数检验方法,它的本质是通过比较两组样本的秩和来判断它们是否具有统计学显著性差异。相比于t检验,Wilcoxon符号秩检验不需要样本来自正态分布,也不需要假定方差相等,因此具有更广泛的适用范围。 在Matlab中,Wilcoxon符号秩检验的函数为"signrank",它的语法如下: [p,h,stats] = signrank(x,y) 其中,x和y分别代表两组样本数据,p表示检验的双侧p值,h表示拒绝或接受零假设的判定结果(1表示拒绝,0表示接受),stats包含了检验的统计量。 需要注意的是,当样本数较小(小于等于5)的时候,使用Wilcoxon符号秩检验可能会出现功效不足的问题,此时可以使用精确的Fisher's Exact Test来进行检验。在Matlab中,精确的Fisher's Exact Test的函数为"fishertest"。 另外,如果需要进行多组样本之间的比较,可以使用Kruskal-Wallis检验,它是Wilcoxon符号秩检验的推广。Matlab实现Kruskal-Wallis检验的函数为"kruskalwallis"。 ### 回答3: Wilcoxon符号秩检验是一种非参数检验方法,通常用于比较两个相关或无关样本的中位数是否相等。对于小样本或数据不满足正态分布的情况,Wilcoxon符号秩检验的优势就更加明显。 MATLAB实现Wilcoxon符号秩检验的函数为“signrank”。该函数的基本使用方法是:signrank(x,y)。其中x是一个n维行向量,y是一个m维行向量。若x和y不同,则Wilcoxon符号秩检验为两个独立的样本;若x和y相同,则Wilcoxon符号秩检验为两个相关的样本。 对于独立的样本,Wilcoxon符号秩检验的假设为: H0:x的中位数等于y的中位数 Ha:x的中位数不等于y的中位数 对于相关的样本,Wilcoxon符号秩检验的假设为: H0:x-y的中位数等于0 Ha:x-y的中位数不等于0 在MATLAB中进行Wilcoxon符号秩检验时,除了输入x和y外,还可以指定显著性水平alpha(默认值为0.05)和检验是否为单侧或双侧(单侧检验为lower或upper,双侧检验为both,默认为both)。 需要注意的是,Wilcoxon符号秩检验的结果不仅包括检验的P值,还包括中位数差异的置信区间和Wilcoxon符号秩检验统计量的值。 总之,Wilcoxon符号秩检验是一种简单且有效的非参数检验方法,MATLAB中的signrank函数可以方便地实现该方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值