i am very new to this field, so please bear with me. I have 600 parameters, on which i perform simple pairwise x,y correlations.For adjustment of the p-values ive been stuck between two R-packages.

FDR-tool gives me a set of qvalues,

FDR <- fdrtool(as.vector(a$P[!is.na(a)]), statistic=c("pvalue"), cutoff.method=c("fndr"))

whereas the p.adjust command in the basic packages gives me adjusted p-values.

FDR <- p.adjust(as.vector(a$P), method = "fdr", n = length(as.vector(a$P)))

"a" is an object created by the hcorr command of the package "Hmisc"

The output is not the same, however.

Can someone please explain me why that is? And how to proceed from here? I was told, the adjusted p-values (as obtained from p.adjust) can be treated as such, that i can just define a cutoff of 0.05 for false positives. I am not so sure about q-values, though, and if i am missing something fundamental on False Discovery Rates. Thank you very much!


2 Answers 2


The FDRtool computes q-values by estimating the null fraction empirically from the data. p.adjust() with method "fdr" uses the Benjamini-Hochberg approach which effectively assumes that the null fraction is always 1.0. This implies that the p.adjust p-values are stochastically higher than q-values, and equal only if empirically estimated null fraction by FDRtool is 1.0.


The R package cp4p allows to compare and use eight different estimation methods of the proportion of true null hypotheses to adjust p-values.

Estimation methods can give quite different outcomes when p-values are not uniformly distributed under the null hypothesis. This can arise in presence of dependences between tests. A choice closer to the true value will increase efficiency and power.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.