multipleTestingCorrections: Multiple corrections for multiple testing

Description Usage Arguments Details Value Author(s) References Examples

Description

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.

Usage

1
2
3
multipleTestingCorrections(p.values, feature.names = NULL, lambda = 0.5,
  alpha = 0.05, main = "Multitesting corrections", run.qvalue = FALSE,
  plots = FALSE)

Arguments

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).

Details

First version: 2012-02-10 Last modification: 2015-02

Value

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).

Author(s)

Jacques van Helden (Jacques.van-Helden@univ-amu.fr)

References

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.

Examples

 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)

jvanheld/stats4bioinfo documentation built on May 20, 2019, 5:16 a.m.