hide long namesshow long names
hide short namesshow short names
Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

NAG Toolbox: nag_nonpar_gofstat_anddar (g08ch)


    1  Purpose
    2  Syntax
    7  Accuracy
    9  Example


nag_nonpar_gofstat_anddar (g08ch) calculates the Anderson–Darling goodness-of-fit test statistic.


[result, y, ifail] = g08ch(issort, y, 'n', n)
[result, y, ifail] = nag_nonpar_gofstat_anddar(issort, y, 'n', n)


Denote by A2 the Anderson–Darling test statistic for n observations y1,y2,,yn of a variable Y assumed to be standard uniform and sorted in ascending order, then:
A2 = -n-S ;  
S = i=1 n 2i-1 n lnyi + ln 1- y n-i+1 .  
When observations of a random variable X are non-uniformly distributed, the probability integral transformation (PIT):
Y=FX ,  
where F is the cumulative distribution function of the distribution of interest, yields a uniformly distributed random variable Y. The PIT is true only if all parameters of a distribution are known as opposed to estimated; otherwise it is an approximation.


Anderson T W and Darling D A (1952) Asymptotic theory of certain ‘goodness-of-fit’ criteria based on stochastic processes Annals of Mathematical Statistics 23 193–212


Compulsory Input Parameters

1:     issort – logical scalar
Set issort=true if the observations are sorted in ascending order; otherwise the function will sort the observations.
2:     yn – double array
yi, for i=1,2,,n, the n observations.
Constraint: if issort=true, the values must be sorted in ascending order. Each yi must lie in the interval 0,1.

Optional Input Parameters

1:     n int64int32nag_int scalar
Default: the dimension of the array y.
n, the number of observations.
Constraint: n>1.

Output Parameters

1:     result – double scalar
The result of the function.
2:     yn – double array
If issort=false, the data sorted in ascending order; otherwise the array is unchanged.
3:     ifail int64int32nag_int scalar
ifail=0 unless the function detects an error (see Error Indicators and Warnings).

Error Indicators and Warnings

Errors or warnings detected by the function:
Constraint: n>1.
issort=true and the data in y is not sorted in ascending order.
The data in y must lie in the interval 0,1.
An unexpected error has been triggered by this routine. Please contact NAG.
Your licence key may have expired or may not have been installed correctly.
Dynamic memory allocation failed.


Not applicable.

Further Comments



This example calculates the A2 statistic for data assumed to arise from an exponential distribution with a sample parameter estimate and simulates its p-value using the NAG basic random number generator.
function g08ch_example

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

x = [0.4782745, 1.2858962, 1.1163891, 2.0410619, 2.2648109, 0.0833660, ...
     1.2527554, 0.4031288, 0.7808981, 0.1977674, 3.2539440, 1.8113504, ...
     1.2279834, 3.9178773, 1.4494309, 0.1358438, 1.8061778, 6.0441929, ...
     0.9671624, 3.2035042, 0.8067364, 0.4179364, 3.5351774, 0.3975414, ...
     0.6120960, 0.1332589];
n = int64(numel(x));

% Maximum likelihood estimate of mean
beta = mean(x);
% PIT, using exponential CDF with mean beta
y = 1 - exp(-x/beta);
% Let g08ch sort the (approximately) uniform variates
issort = false;

% Calculate a-squared
[a2, y, ifail] = g08ch( ...
                        issort, y);

aa2 = (1+0.6/numel(y))*a2;

% Number of simulations
nsim = int64(888);
% Initialize the base generator to a repeatable sequence
seed  = [int64(206033)];
genid = int64(1);
subid = int64(-1);
[state, ifail] = g05kf( ...
                        genid, subid, seed);
[state, xsim, ifail] = g05sf( ...
                              n*nsim, beta, state);

% Simulations loop
nupper = 0;
for j=1:nsim
  k = (j-1)*n;
  x = xsim(k+1:k+n);
  % Maximum likelihood estimate of mean
  sbeta = mean(x);
  % PIT
  y = 1 - exp(-x/sbeta);
  % Calculate a-squared
  [sa2, y, ifail] = g08ch( ...
                           issort, y);
  if sa2 > aa2
    nupper = nupper + 1;

% Simulated upper tail probability value
p = nupper/(nsim+1);

% Results
fprintf('H0: data from exponential distribution with mean %10.4e\n', beta);
fprintf('Test statistic, A-squared: %8.4f\n', a2);
fprintf('Upper tail probability:    %8.4f\n', p);

g08ch example results

H0: data from exponential distribution with mean 1.5240e+00
Test statistic, A-squared:   0.1616
Upper tail probability:      1.0000

PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015