Class 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 Detail

      • 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 Detail

      • 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