FAQ/Rpvs - CBU statistics Wiki
location: FAQ / Rpvs

R syntax for computing adjusted p-values

In addition to the code below see also the padjust function in R of form

p.adjust(p, method = p.adjust.methods, n = length(p))

for example

p <- c(0.01,0.04)
p.adjust(p,method="fdr",n=2)

which adjusts a set of p-values for a variety of methods including Bonferroni, Hochberg and Holm.

[ JUST CUT AND PASTE AT THE R PROMPT AFTER ADJUSTING INPUTS AS REQUIRED]

Sidak and Holm

This is a stepwise approach which produces the two cutoffs using the Sidak and Holm tests respectively. Only p-values equal or below the cutoff value are statistically significant at alpha=alp when adjusted for the number of p-values entered.

Input p-values in p and Type I error as alp.

p <- c(0.1,0.2,0.002)

alp <- 0.05

pos <- rank(p)
ps <- sort(p)
ncomp <- length(ps)

dsidak <- 1 - ((1 - ps)**(ncomp-pos+1))

j.alpha <- rep(alp,length(p))
diff <- dsidak - j.alpha
neg.diff <- diff[diff < 0]
pos.diff <- neg.diff[length(neg.diff)]
index <- diff == pos.diff
p.cutoff <- ps[index]
print(p.cutoff)
p.sig <- p[p <= p.cutoff]

holm <- (ncomp - pos + 1)*ps

j.alpha <- rep(alp,length(p))
diff <- holm - j.alpha
neg.diff <- diff[diff < 0]
pos.diff <- neg.diff[length(neg.diff)]
index <- diff == pos.diff
p.cutoff <- ps[index]
print(p.cutoff)
p.sig <- p[p <= p.cutoff]  

Ryan and Einot-Gabriel

Input p-values in p, Type I error as alp and the two differenced groups in g1 and g2. The adjusted p-values are outputted using the ryan and einot-gabriel methods respectively.

p <- c(0.1,0.2,0.002)

alp <- 0.05

g1 <- c(1,1,2)
g2 <- c(2,3,3)

ncomp <- length(p)

step <- abs(g2-g1)+1
ryan <- p*(ncomp/step)
eingab <- 1 - ( (1 - p)**(ncomp/step) )
unit <- rep(1,length(p))

for (i in 1:length(p)) {
if (ryan[i] > unit[i]) ryan[i] = unit[i]
if (eingab[i] > unit[i]) eingab[i] = unit[i]
 }
print(ryan)
print(eingab)

None: FAQ/Rpvs (last edited 2013-03-08 10:17:41 by localhost)