NAG C Library Function Document
nag_wilcoxon_test (g08agc)
1
Purpose
nag_wilcoxon_test (g08agc) performs the Wilcoxon signed rank test on a single sample of size $n$.
2
Specification
#include <nag.h> 
#include <nagg08.h> 
void 
nag_wilcoxon_test (Integer n,
const double x[],
double median,
Nag_TailProbability tail,
Nag_IncSignZeros zeros,
double *w,
double *z,
double *p,
Integer *non_zero,
NagError *fail) 

3
Description
The Wilcoxon one sample signed rank test may be used to test whether a particular sample came from a population with a specified median. It is assumed that the population distribution is symmetric. The data consist of a single sample of $n$ observations denoted by ${x}_{1},{x}_{2},\dots ,{x}_{n}$. This sample may arise from the difference between pairs of observations from two matched samples of equal size taken from two populations, in which case the test may be used to test whether the median of the first population is the same as that of the second population.
The hypothesis under test,
${H}_{0}$, often called the null hypothesis, is that the median is equal to some given value
$\left({X}_{\mathit{med}}\right)$, and this is to be tested against an alternative hypothesis
${H}_{1}$ which is
 ${H}_{1}$ : population median $\ne {X}_{\mathit{med}}$; or
 ${H}_{1}$ : population median $>{X}_{\mathit{med}}$; or
 ${H}_{1}$ : population median $<{X}_{\mathit{med}}$,
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).
The Wilcoxon test differs from the Sign test (see
nag_sign_test (g08aac)) in that the magnitude of the scores is taken into account, rather than simply the direction of such scores.
The test procedure is as follows:
(a) 
For each ${x}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n$, the signed difference ${d}_{i}={x}_{i}{X}_{\mathit{med}}$ is found, where ${X}_{\mathit{med}}$ is a given test value for the median of the sample. 
(b) 
The absolute differences $\left{d}_{i}\right$ are ranked with rank ${r}_{i}$ and any tied values of $\left{d}_{i}\right$ are assigned the average of the tied ranks. You may choose whether or not to ignore any cases where ${d}_{i}=0$ by removing them before or after ranking (see the description of the argument zeros in Section 5). 
(c) 
The number of nonzero ${d}_{i}$'s is found. 
(d) 
To each rank is affixed the sign of the ${d}_{i}$ to which it corresponds. Let ${s}_{i}=\mathrm{sign}\left({d}_{i}\right){r}_{i}$. 
(e) 
The sum of the positivesigned ranks, $W={\displaystyle \sum _{{s}_{i}>0}}\phantom{\rule{0.25em}{0ex}}{s}_{i}={\sum}_{i=1}^{n}\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({s}_{i},0.0\right)$, is calculated. 
nag_wilcoxon_test (g08agc) returns:
(a) 
The test statistic $W$; 
(b) 
The number ${n}_{1}$ of nonzero ${d}_{i}$'s; 
(c) 
The approximate Normal test statistic $z$, where

(d) 
The tail probability, $p$, corresponding to $W$, depending on the choice of the alternative hypothesis, ${H}_{1}$. 
If ${n}_{1}\le 80$, $p$ is computed exactly; otherwise, an approximation to $p$ is returned based on an approximate Normal statistic corrected for continuity according to the tail specified.
The value of $p$ can be used to perform a significance test on the median against the alternative hypothesis. 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{n}$ – IntegerInput

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

On entry: the sample observations, ${x}_{1},{x}_{2},\dots ,{x}_{n}$.
 3:
$\mathbf{median}$ – doubleInput

On entry: the median test value, ${\mathrm{X}}_{\mathit{med}}$.
 4:
$\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 ${\mathrm{H}}_{1}$: population median $\ne {\mathrm{X}}_{\mathit{med}}$.
 ${\mathbf{tail}}=\mathrm{Nag\_UpperTail}$
 An upper tailed probability is calculated and the alternative hypothesis is ${\mathrm{H}}_{1}$: population median $>{\mathrm{X}}_{\mathit{med}}$.
 ${\mathbf{tail}}=\mathrm{Nag\_LowerTail}$
 A lower tailed probability is calculated and the alternative hypothesis is ${\mathrm{H}}_{1}$: population median $<{\mathrm{X}}_{\mathit{med}}$.
Constraint:
${\mathbf{tail}}=\mathrm{Nag\_TwoTail}$, $\mathrm{Nag\_UpperTail}$ or $\mathrm{Nag\_LowerTail}$.
 5:
$\mathbf{zeros}$ – Nag_IncSignZerosInput

On entry: indicates whether or not to include the cases where
${d}_{i}=0.0$ in the ranking of the
${d}_{i}$'s.
 ${\mathbf{zeros}}=\mathrm{Nag\_IncSignZerosY}$
 All ${d}_{i}=0.0$ are included when ranking.
 ${\mathbf{zeros}}=\mathrm{Nag\_IncSignZerosN}$
 All ${d}_{i}=0.0$, are ignored, that is all cases where ${d}_{i}=0.0$ are removed before ranking.
Constraint:
${\mathbf{zeros}}=\mathrm{Nag\_IncSignZerosY}$ or $\mathrm{Nag\_IncSignZerosN}$.
 6:
$\mathbf{w}$ – double *Output

On exit: the Wilcoxon rank sum statistic, $W$, being the sum of the positive ranks.
 7:
$\mathbf{z}$ – double *Output

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

On exit: the tail probability,
$p$, as specified by the argument
tail.
 9:
$\mathbf{non\_zero}$ – Integer *Output

On exit: the number of nonzero ${d}_{i}$'s, ${n}_{1}$.
 10:
$\mathbf{fail}$ – NagError *Input/Output

The NAG error argument (see
Section 3.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
tail had an illegal value.
On entry, argument
zeros had an illegal value.
 NE_G08AG_SAMP_IDEN

The whole sample is identical to the given median test value.
 NE_INT_ARG_LT

On entry, ${\mathbf{n}}=\u2329\mathit{\text{value}}\u232a$.
Constraint: ${\mathbf{n}}\ge 1$.
 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.
7
Accuracy
The approximation used to calculate $p$ when ${n}_{1}>80$ will return a value with a relative error of less than 10 percent for most cases. The error may increase for cases where there are a large number of ties in the sample.
8
Parallelism and Performance
nag_wilcoxon_test (g08agc) is not threaded in any implementation.
The time taken by nag_wilcoxon_test (g08agc) increases with ${n}_{1}$, until ${n}_{1}>80$, from which point on the approximation is used. The time decreases significantly at this point and increases again modestly with ${n}_{1}$ for ${n}_{1}>80$.
10
Example
The example program performs the Wilcoxon signed rank test on two matched samples of size $8$, taken from two populations. The distribution of the differences between pairs of observations from the two populations is assumed to be symmetric. The test is used to test whether the medians of the two distributions of the populations are equal or not. The test statistic, the approximate Normal statistic and the two tailed probability are computed and printed.
10.1
Program Text
Program Text (g08agce.c)
10.2
Program Data
Program Data (g08agce.d)
10.3
Program Results
Program Results (g08agce.r)