Class MannWhitneyUTest


  • public class MannWhitneyUTest
    extends java.lang.Object
    An implementation of the Mann-Whitney U test (also called Wilcoxon rank-sum test).
    • Constructor Summary

      Constructors 
      Constructor Description
      MannWhitneyUTest()
      Create a test instance using where NaN's are left in place and ties get the average of applicable ranks.
      MannWhitneyUTest​(NaNStrategy nanStrategy, TiesStrategy tiesStrategy)
      Create a test instance using the given strategies for NaN's and ties.
    • Field Detail

      • naturalRanking

        private NaturalRanking naturalRanking
        Ranking algorithm.
    • Constructor Detail

      • MannWhitneyUTest

        public MannWhitneyUTest()
        Create a test instance using where NaN's are left in place and ties get the average of applicable ranks. Use this unless you are very sure of what you are doing.
      • MannWhitneyUTest

        public MannWhitneyUTest​(NaNStrategy nanStrategy,
                                TiesStrategy tiesStrategy)
        Create a test instance using the given strategies for NaN's and ties. Only use this if you are sure of what you are doing.
        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

      • concatenateSamples

        private double[] concatenateSamples​(double[] x,
                                            double[] y)
        Concatenate the samples into one array.
        Parameters:
        x - first sample
        y - second sample
        Returns:
        concatenated array
      • mannWhitneyU

        public double mannWhitneyU​(double[] x,
                                   double[] y)
                            throws NullArgumentException,
                                   NoDataException
        Computes the Mann-Whitney U statistic comparing mean for two independent samples possibly of different length.

        This statistic can be used to perform a Mann-Whitney U test evaluating the null hypothesis that the two independent samples has equal mean.

        Let Xi denote the i'th individual of the first sample and Yj the j'th individual in the second sample. Note that the samples would often have different length.

        Preconditions:

        • All observations in the two samples are independent.
        • The observations are at least ordinal (continuous are also ordinal).

        Parameters:
        x - the first sample
        y - the second sample
        Returns:
        Mann-Whitney U statistic (maximum of Ux and Uy)
        Throws:
        NullArgumentException - if x or y are null.
        NoDataException - if x or y are zero-length.
      • calculateAsymptoticPValue

        private double calculateAsymptoticPValue​(double Umin,
                                                 int n1,
                                                 int n2)
                                          throws ConvergenceException,
                                                 MaxCountExceededException
        Parameters:
        Umin - smallest Mann-Whitney U value
        n1 - number of subjects in first sample
        n2 - number of subjects in second sample
        Returns:
        two-sided asymptotic p-value
        Throws:
        ConvergenceException - if the p-value can not be computed due to a convergence error
        MaxCountExceededException - if the maximum number of iterations is exceeded