convest {limma}R Documentation

Estimate Proportion of True Null Hypotheses


Returns an estimate of the proportion of true null hypotheses using a convex decreasing density estimate on a vector of p-values.


convest(p, niter = 100, doplot = FALSE, doreport = FALSE)


p numeric vector of p-values, calculated using any test of your choice. Missing values are not allowed
niter number of iterations to be used in fitting the convex, decreasing density for the p-values. Default is 100.
doplot logical, should updated plots of fitted convex decreasing p-value density be produced at each iteration? Default is FALSE.
doreport logical, should the estimated proportion be printed at each iteration? Default is FALSE.


The proportion of true null hypotheses is often denoted pi0.


Numeric value in the interval [0,1] representing he estimated proportion of true null hypotheses.


Egil Ferkingstad and Mette Langaas


Egil Ferkingstad, Mette Langaas and Bo Lindqvist (2003). Estimating the proportion of true null hypotheses, with application to DNA microarray data. Preprint Statistics No. 4/2003, Department of Mathematical Sciences, Norwegian University of Science and Technology.

See Also

See 08.Tests for other functions for producing or interpretting p-values.


# First simulate data, use no.genes genes and no.ind individuals,
# with given value of pi0. Draw from normal distribution with mean=0
# (true null) and mean=mean.diff (false null).

no.genes <- 1000
no.ind <- 20
pi0 <- 0.9
mean.diff <- 1
n1 <- round(pi0*no.ind*no.genes)
n2 <- round((1-pi0)*no.ind*no.genes)
x <- matrix(c(rnorm(n1,mean=0),rnorm(n2,mean=mean.diff)),ncol=no.ind,byrow=TRUE)

# calculate p-values using your favorite method, e.g.
pvals <- ebayes(lm.series(x))$p.value

# run the convex decreasing density estimator to estimate pi0

[Package limma version 2.4.7 Index]