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:
pvalsarray_like, 1d

Set of p-values of the individual tests.

alphafloat, 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_sortedbool, 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:
rejectedndarray, bool

True if a hypothesis is rejected, False if not

pvalue-correctedndarray

pvalues adjusted for multiple hypothesis testing to limit FDR

See also

multipletests

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.