全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1670 1
2016-06-16
BMq.test=function(x,y,q,alt)                  #alt:备择假设形式
{
xy=c(x,y)
quantile.xy=quantile(xy,q)
t=sum(xy>quantile.xy)
lx=length(x[x!=quantile.xy])
ly=length(y[y!=quantile.xy])
lxy=lx+ly
A=sum(x>quantile.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=3*min(i-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(">MQXY","<MQXY","TOTAL")
dimnames(conting.table)=list(row.name,col.name)
list(contingency.table=conting.table,p.value=pv1,pvnrom=pv2,pvnr=pv3)
}
a<-c(698,688,675,656,655,648,640,639,620)
b<-c(780,754,740,712,693,680,621)
BMq.test(a,b,0.25,"two.sided")
没有报错,但就是不出结果,大神给看看,哪有问题?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-6-18 23:41:40
自已仔细查一下:好象{} 出问题了,else 句一行最后 少一 }。。另,程序中还有一些错。。自已编程序是很辛苦了,要求心很细的。。学R ,多用世界好的专家团队编好 的package。。自已编点各package间functions 连接。就很不错了。 真要学编程,不如学c++
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群