Class WilcoxonSignedRankTest

java.lang.Object
org.hipparchus.stat.inference.WilcoxonSignedRankTest

public class WilcoxonSignedRankTest extends Object
An implementation of the Wilcoxon signed-rank test. This implementation currently handles only paired (equal length) samples and discards tied pairs from the analysis. The latter behavior differs from the R implementation of wilcox.test and corresponds to the "wilcox" zero_method configurable in scipy.stats.wilcoxon.
  • Constructor Details

    • WilcoxonSignedRankTest

      public WilcoxonSignedRankTest()
      Create a test instance where NaN's are left in place and ties get the average of applicable ranks.
    • WilcoxonSignedRankTest

      public WilcoxonSignedRankTest(NaNStrategy nanStrategy, TiesStrategy tiesStrategy)
      Create a test instance using the given strategies for NaN's and ties.
      Parameters:
      nanStrategy - specifies the strategy that should be used for Double.NaN's
      tiesStrategy - specifies the strategy that should be used for ties
  • Method Details

    • wilcoxonSignedRank

      public double wilcoxonSignedRank(double[] x, double[] y) throws MathIllegalArgumentException, NullArgumentException
      Computes the Wilcoxon signed ranked statistic comparing means for two related samples or repeated measurements on a single sample.

      This statistic can be used to perform a Wilcoxon signed ranked test evaluating the null hypothesis that the two related samples or repeated measurements on a single sample have equal mean.

      Let Xi denote the i'th individual of the first sample and Yi the related i'th individual in the second sample. Let Zi = Yi - Xi.

      * Preconditions:

      • The differences Zi must be independent.
      • Each Zi comes from a continuous population (they must be identical) and is symmetric about a common median.
      • The values that Xi and Yi represent are ordered, so the comparisons greater than, less than, and equal to are meaningful.
      Parameters:
      x - the first sample
      y - the second sample
      Returns:
      wilcoxonSignedRank statistic (the larger of W+ and W-)
      Throws:
      NullArgumentException - if x or y are null.
      MathIllegalArgumentException - if x or y are zero-length.
      MathIllegalArgumentException - if x and y do not have the same length.
    • wilcoxonSignedRankTest

      public double wilcoxonSignedRankTest(double[] x, double[] y, boolean exactPValue) throws MathIllegalArgumentException, NullArgumentException, MathIllegalStateException
      Returns the observed significance level, or p-value, associated with a Wilcoxon signed ranked statistic comparing mean for two related samples or repeated measurements on a single sample.

      Let Xi denote the i'th individual of the first sample and Yi the related i'th individual in the second sample. Let Zi = Yi - Xi.

      Preconditions:

      • The differences Zi must be independent.
      • Each Zi comes from a continuous population (they must be identical) and is symmetric about a common median.
      • The values that Xi and Yi represent are ordered, so the comparisons greater than, less than, and equal to are meaningful.

      Implementation notes:

      • Tied pairs are discarded from the data.
      • When exactPValue is false, the normal approximation is used to estimate the p-value including a continuity correction factor. wilcoxonSignedRankTest(x, y, true) should give the same results as wilcox.test(x, y, alternative = "two.sided", mu = 0, paired = TRUE, exact = FALSE, correct = TRUE) in R (as long as there are no tied pairs in the data).
      Parameters:
      x - the first sample
      y - the second sample
      exactPValue - if the exact p-value is wanted (only works for x.length <= 30, if true and x.length > 30, MathIllegalArgumentException is thrown)
      Returns:
      p-value
      Throws:
      NullArgumentException - if x or y are null.
      MathIllegalArgumentException - if x or y are zero-length or for all i, x[i] == y[i]
      MathIllegalArgumentException - if x and y do not have the same length.
      MathIllegalArgumentException - if exactPValue is true and x.length > 30
      MathIllegalStateException - if the p-value can not be computed due to a convergence error
      MathIllegalStateException - if the maximum number of iterations is exceeded