lib5c.util.statistics module

Module containing utility functions related to statistical transformation, correction, or combination of p-values.

lib5c.util.statistics.adjust_pvalues(pvalue_matrix, method='fdr_bh')[source]

Performs multiple testing correction on a matrix of p-values.

Parameters
  • pvalue_matrix (np.ndarray) – The matrix of p-values, representing many tests that were performed.

  • method (str) –

    Method used for testing and adjustment of pvalues. Can be either the full name or initial letters. Available methods are

    `bonferroni` : one-step correction
    `sidak` : one-step correction
    `holm-sidak` : step down method using Sidak adjustments
    `holm` : step-down method using Bonferroni adjustments
    `simes-hochberg` : step-up method  (independent)
    `hommel` : closed method based on Simes tests (non-negative)
    `fdr_bh` : Benjamini/Hochberg  (non-negative)
    `fdr_by` : Benjamini/Yekutieli (negative)
    `fdr_tsbh` : two stage fdr correction (non-negative)
    `fdr_tsbky` : two stage fdr correction (non-negative)
    

Returns

The matrix of adjusted p-values. Same size and shape as pvalue_matrix.

Return type

np.ndarray

lib5c.util.statistics.convert_to_two_tail(pvalue)[source]

Converts a one-tail p-value to a two-tail p-value.

Only valid for continuous distributions (otherwise I think the PMF evaluation at the obs value needs to be taken into account when reversing the test).

Array-safe, nan-safe, position-independent.

Parameters

pvalue (float) – The one-tail p-values to be folded into two-tail pvalues.

Returns

The two-tail p-values.

Return type

float

lib5c.util.statistics.stouffer(pvalue_matrix, axis=None)[source]

Combines a matrix of p-values along a specified axis using Stouffer’s Z-transform.

Parameters
  • pvalue_matrix (np.ndarray) – Matrix of p-values.

  • axis (int, optional) – The axis to combine p-values along. Pass None to combine all of them.

Returns

Array of combined p-values.

Return type

np.ndarray

Notes

Element-by-element, this should be equivalent to:

scipy.stats.combine_pvalues(pvalue_matrix, method='stouffer')[1]

except that this function is vectorized.

Examples

>>> from scipy.stats import combine_pvalues
>>> stouffer([0.1, 0.1]) == combine_pvalues([0.1, 0.1],
...                                         method='stouffer')[1]
True
>>> stouffer(np.array([[0.1, 0.1],
...                    [0.2, 0.2]]), axis=1)
array([0.03496316, 0.11697758])