PowerSim=function(m=7,n=7,upper=T,alpha=.05, DeltaSigs=c(.2,.4,.6,.8,1,1.5,2),Nsim=1000){ out=NULL mx=n*(n+1)/2 N=m+n p1=pnorm(DeltaSigs/sqrt(2)) if(!exists("pmnorm")) library(mnormt) p2=NULL for(i in 1:length(DeltaSigs)){ zx = DeltaSigs[i]/sqrt(2) p2[i]=pmnorm(c(zx,zx),c(0,0),varcov=matrix(c(1,.5,.5,1),ncol=2)) } EWXY=m*n*p1 VarWXY=m*n*(p1*(1-p1)+(N-2)*(p2-p1^2)) DeltaSig=0 out=combn(1:N,n,FUN=sum) out=out-mx W.u= sort(unique(out)) power=NULL i=0 for(wu in W.u){ i=i+1 power[i]=mean(out>=wu) } sel0=power<=alpha sel1=power>alpha power0=max(power[sel0]) power1=min(power[sel1]) c0=min(W.u[sel0]) c1=max(W.u[sel1]) if(upper==T){ alphax=power0 cx=c0}else{ alphax=power1 cx=c1 } wu=c(c0,c1) powerAlpha=c(power0,power1) Pow1=1-pnorm((cx-.5-EWXY)/sqrt(VarWXY)) Pow2=pnorm(sqrt(3*m*n/((N+1)*pi))*DeltaSigs-qnorm(1-alphax)) Pow3=pnorm(sqrt(3*m*n/((N)*pi))*DeltaSigs-qnorm(1-alphax)) Pow1.0=1-pnorm((cx-.5-m*n/2)/sqrt(m*n*(N+1)/12)) powerx=NULL j=0 for(DeltaSig in DeltaSigs){ j=j+1 out=NULL for(i in 1:Nsim){ x=rnorm(m,0,1) y=rnorm(n,DeltaSig,1) rx=rank(c(y,x)) out[i]=sum(rx[1:n])-mx } powerx[j]=mean(out>=cx) } CxAlpha=round(cbind(c(c0,c1),powerAlpha),3) Power=rbind(c(0,DeltaSigs),c(alphax,powerx),c(Pow1.0,Pow1),c(alphax,Pow2),c(alphax,Pow3)) Power=round(Power,3) list(CxAlpha=CxAlpha,Power=Power,powerx=c(alphax,powerx)) }