Description Usage Arguments Details Value Author(s) References Examples
Apply various multiple testing corrections on a list of P-values, report all of them in a table with one row per test and one column per correction, and optionally draw illutrative figures.
In particular, we apply the elegant strategy from Storey & Tibshirani (2003) to estimate the respective proportions of true and alternative hypotheses among the tests.
1 2 3 | multipleTestingCorrections(p.values, feature.names = NULL, lambda = 0.5,
alpha = 0.05, main = "Multitesting corrections", run.qvalue = FALSE,
plots = FALSE)
|
p.values |
list of p-values |
feature.names=NULL |
Names associated to the p.value list (will be used as row.names for to result table) |
lambda=0.5 |
lambda parameter for estimating pi0 = m0/m |
alpha=0.05 |
Threshold of significance (alpha). |
main='Multitesting |
corrections' Prefix for the main title of the plots |
run.qvalue=FALSE |
For the sake of comparison, compute FDR and generate graphs using Storey's qvalue library (http://genomics.princeton.edu/storeylab/qvalue/). |
plots=FALSE |
If true, generate illutrsative plots |
plot.pch=c(p.value=2, |
fdr=4, qval.0=3, e.value=1, fwer=20) point type (character) associated to each statistics for the plot |
plot.col=c(p.value='black', |
fdr='blue', qval.0='darkviolet', e.value='darkbrown', fwer='orange') color for the plot |
plot.elements=c("p.value", |
"fdr", "qval.0","e.value", "fwer") Elements to draw on the plots (can be any subet of the default list). |
First version: 2012-02-10 Last modification: 2015-02
A list comprizing the following elements:
lambda |
Value provided for the input parameter lambda. |
alpha |
Value provided for the input parameter threshold (alpha). |
m |
total number of tests (= number of elements in the input list of p-values). m = m0 + m1. |
m0.est |
Estimation of the number of cases under null hypothesis. |
m1.est |
Estimation of the number of cases that do not comply with the null hypothesis (m1.est = m - m0.est). |
pi0 |
Estimated proportion of trully null cases among all tests. pi0 = m0.est / m. |
nb.signif |
Number of tests declared significant above the specified alpha threshold |
multitest.table |
A table with one row per test, and one column per statistics (the fields described below). |
p.value |
P-value = probability to observe an at least as significant result under the null hypothesis. This column contains a replica of the input vector of p-values. |
rank |
rank by increasing P-value |
e.value |
E-value = expected number of false positives |
fdr |
False Discovery Rate = expected proportion of truly null hypotheses among the cases declared positives. The FDR is estimated using Storey and Tibshirani procedure. |
fwer |
Family-Wise Error Rate = probability to observe at least one FP among all the tests, assuming all of them are under null hypothesis. |
qval.0 |
FDR assuming that all the tests are under null hypothesis (Benjamini-Hochberg approach). |
Jacques van Helden (Jacques.van-Helden@univ-amu.fr)
1. Benjamini, Y. and Hochberg, Y. (1995) Controlling the false discovery rate: a practical and powerful approach to multiple testing. JOURNAL-ROYAL STATISTICAL SOCIETY SERIES B. 2. Storey, J.D. and Tibshirani, R. (2003) Statistical significance for genomewide studies. Proc Natl Acad Sci USA, 100, 9440–9445.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | ## Generate a vector of 10,000 fake p-values
## with a given proportion of trully null (m0=9,000) and
## non-null (m1=1,000) cases.
my.p.values <- c(runif(n=9000, min=0, max=1),
runif(n=1000, min=0, max=1e-2))
multitest.result <- multipleTestingCorrections(my.p.values)
attributes(multitest.result)
## In principle, m0 should be ~9,000
print(paste("m0.est =", multitest.result$m0.est))
## In principle, m1 should be ~1,000
print(paste("m1.est =", multitest.result$m1.est))
## In principle, pi0 should be ~0.9
print(paste("pi0 =", multitest.result$pi0))
## Plot P-value distributions
mulitpleTestingCorrections.plotPvalDistrib(multitest.result)
## Compare the different multiple testing corrections (Y axis)
## versus the nominal p-value (X axis).
mulitpleTestingCorrections.plotCorrectedVsPval(multitest.result)
## Plot the number of significant features for different
## multiple testing corrections
mulitpleTestingCorrections.plotSignifFeatures(multitest.result)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.