Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

Chapter Contents
Chapter Introduction
NAG Toolbox

# NAG Toolbox: nag_nonpar_test_mooddavid (g08ba)

## Purpose

nag_nonpar_test_mooddavid (g08ba) performs Mood's and David's tests for dispersion differences between two independent samples of possibly unequal size.

## Syntax

[r, w, v, pw, pv, ifail] = g08ba(x, n1, itest, 'n', n)
[r, w, v, pw, pv, ifail] = nag_nonpar_test_mooddavid(x, n1, itest, 'n', n)

## Description

Mood's and David's tests investigate the difference between the dispersions of two independent samples of sizes ${n}_{1}$ and ${n}_{2}$, denoted by
 $x1,x2,…,xn1$
and
 $xn1+ 1,xn1+ 2,…,xn, n=n1+n2.$
The hypothesis under test, ${H}_{0}$, often called the null hypothesis, is that the dispersion difference is zero, and this is to be tested against a one- or two-sided alternative hypothesis ${H}_{1}$ (see below).
Both tests are based on the rankings of the sample members within the pooled sample formed by combining both samples. If there is some difference in dispersion, more of the extreme ranks will tend to be found in one sample than in the other.
Let the rank of ${x}_{\mathit{i}}$ be denoted by ${r}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n$.
(a) Mood's test.
The test statistic $W=\sum _{i=1}^{{n}_{1}}{\left({r}_{i}-\frac{n+1}{2}\right)}^{2}$ is found.
$W$ is the sum of squared deviations from the average rank in the pooled sample. For large $n$, $W$ approaches normality, and so an approximation, ${p}_{w}$, to the probability of observing $W$ not greater than the computed value, may be found.
nag_nonpar_test_mooddavid (g08ba) returns $W$ and ${p}_{w}$ if Mood's test is selected.
(b) David's test.
The disadvantage of Mood's test is that it assumes that the means of the two samples are equal. If this assumption is unjustified a high value of $W$ could merely reflect the difference in means. David's test reduces this effect by using the variance of the ranks of the first sample about their mean rank, rather than the overall mean rank.
The test statistic for David's test is
 $V=1n1-1 ∑i=1n1 ri-r- 2$
where
 $r-=∑i= 1n1rin1.$
For large $n$, $V$ approaches normality, enabling an approximate probability ${p}_{v}$ to be computed, similarly to ${p}_{w}$.
nag_nonpar_test_mooddavid (g08ba) returns $V$ and ${p}_{v}$ if David's test is selected.
Suppose that a significance test of a chosen size $\alpha$ is to be performed (i.e., $\alpha$ is the probability of rejecting ${H}_{0}$ when ${H}_{0}$ is true; typically $\alpha$ is a small quantity such as $0.05$ or $0.01$).
The returned value $p$ ($={p}_{v}$ or ${p}_{w}$) can be used to perform a significance test, against various alternative hypotheses ${H}_{1}$, as follows.
 (i) ${H}_{1}$: dispersions are unequal. ${H}_{0}$ is rejected if $2×\mathrm{min}\phantom{\rule{0.125em}{0ex}}\left(p,1-p\right)<\alpha$. (ii) ${H}_{1}$: dispersion of sample $1>\text{}$ dispersion of sample $2$. ${H}_{0}$ is rejected if $1-p<\alpha$. (iii) ${H}_{1}$: dispersion of sample $2>\text{}$ dispersion of sample $1$. ${H}_{0}$ is rejected if $p<\alpha$.

## References

Cooper B E (1975) Statistics for Experimentalists Pergamon Press

## Parameters

### Compulsory Input Parameters

1:     $\mathrm{x}\left({\mathbf{n}}\right)$ – double array
The first ${n}_{1}$ elements of x must be set to the data values in the first sample, and the next ${n}_{2}$ ($\text{}={\mathbf{n}}-{n}_{1}$) elements to the data values in the second sample.
2:     $\mathrm{n1}$int64int32nag_int scalar
The size of the first sample, ${n}_{1}$.
Constraint: $1<{\mathbf{n1}}<{\mathbf{n}}$.
3:     $\mathrm{itest}$int64int32nag_int scalar
The test(s) to be carried out.
${\mathbf{itest}}=0$
Both Mood's and David's tests.
${\mathbf{itest}}=1$
David's test only.
${\mathbf{itest}}=2$
Mood's test only.
Constraint: ${\mathbf{itest}}=0$, $1$ or $2$.

### Optional Input Parameters

1:     $\mathrm{n}$int64int32nag_int scalar
Default: the dimension of the array x.
The total of the two sample sizes, $n$ ($\text{}={n}_{1}+{n}_{2}$).
Constraint: ${\mathbf{n}}>2$.

### Output Parameters

1:     $\mathrm{r}\left({\mathbf{n}}\right)$ – double array
The ranks ${r}_{\mathit{i}}$, assigned to the data values ${x}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n$.
2:     $\mathrm{w}$ – double scalar
Mood's test statistic, $W$, if requested.
3:     $\mathrm{v}$ – double scalar
David's test statistic, $V$, if requested.
4:     $\mathrm{pw}$ – double scalar
The lower tail probability, ${p}_{w}$, corresponding to the value of $W$, if Mood's test was requested.
5:     $\mathrm{pv}$ – double scalar
The lower tail probability, ${p}_{v}$, corresponding to the value of $V$, if David's test was requested.
6:     $\mathrm{ifail}$int64int32nag_int scalar
${\mathbf{ifail}}={\mathbf{0}}$ unless the function detects an error (see Error Indicators and Warnings).

## Error Indicators and Warnings

Errors or warnings detected by the function:
${\mathbf{ifail}}=1$
 On entry, ${\mathbf{n}}\le 2$.
${\mathbf{ifail}}=2$
 On entry, ${\mathbf{n1}}\le 1$, or ${\mathbf{n1}}\ge {\mathbf{n}}$.
${\mathbf{ifail}}=3$
 On entry, ${\mathbf{itest}}<0$, or ${\mathbf{itest}}>2$.
${\mathbf{ifail}}=-99$
${\mathbf{ifail}}=-399$
Your licence key may have expired or may not have been installed correctly.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.

## Accuracy

All computations are believed to be stable. The statistics $V$ and $W$ should be accurate enough for all practical uses.

The time taken by nag_nonpar_test_mooddavid (g08ba) is small, and increases with $n$.

## Example

This example is taken from page 280 of Cooper (1975). The data consists of two samples of six observations each. Both Mood's and David's test statistics and significances are computed. Note that Mood's statistic is inflated owing to the difference in location of the two samples, the median ranks differing by a factor of two.
```function g08ba_example

fprintf('g08ba example results\n\n');

x = [6;  9; 12;  4; 10; 11;  8;  1;  3;  7;  2;  5];

n1 = int64(6);
fprintf('Mood''s test and David''s test\n\n');
fprintf('Data values\n\n');
fprintf('Group 1\n');
fprintf('%4.0f',x(1:n1));
fprintf('\n\nGroup 2\n');
fprintf('%4.0f',x(n1+1:end));
fprintf('\n\n');

itest = int64(0);
[r, w, v, pw, pv, ifail] = g08ba( ...
x, n1, itest);

fprintf('    Mood''s measure  = %8.3f   Significance = %8.4f\n', w, pw);
fprintf('    David''s measure = %8.3f   Significance = %8.4f\n', v, pv);

```
```g08ba example results

Mood's test and David's test

Data values

Group 1
6   9  12   4  10  11

Group 2
8   1   3   7   2   5

Mood's measure  =   75.500   Significance =   0.5830
David's measure =    9.467   Significance =   0.1986
```