mcpPV <-
function(pv,alpha=.05,opt=1){
#
# pv: A collection of p-values based on independent tests
#
# Perform the step-down multiple comparison method in
# Wilcox, R. R. \& Clark, F. (in press).
# Robust multiple comparisons based on combined
# probabilities from independent tests. Journal of Data Science
# based on K independent p-values
#
# opt=1 Fisher's method
# opt=2 Chen-Nadarajah method
# opt=3 Max method
#
K=length(pv)
pick=NULL
v=order(pv)
ic=0
for(i in K:1){
flag=TRUE
if(opt==1){
i2=i*2
if(i==K)res=(0-2)*sum(log(pv)) # Fisher test statistic
if(i<K)res=(0-2)*sum(log(pv[-pick])) # Fisher test statistic
pvF=1-pchisq(res,i2) #Fisher p-value based on all tests.
}
if(opt==2){
if(i==K)res=sum(qnorm(pv/2)^2) # C-N test
if(i<K)res=sum(qnorm(pv[-pick]/2)^2)
pvF=1-pchisq(res,i)
}
if(opt==3){
if(i==K)res=max(pv)
if(i<K)res=max(pv[-pick])
pvF=pbeta(res,i,1)
}
if(pvF>alpha)flag=TRUE
if(pvF<=alpha/(K+1-i)){
ic=ic+1
pick=c(pick,v[ic])
flag=FALSE
if(pv[v[ic]]>alpha)flag=TRUE
}
if(flag)break
}
Decision=rep('Not Sig',length(pv))
if(!is.null(pick))Decision[pick]='Reject'
nsig=sum(length(pick))
list(p.values=pv,
Decisions=as.matrix(Decision),num.sig=nsig)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.