padjust

Adjust supplied p-values for multiple comparisons.

Usage

var padjust = require( '@stdlib/stats/padjust' );

padjust( pvals, method[, comparisons] )

Adjusts supplied p-values for multiple comparisons via a specified method.

var out = padjust( [ 0.1496, 0.0275, 0.3053, 0.1599, 0.2061 ], 'bonferroni' );
// returns [ 0.748, ~0.138, ..., ~0.799, 1 ]

The method parameter can be one of the following values:

  • bh: Benjamini-Hochberg procedure controlling the False Discovery Rate (FDR).
  • bonferroni: Bonferroni correction fixing the family-wise error rate by multiplying the p-values with the number of comparisons. The Bonferroni correction is usually a too conservative adjustment compared to the others.
  • by: Procedure by Benjamini & Yekutieli for controlling the False Discovery Rate (FDR) under dependence.
  • holm: Hommel's method controlling family-wise error rate. It is uniformly more powerful than the Bonferroni correction.
  • hommel: Hommel's method, which is valid when hypothesis tests are independent. It is more expensive to compute than the other methods.
var pvalues = [ 0.319, 0.201, 0.4, 0.374, 0.113 ];
var out = padjust( pvalues, 'holm' );
// returns [ ~0.957, 0.804, ..., ~0.957, ~0.565 ]

out = padjust( pvalues, 'bh' );
// returns [ 0.4, 0.4, ..., 0.4, 0.4 ]

By default, the number of comparisons for which the p-values should be corrected is equal to the number of provided p-values. Alternatively, it is possible to set comparisons to a number greater than the length of pvals. In that case, the methods assume comparisons - pvals.length unobserved p-values that are greater than all observed p-values (for Holm's method and the Bonferroni correction) or equal to 1 for the remaining methods.

var pvalues = [ 0.319, 0.201, 0.4, 0.374, 0.113 ];
var out = padjust( pvalues, 'bh', 10 );
// returns [ 0.8, 0.8, ..., 0.8, 0.8 ]

Examples

var padjust = require( '@stdlib/stats/padjust' );

var pvalues = [ 0.008, 0.03, 0.123, 0.6, 0.2 ];

var out = padjust( pvalues, 'bh' );
// returns [ 0.04, 0.075, ~0.205, 0.6, 0.25 ]

out = padjust( pvalues, 'bonferroni' );
// returns [ 0.04, 0.15, 0.615, 1.0, 1.0 ]

out = padjust( pvalues, 'by' );
// returns [ ~0.457, ~0.856, 1.0, 1.0, 1.0 ]

out = padjust( pvalues, 'holm' );
// returns [ 0.2, 0.6, 1.0, 1.0, 1.0 ]

out = padjust( pvalues, 'hommel' );
// returns [ 0.16, 0.6, 1.0, 1.0, 1.0 ]