statsmodels.stats.multitest.fdrcorrection

statsmodels.stats.multitest.fdrcorrection(pvals, alpha=0.05, method='indep', is_sorted=False)[source]

pvalue correction for false discovery rate.

This covers Benjamini/Hochberg for independent or positively correlated and Benjamini/Yekutieli for general or negatively correlated tests.

Parameters:
pvals : array_like, 1d

Set of p-values of the individual tests.

alpha : float, optional

Family-wise error rate. Defaults to 0.05.

method : {'i', 'indep', 'p', 'poscorr', 'n', 'negcorr'}, optional

Which method to use for FDR correction. {'i', 'indep', 'p', 'poscorr'} all refer to fdr_bh (Benjamini/Hochberg for independent or positively correlated tests). {'n', 'negcorr'} both refer to fdr_by (Benjamini/Yekutieli for general or negatively correlated tests). Defaults to 'indep'.

is_sorted : bool, optional

If False (default), the p_values will be sorted, but the corrected pvalues are in the original order. If True, then it assumed that the pvalues are already sorted in ascending order.

Returns:

  • rejected (ndarray, bool) – True if a hypothesis is rejected, False if not

  • pvalue-corrected (ndarray) – pvalues adjusted for multiple hypothesis testing to limit FDR

Notes

If there is prior information on the fraction of true hypothesis, then alpha should be set to alpha * m/m_0 where m is the number of tests, given by the p-values, and m_0 is an estimate of the true hypothesis. (see Benjamini, Krieger and Yekuteli)

The two-step method of Benjamini, Krieger and Yekutiel that estimates the number of false hypotheses will be available (soon).

Both methods exposed via this function (Benjamini/Hochberg, Benjamini/Yekutieli) are also available in the function multipletests, as method="fdr_bh" and method="fdr_by", respectively.

See also

multipletests