fdrtool {fdrtool} | R Documentation |
fdrtool
takes a vector of z-scores (or of correlations, p-values,
or t-statistics), and estimates for each case both the tail area-based Fdr
as well as the density-based fdr (=q-value resp. local false discovery rate).
The parameters of the null distribution are
estimated adaptively from the data (except for the case of p-values where
this is not necessary).
fdrtool(x, statistic=c("normal", "correlation", "pvalue", "studentt"), plot=TRUE, verbose=TRUE, censored.fit.arg=NULL, pval.estimate.eta0.arg=NULL, use.locfdr=TRUE)
x |
vector of the observed test statistics. |
statistic |
one of ""normal" (default), "correlation", "pvalue", "studentt". This species the null model. |
plot |
plot a figure with estimated densities, distribution functions, and (local) false discovery rates. |
verbose |
print out status messages. |
censored.fit.arg |
list with arguments passed on to
censored.fit . |
pval.estimate.eta0.arg |
list with arguments passed on to
pval.estimate.eta0 . |
use.locfdr |
employ the locfdr package for estimation eta0 and scale parameter (only for "normal" and "correlation" statistic). |
The algorithm implemented in this function proceeds as follows:
censored.fit
.
eta0
is estimated using
pval.estimate.eta0
.
grenander
algorithm is employed
to obtain the overall density and distribution function
(note that this respects the estimated eta0
).
The assumed null models all have (except for p-values) one free scale parameter. Note that the z-scores are assumed to have zero mean.
A list with the following components:
pval |
a vector with p-values for each case. |
qval |
a vector with q-values (Fdr) for each case. |
lfdr |
a vector with local fdr values for each case. |
statistic |
the specified type of null model. |
param |
a vector containing the estimated parameters (the null
proportion eta0 and the free parameter of the null model). |
Korbinian Strimmer (http://strimmerlab.org).
pval.estimate.eta0
, censored.fit
.
# load "fdrtool" library and p-values library("fdrtool") data(pvalues) # estimate fdr and Fdr from p-values data(pvalues) fdr <- fdrtool(pvalues, statistic="pvalue") fdr$qval # estimated Fdr values fdr$lfdr # estimated local fdr # estimate fdr and Fdr from z-scores sd.true = 2.232 n = 500 z = rnorm(n, sd=sd.true) z = c(z, runif(30, 5, 10)) # add some contamination fdr <- fdrtool(z) # you may change some parameters of the underlying functions fdr <- fdrtool(z, censored.fit.arg=list( pct0=0.9))