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_correg_coeffs_pearson_subset (g02bg)

## Purpose

nag_correg_coeffs_pearson_subset (g02bg) computes means and standard deviations, sums of squares and cross-products of deviations from means, and Pearson product-moment correlation coefficients for selected variables.

## Syntax

[xbar, std, ssp, r, ifail] = g02bg(x, kvar, 'n', n, 'm', m, 'nvars', nvars)
[xbar, std, ssp, r, ifail] = nag_correg_coeffs_pearson_subset(x, kvar, 'n', n, 'm', m, 'nvars', nvars)
Note: the interface to this routine has changed since earlier releases of the toolbox:
Mark 22: n has been made optional
.

## Description

The input data consist of n$n$ observations for each of m$m$ variables, given as an array
 [xij],  i = 1,2, … ,n(n ≥ 2),j = 1,2, … ,m(m ≥ 2), $[xij], i=1,2,…,n(n≥2),j=1,2,…,m(m≥2),$
where xij${x}_{ij}$ is the i$i$th observation on the j$j$th variable, together with the subset of these variables, v1,v2,,vp${v}_{1},{v}_{2},\dots ,{v}_{p}$, for which information is required.
The quantities calculated are:
(a) Means:
 n xj = 1/n ∑ xij,  j = v1,v2, … ,vp. i = 1
$x-j=1n∑i=1nxij, j=v1,v2,…,vp.$
(b) Standard deviations:
 sj = sqrt(1/(n − 1) ∑ i = 1n(xij − xj)2),   j = v1,v2, … ,vp. $sj=1n- 1 ∑i= 1n (xij-x-j) 2, j=v1,v2,…,vp.$
(c) Sums of squares and cross-products of deviations from zero:
 n Sjk = ∑ (xij − xj)(xik − xk),  j,k = v1,v2, … ,vp. i = 1
$Sjk=∑i=1n(xij-x-j)(xik-x-k), j,k=v1,v2,…,vp.$
(d) Pearson product-moment correlation coefficients:
 Rjk = (Sjk)/(sqrt(SjjSkk)),   j,k = v1,v2, … vp. $Rjk=SjkSjjSkk , j,k=v1,v2,…vp.$
If Sjj${S}_{jj}$ or Skk${S}_{kk}$ is zero, Rjk${R}_{jk}$ is set to zero.

None.

## Parameters

### Compulsory Input Parameters

1:     x(ldx,m) – double array
ldx, the first dimension of the array, must satisfy the constraint ldxn$\mathit{ldx}\ge {\mathbf{n}}$.
x(i,j)${\mathbf{x}}\left(\mathit{i},\mathit{j}\right)$ must be set to xij${x}_{\mathit{i}\mathit{j}}$, the value of the i$\mathit{i}$th observation on the j$\mathit{j}$th variable, for i = 1,2,,n$\mathit{i}=1,2,\dots ,n$ and j = 1,2,,m$\mathit{j}=1,2,\dots ,m$.
2:     kvar(nvars) – int64int32nag_int array
nvars, the dimension of the array, must satisfy the constraint 2nvarsm$2\le {\mathbf{nvars}}\le {\mathbf{m}}$.
kvar(j)${\mathbf{kvar}}\left(\mathit{j}\right)$ must be set to the column number in x of the j$\mathit{j}$th variable for which information is required, for j = 1,2,,p$\mathit{j}=1,2,\dots ,p$.
Constraint: 1kvar(j)m$1\le {\mathbf{kvar}}\left(\mathit{j}\right)\le {\mathbf{m}}$, for j = 1,2,,p$\mathit{j}=1,2,\dots ,p$.

### Optional Input Parameters

1:     n – int64int32nag_int scalar
Default: The first dimension of the array x.
n$n$, the number of observations or cases.
Constraint: n2${\mathbf{n}}\ge 2$.
2:     m – int64int32nag_int scalar
Default: The second dimension of the array x.
m$m$, the number of variables.
Constraint: m2${\mathbf{m}}\ge 2$.
3:     nvars – int64int32nag_int scalar
Default: The dimension of the array kvar.
p$p$, the number of variables for which information is required.
Constraint: 2nvarsm$2\le {\mathbf{nvars}}\le {\mathbf{m}}$.

ldx ldssp ldr

### Output Parameters

1:     xbar(nvars) – double array
The mean value, xj${\stackrel{-}{x}}_{\mathit{j}}$, of the variable specified in kvar(j)${\mathbf{kvar}}\left(\mathit{j}\right)$, for j = 1,2,,p$\mathit{j}=1,2,\dots ,p$.
2:     std(nvars) – double array
The standard deviation, sj${s}_{\mathit{j}}$, of the variable specified in kvar(j)${\mathbf{kvar}}\left(\mathit{j}\right)$, for j = 1,2,,p$\mathit{j}=1,2,\dots ,p$.
3:     ssp(ldssp,nvars) – double array
ldsspnvars$\mathit{ldssp}\ge {\mathbf{nvars}}$.
ssp(j,k)${\mathbf{ssp}}\left(\mathit{j},\mathit{k}\right)$ is the cross-product of deviations, Sjk${S}_{\mathit{j}\mathit{k}}$, for the variables specified in kvar(j)${\mathbf{kvar}}\left(\mathit{j}\right)$ and kvar(k)${\mathbf{kvar}}\left(\mathit{k}\right)$, for j = 1,2,,p$\mathit{j}=1,2,\dots ,p$ and k = 1,2,,p$\mathit{k}=1,2,\dots ,p$.
4:     r(ldr,nvars) – double array
ldrnvars$\mathit{ldr}\ge {\mathbf{nvars}}$.
r(j,k)${\mathbf{r}}\left(\mathit{j},\mathit{k}\right)$ is the product-moment correlation coefficient, Rjk${R}_{\mathit{j}\mathit{k}}$, between the variables specified in kvar(j)${\mathbf{kvar}}\left(\mathit{j}\right)$ and kvar(k)${\mathbf{kvar}}\left(\mathit{k}\right)$, for j = 1,2,,p$\mathit{j}=1,2,\dots ,p$ and k = 1,2,,p$\mathit{k}=1,2,\dots ,p$.
5:     ifail – int64int32nag_int scalar
${\mathrm{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:
ifail = 1${\mathbf{ifail}}=1$
 On entry, n < 2${\mathbf{n}}<2$.
ifail = 2${\mathbf{ifail}}=2$
 On entry, nvars < 2${\mathbf{nvars}}<2$, or ${\mathbf{nvars}}>{\mathbf{m}}$.
ifail = 3${\mathbf{ifail}}=3$
 On entry, ldx < n$\mathit{ldx}<{\mathbf{n}}$, or ldssp < nvars$\mathit{ldssp}<{\mathbf{nvars}}$, or ldr < nvars$\mathit{ldr}<{\mathbf{nvars}}$.
ifail = 4${\mathbf{ifail}}=4$
 On entry, kvar(j) < 1${\mathbf{kvar}}\left(j\right)<1$, or kvar(j) > m${\mathbf{kvar}}\left(j\right)>{\mathbf{m}}$ for some j = 1,2, … ,nvars$j=1,2,\dots ,{\mathbf{nvars}}$.

## Accuracy

nag_correg_coeffs_pearson_subset (g02bg) does not use additional precision arithmetic for the accumulation of scalar products, so there may be a loss of significant figures for large n$n$.

The time taken by nag_correg_coeffs_pearson_subset (g02bg) depends on n$n$ and p$p$.
The function uses a two pass algorithm.

## Example

```function nag_correg_coeffs_pearson_subset_example
x = [3, 3, 1, 2;
6, 4, -1, 4;
9, 0, 5, 9;
12, 2, 0, 0;
-1, 5, 4, 12];
kvar = [int64(4);1;2];
[xbar, std, ssp, r, ifail] = nag_correg_coeffs_pearson_subset(x, kvar)
```
```

xbar =

5.4000
5.8000
2.8000

std =

4.9800
5.0695
1.9235

ssp =

99.2000  -57.6000    6.4000
-57.6000  102.8000  -29.2000
6.4000  -29.2000   14.8000

r =

1.0000   -0.5704    0.1670
-0.5704    1.0000   -0.7486
0.1670   -0.7486    1.0000

ifail =

0

```
```function g02bg_example
x = [3, 3, 1, 2;
6, 4, -1, 4;
9, 0, 5, 9;
12, 2, 0, 0;
-1, 5, 4, 12];
kvar = [int64(4);1;2];
[xbar, std, ssp, r, ifail] = g02bg(x, kvar)
```
```

xbar =

5.4000
5.8000
2.8000

std =

4.9800
5.0695
1.9235

ssp =

99.2000  -57.6000    6.4000
-57.6000  102.8000  -29.2000
6.4000  -29.2000   14.8000

r =

1.0000   -0.5704    0.1670
-0.5704    1.0000   -0.7486
0.1670   -0.7486    1.0000

ifail =

0

```