Wilcoxon signed-rank test

The Wilcoxon signed-rank test is a non-parametric test used to compare the distribution median with a given value m. This criterion could be used as an alternative for one-sample Student t-test. Unlike the t-test, Wilcoxon signed-rank test can work with non-normal distributions.

This test has the following requirements:

Note #1
The distribution symmetry requirement is critical. If the distribution is non-symmetric, the test could not be used. In that case we can use less powerful (but more general) sign test.

Subroutine WilcoxonSignedRankTest returns three p-values:

The test algorithm is simple. All elements which are equal to m are thrown out. After that we have elements of two types only: elements which are greater than m and which are less than m. Elements are sorted by their absolute value. After that W+ (sum of positive elements ranks) is calculated. If this hypothesis is true (the median equals m), W+ has a distribution which could easily be calculated (using dynamic programming) and tabulated. To define the significance level corresponding to the W+ value tables (for small Ns) or asymptotic approximations (for greater Ns) are used. This method lets us calculate p-values with two decimal places in interval [0.0001, 1]. "Two decimal places" does not sound very impressive, but in practice the relative error of less than 1% is enough to make a decision.

Note #2
Some sources recommend to use normal distribution with μ = 0.25·N·(N+1) and σ2 = N·(N+1)·(2N+1)/24 when estimating the significance level. In fact, as N increases W+ converges to normal distribution with these parameters. However, although the rate of convergence is good it's better not to approximate W+ with normal distribution, because this approximation can be insufficiently precise.

Links

  1. 'Level of measurement', Wikipedia
  2. 'Wilcoxon signed-rank test', Wikipedia
  3. 'Hypothesis testing', Wikipedia
  4. 'P-value', Wikipedia

This article is licensed for personal use only.

Download ALGLIB for C++ / C# / Java / Python / ...

ALGLIB Project offers you two editions of ALGLIB:

ALGLIB Free Edition:
+delivered for free
+offers full set of numerical functionality
+extensive algorithmic optimizations
-no multithreading
-non-commercial license

ALGLIB Commercial Edition:
+flexible pricing
+offers full set of numerical functionality
+extensive algorithmic optimizations
+high performance (SMP, SIMD)
+commercial license with support plan

Links to download sections for Free and Commercial editions can be found below:

ALGLIB 4.03.0 for C++

C++ library.
Delivered with sources.
Monolithic design.
Extreme portability.
Editions:   FREE   COMMERCIAL

ALGLIB 4.03.0 for C#

C# library with native kernels.
Delivered with sources.
VB.NET and IronPython wrappers.
Extreme portability.
Editions:   FREE   COMMERCIAL

ALGLIB 4.03.0 for Java

Java wrapper around HPC core.
Delivered with sources.
Seamless integration with Java.
Editions:   FREE   COMMERCIAL

ALGLIB 4.03.0 for Delphi

Delphi wrapper around C core.
Delivered as precompiled binary.
Compatible with FreePascal.
Editions:   FREE   COMMERCIAL

ALGLIB 4.03.0 for CPython

CPython wrapper around C core.
Delivered as precompiled binary.
Editions:   FREE   COMMERCIAL