NAG Library Function Document
nag_mann_whitney (g08amc)
1 Purpose
nag_mann_whitney (g08amc) performs the Mann–Whitney $U$ test on two independent samples of possibly unequal size and calculates the exact probability for the Mann–Whitney rank sum test statistic for the case where there are either ties or no ties in the samples pooled together.
2 Specification
#include <nag.h> 
#include <nagg08.h> 
void 
nag_mann_whitney (Integer n1,
const double x[],
Integer n2,
const double y[],
Nag_TailProbability tail,
Nag_CompProb exact,
double *u,
double *z,
double *p,
NagError *fail) 

3 Description
The Mann–Whitney $U$ test investigates the difference between two populations defined by the distribution functions $F\left(x\right)$ and $G\left(y\right)$ respectively. The data consist of two independent samples of size ${n}_{1}$ and ${n}_{2}$, denoted by ${x}_{1},{x}_{2},\dots ,{x}_{{n}_{1}}$ and ${y}_{1},{y}_{2},\dots ,{y}_{{n}_{2}}$, taken from the two populations.
The hypothesis under test,
${H}_{0}$, often called the null hypothesis, is that the two distributions are the same, that is
$F\left(x\right)=G\left(x\right)$, and this is to be tested against an alternative hypothesis
${H}_{1}$ which is
 ${H}_{1}$ : $F\left(x\right)\ne G\left(y\right)$; or
 ${H}_{1}$ : $F\left(x\right)<G\left(y\right)$, i.e., the $x$'s tend to be greater than the $y$'s; or
 ${H}_{1}$ : $F\left(x\right)>G\left(y\right)$, i.e., the $x$'s tend to be less than the $y$'s,
using a two tailed, upper tailed or lower tailed probability respectively. You select the alternative hypothesis by choosing the appropriate tail probability to be computed (see the description of argument
tail in
Section 5).
Note that when using this test to test for differences in the distributions one is primarily detecting differences in the location of the two distributions. That is to say, if we reject the null hypothesis ${H}_{0}$ in favour of the alternative hypothesis ${H}_{1}$: $F\left(x\right)>G\left(y\right)$ we have evidence to suggest that the location, of the distribution defined by $F\left(x\right)$, is less than the location, of the distribution defined by $G\left(y\right)$.
The Mann–Whitney
$U$ test differs from the Median test (see
nag_median_test (g08acc)) in that the ranking of the individual scores within the pooled sample is taken into account, rather than simply the position of a score relative to the median of the pooled sample. It is therefore a more powerful test if score differences are meaningful.
The test procedure involves ranking the pooled sample, average ranks being used for ties. Let
${r}_{1i}$ be the rank assigned to
${x}_{\mathit{i}}$, for
$\mathit{i}=1,2,\dots ,{n}_{1}$ and
${r}_{2\mathit{j}}$ the rank assigned to
${y}_{\mathit{j}}$, for
$\mathit{j}=1,2,\dots ,{n}_{2}$. Then the test statistic
$U$ is defined as follows;
$U$ is also the number of times a score in the second sample precedes a score in the first sample (where we only count a half if a score in the second sample actually equals a score in the first sample).
nag_mann_whitney (g08amc) returns:
(a) 
the test statistic $U$; 
(b) 
the approximate Normal test statistic,
where
and
where
$\tau $ is the number of groups of ties in the sample and ${t}_{j}$ is the number of ties in the $j$th group.
Note that if no ties are present the variance of $U$ reduces to $\frac{{n}_{1}{n}_{2}}{12}\left({n}_{1}+{n}_{2}+1\right)$. 
(c) 
An indicator as to whether ties were present in the pooled sample or not. 
(d) 
The tail probability, $p$, corresponding to $U$, depending on the choice of tail, i.e., the choice of alternative hypothesis, ${H}_{1}$. An exact probability or a normal approximation may be selected using the exact option. For large values of ${n}_{1}$ and ${n}_{2}$ the normal approximation should be adequate while the exact computation may require extensive calculation, particularly in cases where there are ties in the observations. For small samples the exact probability should be used.
The value of $p$ can be used to perform a significance test on the null hypothesis ${H}_{0}$ against the alternative hypothesis ${H}_{1}$. Let $\alpha $ be the size of the significance test (that is, $\alpha $ is the probability of rejecting ${H}_{0}$ when ${H}_{0}$ is true). If $p<\alpha $ then the null hypothesis is rejected. Typically $\alpha $ might be 0.05 or 0.01. 
4 References
Conover W J (1980) Practical Nonparametric Statistics Wiley
Neumann N (1988) Some procedures for calculating the distributions of elementary nonparametric teststatistics Statistical Software Newsletter 14(3) 120–126
Siegel S (1956) Nonparametric Statistics for the Behavioral Sciences McGraw–Hill
5 Arguments
 1:
$\mathbf{n1}$ – IntegerInput

On entry: the number of nontied pairs, ${n}_{1}$.
Constraint:
${\mathbf{n1}}\ge 1$.
 2:
$\mathbf{x}\left[{\mathbf{n1}}\right]$ – const doubleInput

On entry: the first vector of observations. ${x}_{1},{x}_{2},\dots ,{x}_{{n}_{1}}$.
 3:
$\mathbf{n2}$ – IntegerInput

On entry: the size of the second sample, ${n}_{2}$.
Constraint:
${\mathbf{n2}}\ge 1$.
 4:
$\mathbf{y}\left[{\mathbf{n2}}\right]$ – const doubleInput

On entry: the second vector of observations. ${y}_{1},{y}_{2},\dots ,{y}_{{n}_{2}}$.
 5:
$\mathbf{tail}$ – Nag_TailProbabilityInput

On entry: indicates the choice of tail probability, and hence the alternative hypothesis.
 ${\mathbf{tail}}=\mathrm{Nag\_TwoTail}$
 A two tailed probability is calculated and the alternative hypothesis is ${H}_{1}:F\left(x\right)\ne G\left(y\right)$.
 ${\mathbf{tail}}=\mathrm{Nag\_UpperTail}$
 An upper tailed probability is calculated and the alternative hypothesis ${H}_{1}:F\left(x\right)<G\left(y\right)$, i.e., the $x$'s tend to be greater than the $y$'s.
 ${\mathbf{tail}}=\mathrm{Nag\_LowerTail}$
 A lower tailed probability is calculated and the alternative hypothesis ${H}_{1}:F\left(x\right)>G\left(y\right)$, i.e., the $x$'s tend to be less than the $y$'s.
Constraint:
${\mathbf{tail}}=\mathrm{Nag\_TwoTail}$, $\mathrm{Nag\_UpperTail}$ or $\mathrm{Nag\_LowerTail}$.
 6:
$\mathbf{exact}$ – Nag_CompProbInput

On entry: indicates if exact probability,
$p$, is to be computed.
 ${\mathbf{exact}}=\mathrm{Nag\_CompProbExact}$
 Compute the exact probability.
 ${\mathbf{exact}}=\mathrm{Nag\_CompProbApprox}$
 Compute the approximate probability.
Constraint:
${\mathbf{exact}}=\mathrm{Nag\_CompProbExact}$ or $\mathrm{Nag\_CompProbApprox}$.
 7:
$\mathbf{u}$ – double *Output

On exit: the Mann–Whitney rank sum statistic, $U$.
 8:
$\mathbf{z}$ – double *Output

On exit: the approximate Normal test statistic,
$z$, as described in
Section 3.
 9:
$\mathbf{p}$ – double *Output

On exit: the exact tail probability,
$p$, as specified by the argument
tail.
 10:
$\mathbf{fail}$ – NagError *Input/Output

The NAG error argument (see
Section 2.7 in How to Use the NAG Library and its Documentation).
6 Error Indicators and Warnings
 NE_ALLOC_FAIL

Dynamic memory allocation failed.
 NE_BAD_PARAM

On entry, argument
exact had an illegal value.
On entry, argument
tail had an illegal value.
 NE_G08AH_SAMP_IDEN

The pooled samples are all the same, that is the variance of $U=0.0$.
 NE_INT_ARG_LT

On entry,
n1 must not be less than 1:
${\mathbf{n1}}=\u2329\mathit{\text{value}}\u232a$.
On entry,
n2 must not be less than 1:
${\mathbf{n2}}=\u2329\mathit{\text{value}}\u232a$.
 NE_INTERNAL_ERROR

An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact
NAG for assistance.
 NE_MANN_WHITNEY_STAT

The computed Mann–Whitney statistic, $U=\u2329\mathit{\text{value}}\u232a$. If the exact tail probability is to be computed, then $U\ge 0$.
7 Accuracy
The approximate tail probability, $p$, returned by nag_mann_whitney (g08amc) is a good approximation to the exact probability for cases where $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({n}_{1},{n}_{2}\right)\ge 30$ and $\left({n}_{1}+{n}_{2}\right)\ge 40$. The relative error of the approximation should be less than 10 percent, for most cases falling in this range.
8 Parallelism and Performance
nag_mann_whitney (g08amc) is not threaded in any implementation.
The time taken by nag_mann_whitney (g08amc) increases with ${n}_{1}$ and ${n}_{2}$.
10 Example
The example program performs the Mann–Whitney test on two independent samples of sizes 16 and 23 respectively. This is used to test the null hypothesis that the distributions of the two populations from which the samples were taken are the same against the alternative hypothesis that the distributions are different. The test statistic, the approximate Normal statistic and the approximate twotail probability are printed. An exact tail probability is also calculated and printed depending on whether ties were found in the pooled sample or not.
10.1 Program Text
Program Text (g08amce.c)
10.2 Program Data
Program Data (g08amce.d)
10.3 Program Results
Program Results (g08amce.r)