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_stat_normal_scores_var (g01dc)

 Contents

    1  Purpose
    2  Syntax
    7  Accuracy
    9  Example

Purpose

nag_stat_normal_scores_var (g01dc) computes an approximation to the variance-covariance matrix of an ordered set of independent observations from a Normal distribution with mean 0.0 and standard deviation 1.0.

Syntax

[vec, ifail] = g01dc(n, exp1, exp2, sumssq)
[vec, ifail] = nag_stat_normal_scores_var(n, exp1, exp2, sumssq)

Description

nag_stat_normal_scores_var (g01dc) is an adaptation of the Applied Statistics Algorithm AS 128, see Davis and Stephens (1978). An approximation to the variance-covariance matrix, V, using a Taylor series expansion of the Normal distribution function is discussed in David and Johnson (1954).
However, convergence is slow for extreme variances and covariances. The present function uses the David–Johnson approximation to provide an initial approximation and improves upon it by use of the following identities for the matrix.
For a sample of size n, let mi be the expected value of the ith largest order statistic, then:
(a) for any i=1,2,,n, j=1nVij=1
(b) V12=V11+mn2-mnmn-1-1
(c) the trace of V is trV=n-i=1nmi2
(d) Vij=Vji=Vrs=Vsr where r=n+1-i, s=n+1-j and i,j=1,2,,n. Note that only the upper triangle of the matrix is calculated and returned column-wise in vector form.

References

David F N and Johnson N L (1954) Statistical treatment of censored data, Part 1. Fundamental formulae Biometrika 41 228–240
Davis C S and Stephens M A (1978) Algorithm AS 128: approximating the covariance matrix of Normal order statistics Appl. Statist. 27 206–212

Parameters

Compulsory Input Parameters

1:     n int64int32nag_int scalar
n, the sample size.
Constraint: n>0.
2:     exp1 – double scalar
The expected value of the largest Normal order statistic, mn, from a sample of size n.
3:     exp2 – double scalar
The expected value of the second largest Normal order statistic, mn-1, from a sample of size n.
4:     sumssq – double scalar
The sum of squares of the expected values of the Normal order statistics from a sample of size n.

Optional Input Parameters

None.

Output Parameters

1:     vecn×n+1/2 – double array
The upper triangle of the n by n variance-covariance matrix packed by column. Thus element Vij is stored in veci+j×j-1/2, for 1ijn.
2:     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:
   ifail=1
On entry,n<1.
   ifail=-99
An unexpected error has been triggered by this routine. Please contact NAG.
   ifail=-399
Your licence key may have expired or may not have been installed correctly.
   ifail=-999
Dynamic memory allocation failed.

Accuracy

For n20, where comparison with the exact values can be made, the maximum error is less than 0.0001.

Further Comments

The time taken by nag_stat_normal_scores_var (g01dc) is approximately proportional to n2.
The arguments exp1 (=mn), exp2 (=mn-1) and sumssq (=j=1nmj2) may be found from the expected values of the Normal order statistics obtained from nag_stat_normal_scores_exact (g01da) (exact) or nag_stat_normal_scores_approx (g01db) (approximate).

Example

A program to compute the variance-covariance matrix for a sample of size 6. nag_stat_normal_scores_exact (g01da) is called to provide values for exp1, exp2 and sumssq.
function g01dc_example


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

n    = int64(6);
etol = 1e-4;

% Compute normal scores
[pp, errest, ifail] = g01da(n, etol);

sumssq = dot(pp,pp);
exp1   = pp(n);
exp2   = pp(n-1);

% Compute approximate variance-covariance matrix
[vec, ifail] = g01dc(n, exp1, exp2, sumssq);

fprintf('Sample size = %4d\n', n);
fprintf('Variance-covariance matrix\n');
k = 1;
for j = 1:n
  fprintf('%8.3f',vec(k:(k+j-1)));
  fprintf('\n');
  k = k + j;
end


g01dc example results

Sample size =    6
Variance-covariance matrix
   0.416
   0.209   0.280
   0.139   0.189   0.246
   0.102   0.140   0.183   0.246
   0.077   0.106   0.140   0.189   0.280
   0.056   0.077   0.102   0.139   0.209   0.416

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