matlab中的mood检验,Brown-Mood检验 R程序

这篇博客介绍了布朗-穆德中位数检验(Brown-Mood Median Test)在R语言中的实现,包括精确检验、正态近似和连续性修正后的正态近似。通过`BM.test`函数展示了如何进行检验,并提供了具体示例数据`a`和`b`进行检验,重点关注了小于中位数的情况。此外,文章还给出了计算p值的方法和计数表,便于理解和应用该检验统计方法。
摘要由CSDN通过智能技术生成

###Brown-Mood中位数检验(精确检验,正态近似,连续性修正后的正态近似)

BM.test=function(x,y,alt) #alt:备择假设形式

{

xy=c(x,y)

md.xy=median(xy)

t=sum(xy>md.xy)

lx=length(x[x!=md.xy])

ly=length(y[y!=md.xy])

lxy=lx+ly

A=sum(x>md.xy)#检验统计量A

z=(A-lx*t)/(lx+ly)/(lx*ly*t*(lx+ly-t)/(lx+ly)^3)^0.5#正态近似时的标准化统计量

if(A>(min(lx,t)/2)){

z1=(A+0.5-lx*t)/(lx+ly)/(lx*ly*t*(lx+ly-t)/(lx+ly)^3)^0.5#连续性修正后正态近似时的标准化统计量

}

else{z1=(A-0.5-lx*t)/(lx+ly)/(lx*ly*t*(lx+ly-t)/(lx+ly)^3)^0.5}

if(alt=="greater"){

pv1=1-phyper(A,lx,ly,t)#精确p值

pv2=1-pnorm(z)#正态近似p值

pv3=1-pnorm(z1)#连续性修正后正态近似p值

}

if(alt=="less"){

pv1=phyper(A,lx,ly,t)

pv2=pnorm(z)

pv3=pnorm(z1)

}

if(alt=="two.sided"){

pv1=2*min(1-phyper(A,lx,ly,t),phyper(A,lx,ly,t))

pv2=2*min(1-pnorm(z),pnorm(z))

pv3=2*min(1-pnorm(z1),pnorm(z1))

}

conting.table=matrix(c(A,lx-A,lx,t-A,ly-(t-A),ly,t,lxy-t,lxy),3,3)#计数表

col.name=c("X","Y","X+Y")

row.name=c(">MXY","

dimnames(conting.table)=list(row.name,col.name)

list(contingency.table=conting.table,p.value=pv1,pvnorm=pv2,pvnr=pv3)

}

###练习4.1

#Brown-Mood中位数检验

a=c(10,8,12,16,5,9,7,11,6)

b=c(12,15,20,18,13,14,9,16)

BM.test(a,b,alt="less")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值