Estimation of (Local) False Discovery Rates and Higher Criticism

Estimates both tail area-based false discovery rates (Fdr) as well as local false discovery rates (fdr) for a variety of null models (p-values, z-scores, correlation coefficients, t-scores). The proportion of null values and the parameters of the null distribution are adaptively estimated from the data. In addition, the package contains functions for non-parametric density estimation (Grenander estimator), for monotone regression (isotonic regression and antitonic regression with weights), for computing the greatest convex minorant (GCM) and the least concave majorant (LCM), for the half-normal and correlation distributions, and for computing empirical higher criticism (HC) scores and the corresponding decision threshold.


          Release History of "fdrtool" Package

            CHANGES IN fdrtool VERSION 1.2.15
  • add import statements required by R-devel.

              CHANGES IN fdrtool VERSION 1.2.14
  • fix broken URLs in documentation.

  • fix "S3 generic/method consistency" NOTE raised by R-devel.

              CHANGES IN fdrtool VERSION 1.2.13
  • change of maintainer email address.

              CHANGES IN fdrtool VERSION 1.2.12
  • removed DUP=FALSE option in .C() call in monoreg() as this option is depricated in R 3.1.0.

              CHANGES IN fdrtool VERSION 1.2.11
  • depends now on R (>=2.15.1)

  • updated reference to Klaus and Strimmer (2013)

  • small changes in documentation to get rid of warnings in current R-devel

  • option "studentt" was removed as "normal" is preferable in most cases.

              CHANGES IN fdrtool VERSION 1.2.10
  • added two new functions for Higher Criticism (HC): hc.score() computes HC scores from p-values and hc.thresh() determines the HC threshold for signal identification

  • the range of p-values (0..1) is now checked

              CHANGES IN fdrtool VERSION 1.2.9
  • bug fix for computation of local FDR for separated null and alternative

              CHANGES IN fdrtool VERSION 1.2.8
  • NAMESPACE file added

  • useDynLib() instead of .First.lib() to load compiled C code

              CHANGES IN fdrtool VERSION 1.2.7
  • small change in gcmlcm() to make sure that the raw slope never equals Inf (to avoid numeric problems with very small p-values)

              CHANGES IN fdrtool VERSION 1.2.6
  • a small bug was fixed in get.nullmodel()$get.pval() so that the argument Inf returns p-value 0

  • in the output of the parameter "N0" was renamed to "N.cens" to avoid confusion with N0=eta0*N (note that N.cens is the number of data points retained for estimation)

  • reference to papers updated.

              CHANGES IN fdrtool VERSION 1.2.5
  • a small bug in was fixed that produced NaNs when null model did not fit the data well (reported by Jana Sillmann)

  • obsolete method get(getOption("device"))() replaced by

  • R >= 2.7.0 is now required

  • small updates in the documentation

              CHANGES IN fdrtool VERSION 1.2.4
  • various warning messages were introduced to indicate potential problems with FDR computations if there are too few input test statistics (fdrtool() and related functions)

              CHANGES IN fdrtool VERSION 1.2.3
  • the previous bug fix (v.1.2.2) unfortunately broke the optimization of FDR for correlations which necessitated a second bug fix.

  • small changes to the man pages.

              CHANGES IN fdrtool VERSION 1.2.2
  • a bug was fixed in the optimization part of the function.

              CHANGES IN fdrtool VERSION 1.2.1
  • option "color.figure" added, so that both color and b&w figures may be output.

  • a more sensible error message is now produced when the argument supplying the test statistics is not a vector.

  • for the option cutoff.method=="locfdr" in fdrtool() the corresponding algorithm was updated to match that of locfdr version 1.1-6.

              CHANGES IN fdrtool VERSION 1.2.0

This version constitutes a major rewrite. As a result, the interface to the main functions (especially to lesser used options) has been changed. See manual for details. Some specific changes include:

  • fit of null model using is now much more reliable.

  • estimates of null model parameter and null proportions now carry error bars.

  • fdrtool() now offers three different methods for choosing appropriate cutoff points (minimum false nondiscovery rate, the heuristic of
    the locfdr package, and using a fixed fraction of the data)

  • pval.estimate.eta0 now offers "quantile" approach.

  • a number of miscellaneous helper functions have been introduced.

  • no dependency on the "locfdr" package any more.

  • change of license to "GNU GPL 3 or any later version".

              CHANGES IN fdrtool VERSION 1.1.4
  • monoreg(), the monotone regression function, is now partly written in C. This allows for much faster computation of the FDR calculations (which are based on the modified Grenander estimator.

              CHANGES IN fdrtool VERSION 1.1.3
  • fixed a bug in plotting the F und FA distribution functions

  • fixed a bug in ecdf.pval() that occasionally caused Fdr to be larger than fdr (which for a decreasing density should never occur)

  • grenander() now also estimates increasing densities

  • plot.grenander() now uses linear y-scale (previously, log-scale)

              CHANGES IN fdrtool VERSION 1.1.2
  • fdrtool() now has "dots" as option to allow the specification of arguments for the locfdr function

              CHANGES IN fdrtool VERSION 1.1.1
  • the default behaviour of has been changed such that for multiple pct0 (i.e. length(pct0) > 1) the scale parameter is estimated for each element of pct0, subsequently a smoothing spline is computed, and finally the optimal parameter is taken as the minimum of the spline smoother.

  • new "verbose" option in fdrtool()

  • new "diagnostic.plot" option in

  • option to rely on locfdr >= 1.1-4 for fitting null distribution of correlation and normal scores

      CHANGES IN fdrtool VERSION 1.1.0

This version contains some major new functionality. In particular, it now offers functions to estimate both tail area based Fdr as well as density based fdr values for various kind of null models:

New functions:

  • fdrtool: the central function for computing fdr/Fdr values.
  • learn null model from censored sample
  • monoreg: isotonic and antitonic regression with weights
  • gcmlcm: find greatest convex minorant and least concave majorant
  • grenander: non-parametric estimate of concave CDF and decreasing density
  • halfnormal: functions for half-normal distribution
  • dcor0: distribution of vanishing correlation coefficient

Removed functions:

  • fdr.estimate.eta0: was replaced by pval.estimate.eta()
  • fdr.control: the function fdrtool() should be used.
  • not needed any more


  • dependency on locfdr package removed

  • fdrtool now requires R 2.2.1

      CHANGES IN fdrtool VERSION 1.0.0

This is the first standalone release (9 August 2006). Previously, the functions available in this package were part of the GeneTS package (version 2.10.2)

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


1.2.16 by Korbinian Strimmer, 16 days ago

Browse source code at

Authors: Bernd Klaus and Korbinian Strimmer.

Documentation:   PDF Manual  

GPL (>= 3) license

Imports graphics, grDevices, stats

Imported by CosW, DNLC, ERP, HDMT, LANDD, MixTwice, NetworkToolbox, SecKW, SimSeq, SinIW, TanB, bayesbr, beam, carSurv, nlnet, qgraph, rags2ridges, ragt2ridges.

Depended on by DBGSA, DiffCorr, GeneCycle, GeneNet, TBEST, sda, st.

Suggested by DGCA, EGAnet, GiANT, frontier, mutoss, sand, wrMisc, wrProteo, wrTopDownFrag.

See at CRAN