IC.USP<-function(y,x,i,s,row.perm=FALSE,conf.level=0.95,max.delta=300){ lA<-unique(x[,1]) lB<-unique(x[,2]) A<-length(lA) B<-length(lB) n<-length(y)/(A*B) Y<-array(0,dim=c(A,B,n)) for(a in 1:A){ for(b in 1:B){ Y[a,b,]<-y[x[,1]==a & x[,2]==b] } } ########COMPUTING THE PROBABILITY OF ni EXCHANGES Pr.A<-array() Pr.B<-array() if((n %% 2) > 0){ for(ni in 0:((n-1)/2)){ Pr.A[ni+1]=choose(n,ni)^(B*A*(A-1)) Pr.B[ni+1]=choose(n,ni)^(A*B*(B-1)) } } if((n %% 2) == 0){ for(ni in 0:(n/2-1)){ Pr.A[ni+1]<-choose(n,ni)^(B*A*(A-1)) Pr.B[ni+1]<-choose(n,ni)^(A*B*(B-1)) } Pr.A<-c(Pr.A,((choose(n,(n/2))^(2*B))/2)^(A*(A-1)/2)) Pr.B<-c(Pr.B,((choose(n,(n/2))^(2*A))/2)^(B*(B-1)/2)) } Pr.A<-Pr.A/sum(Pr.A) Pr.B<-Pr.B/sum(Pr.B) for(ni in 2:length(Pr.A)){ Pr.A[ni]<-Pr.A[ni-1]+Pr.A[ni] Pr.B[ni]<-Pr.B[ni-1]+Pr.B[ni] } ############################################################# if(row.perm==FALSE){ m1<-mean(Y[i,,]) m2<-mean(Y[s,,]) delta=seq(0.01,max.delta/100,by=0.01) p=1 k=1 Z<-Y while(p>(1-conf.level)/2 & kPr.A[ni+1]){ ni=ni+1 } if(ni>0){ Z.perm<-Z for(j in 1:B){ pool1<-sample(Z[i,j,]) pool2<-sample(Z[s,j,]) Z.perm[i,j,]<-c(pool2[c(1:ni)],pool1[-c(1:ni)]) Z.perm[s,j,]<-c(pool1[c(1:ni)],pool2[-c(1:ni)]) } } if(ni==0){Z.perm<-Z} T.A[cc]<-mean(Z.perm[i,,])-mean(Z.perm[s,,]) }#end cc p<-sum(T.A[-1]>=T.A[1])/1000 k=k+1 }#end delta ris=c(mean(Y[i,,])-mean(Y[s,,])-d,mean(Y[i,,])-mean(Y[s,,])+d) names(ris)=c("lower","upper") return(ris) }##end if row.perm if(row.perm==TRUE){ m1<-mean(Y[,i,]) m2<-mean(Y[,s,]) delta=seq(0.01,3,by=0.01) p=1 k=1 Z<-Y while(p>(1-conf.level)/2 & kPr.B[ni+1]){ ni=ni+1 } if(ni>0){ Z.perm<-Z for(j in 1:A){ pool1<-sample(Z[j,i,]) pool2<-sample(Z[j,s,]) Z.perm[j,i,]<-c(pool2[c(1:ni)],pool1[-c(1:ni)]) Z.perm[j,s,]<-c(pool1[c(1:ni)],pool2[-c(1:ni)]) } } if(ni==0){Z.perm<-Z} T.B[cc]<-mean(Z.perm[,i,])-mean(Z.perm[,s,]) }#end cc p<-sum(T.B[-1]>=T.B[1])/1000 k=k+1 }#end delta ris=c(mean(Y[,i,])-mean(Y[,s,])-d,mean(Y[,i,])-mean(Y[,s,])+d) names(ris)=c("lower","upper") return(ris) }##end if row.perm }##end function