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

## 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 ${m}_{i}$ be the expected value of the $i$th largest order statistic, then:
 (a) for any $i=1,2,\dots ,n$, $\sum _{j=1}^{n}{V}_{ij}=1$ (b) ${V}_{12}={V}_{11}+{m}_{n}^{2}-{m}_{n}{m}_{n-1}-1$ (c) the trace of $V$ is $tr\left(V\right)=n-\sum _{i=1}^{n}{m}_{i}^{2}$ (d) ${V}_{ij}={V}_{ji}={V}_{rs}={V}_{sr}$ where $r=n+1-i$, $s=n+1-j$ and $i,j=1,2,\dots ,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:     $\mathrm{n}$int64int32nag_int scalar
$n$, the sample size.
Constraint: ${\mathbf{n}}>0$.
2:     $\mathrm{exp1}$ – double scalar
The expected value of the largest Normal order statistic, ${m}_{n}$, from a sample of size $n$.
3:     $\mathrm{exp2}$ – double scalar
The expected value of the second largest Normal order statistic, ${m}_{n-1}$, from a sample of size $n$.
4:     $\mathrm{sumssq}$ – double scalar
The sum of squares of the expected values of the Normal order statistics from a sample of size $n$.

None.

### Output Parameters

1:     $\mathrm{vec}\left({\mathbf{n}}×\left({\mathbf{n}}+1\right)/2\right)$ – double array
The upper triangle of the $n$ by $n$ variance-covariance matrix packed by column. Thus element ${V}_{ij}$ is stored in ${\mathbf{vec}}\left(i+j×\left(j-1\right)/2\right)$, for $1\le i\le j\le n$.
2:     $\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}}<1$.
${\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

For $n\le 20$, where comparison with the exact values can be made, the maximum error is less than $0.0001$.

The time taken by nag_stat_normal_scores_var (g01dc) is approximately proportional to ${n}^{2}$.
The arguments ${\mathbf{exp1}}$ ($={m}_{n}$), ${\mathbf{exp2}}$ ($={m}_{n-1}$) and ${\mathbf{sumssq}}$ ($=\sum _{j=1}^{n}{m}_{j}^{2}$) 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
```