statsmodels.stats.multitest.local_fdr(zscores, null_proportion=1.0, null_pdf=None, deg=7, nbins=30)[source]

Calculate local FDR values for a list of Z-scores.

  • zscores (array-like) – A vector of Z-scores
  • null_proportion (float) – The assumed proportion of true null hypotheses
  • null_pdf (function mapping reals to positive reals) – The density of null Z-scores; if None, use standard normal
  • deg (integer) – The maximum exponent in the polynomial expansion of the density of non-null Z-scores
  • nbins (integer) – The number of bins for estimating the marginal density of Z-scores.

fdr – A vector of FDR values

Return type:



B Efron (2008). Microarrays, Empirical Bayes, and the Two-Groups Model. Statistical Science 23:1, 1-22.


Basic use (the null Z-scores are taken to be standard normal):

>>> from statsmodels.stats.multitest import local_fdr
>>> import numpy as np
>>> zscores = np.random.randn(30)
>>> fdr = local_fdr(zscores)

Use a Gaussian null distribution estimated from the data:

>>> null = EmpiricalNull(zscores)
>>> fdr = local_fdr(zscores, null_pdf=null.pdf)