#x0=1:J #xx0=x0=c(-1.69,-0.16,0.58,0.626,0.634)#midpoints #xx0=x0=c(-0.9, -0.72, -0.38, 0.48, 1.52)#midrank #xx0=x0=c(0.96, 1.13, -0.36, -0.57, -1.16)#ratio score pvalues<-function(data=data,x0=x0){ J=ncol(data) N=10000 allt=NULL ################################################### ###Permutation of a 2*J contigency table### permute=function(data,score=c(1:ncol(data))){ J=ncol(data) y=c(rep(1,sum(data[1,])),rep(0,sum(data[2,]))) x=c(rep(score,data[1,]),rep(score,data[2,])) y.per=sample(y) data.per= table(y.per,x) rbind(data.per[2,],data.per[1,])->data.per data.per } ################################ S0=sum(data[1,]*x0) T10=CATK2(data,x=x0) T20=mychisq(data) P10=1-pchisq(T10,df=1) P20=1-pchisq(T20,df=J-1) MIN0=min(P10,P20) for (i in 1:N){ permute(data,score=x0)->data.per T1=CATK2(data.per,x=x0) T2=mychisq(data.per) P1=1-pchisq(T1,df=1) P2=1-pchisq(T2,df=J-1) MIN=min(P1,P2) tmp=c(catt=T1,Pearson=T2, min2=MIN) allt=rbind(allt,tmp) } pvalue=c(catt=mean(allt[,1]>T10), pearson= mean(allt[,2]>=T20), min2=mean(allt[,3]<=MIN0)) pvalue }