NAG Library Routine Document
G02BYF
1 Purpose
G02BYF computes a partial correlation/variancecovariance matrix from a correlation or variancecovariance matrix computed by
G02BXF.
2 Specification
INTEGER 
M, NY, NX, ISZ(M), LDR, LDP, IFAIL 
REAL (KIND=nag_wp) 
R(LDR,M), P(LDP,NY), WK(NY*NX+NX*(NX+1)/2) 

3 Description
Partial correlation can be used to explore the association between pairs of random variables in the presence of other variables. For three variables,
${y}_{1}$,
${y}_{2}$ and
${x}_{3}$, the partial correlation coefficient between
${y}_{1}$ and
${y}_{2}$ given
${x}_{3}$ is computed as:
where
${r}_{ij}$ is the productmoment correlation coefficient between variables with subscripts
$i$ and
$j$. The partial correlation coefficient is a measure of the linear association between
${y}_{1}$ and
${y}_{2}$ having eliminated the effect due to both
${y}_{1}$ and
${y}_{2}$ being linearly associated with
${x}_{3}$. That is, it is a measure of association between
${y}_{1}$ and
${y}_{2}$ conditional upon fixed values of
${x}_{3}$. Like the full correlation coefficients the partial correlation coefficient takes a value in the range (
$1,1$) with the value
$0$ indicating no association.
In general, let a set of variables be partitioned into two groups
$Y$ and
$X$ with
${n}_{y}$ variables in
$Y$ and
${n}_{x}$ variables in
$X$ and let the variancecovariance matrix of all
${n}_{y}+{n}_{x}$ variables be partitioned into,
The variancecovariance of
$Y$ conditional on fixed values of the
$X$ variables is given by:
The partial correlation matrix is then computed by standardizing
${\Sigma}_{y\mid x}$,
To test the hypothesis that a partial correlation is zero under the assumption that the data has an approximately Normal distribution a test similar to the test for the full correlation coefficient can be used. If
$r$ is the computed partial correlation coefficient then the appropriate
$t$ statistic is
which has approximately a Student's
$t$distribution with
$n{n}_{x}2$ degrees of freedom, where
$n$ is the number of observations from which the full correlation coefficients were computed.
4 References
Krzanowski W J (1990) Principles of Multivariate Analysis Oxford University Press
Morrison D F (1967) Multivariate Statistical Methods McGraw–Hill
Osborn J F (1979) Statistical Exercises in Medical Research Blackwell
Snedecor G W and Cochran W G (1967) Statistical Methods Iowa State University Press
5 Arguments
 1: $\mathrm{M}$ – INTEGERInput

On entry: the number of variables in the variancecovariance/correlation matrix given in
R.
Constraint:
${\mathbf{M}}\ge 3$.
 2: $\mathrm{NY}$ – INTEGERInput

On entry: the number of $Y$ variables, ${n}_{y}$, for which partial correlation coefficients are to be computed.
Constraint:
${\mathbf{NY}}\ge 2$.
 3: $\mathrm{NX}$ – INTEGERInput

On entry: the number of $X$ variables, ${n}_{x}$, which are to be considered as fixed.
Constraints:
 ${\mathbf{NX}}\ge 1$;
 ${\mathbf{NY}}+{\mathbf{NX}}\le {\mathbf{M}}$.
 4: $\mathrm{ISZ}\left({\mathbf{M}}\right)$ – INTEGER arrayInput

On entry: indicates which variables belong to set
$X$ and
$Y$.
 ${\mathbf{ISZ}}\left(i\right)<0$
 The
$\mathit{i}$th variable is a $Y$ variable, for $\mathit{i}=1,2,\dots ,{\mathbf{M}}$.
 ${\mathbf{ISZ}}\left(i\right)>0$
 The $i$th variable is a $X$ variable.
 ${\mathbf{ISZ}}\left(i\right)=0$
 The $i$th variable is not included in the computations.
Constraints:
 exactly NY elements of ISZ must be $\text{}<0$;
 exactly NX elements of ISZ must be $\text{}>0$.
 5: $\mathrm{R}\left({\mathbf{LDR}},{\mathbf{M}}\right)$ – REAL (KIND=nag_wp) arrayInput

On entry: the variancecovariance or correlation matrix for the
M variables as given by
G02BXF. Only the upper triangle need be given.
Note: the matrix must be a full rank variancecovariance or correlation matrix and so be positive definite. This condition is not directly checked by the routine.
 6: $\mathrm{LDR}$ – INTEGERInput

On entry: the first dimension of the array
R as declared in the (sub)program from which G02BYF is called.
Constraint:
${\mathbf{LDR}}\ge {\mathbf{M}}$.
 7: $\mathrm{P}\left({\mathbf{LDP}},{\mathbf{NY}}\right)$ – REAL (KIND=nag_wp) arrayOutput

On exit: the strict upper triangle of
P contains the strict upper triangular part of the
${n}_{y}$ by
${n}_{y}$ partial correlation matrix. The lower triangle contains the lower triangle of the
${n}_{y}$ by
${n}_{y}$ partial variancecovariance matrix if the matrix given in
R is a variancecovariance matrix. If the matrix given in
R is a partial correlation matrix then the variancecovariance matrix is for standardized variables.
 8: $\mathrm{LDP}$ – INTEGERInput

On entry: the first dimension of the array
P as declared in the (sub)program from which G02BYF is called.
Constraint:
${\mathbf{LDP}}\ge {\mathbf{NY}}$.
 9: $\mathrm{WK}\left({\mathbf{NY}}\times {\mathbf{NX}}+{\mathbf{NX}}\times \left({\mathbf{NX}}+1\right)/2\right)$ – REAL (KIND=nag_wp) arrayWorkspace

 10: $\mathrm{IFAIL}$ – INTEGERInput/Output

On entry:
IFAIL must be set to
$0$,
$1\text{ or}1$. If you are unfamiliar with this argument you should refer to
Section 3.4 in How to Use the NAG Library and its Documentation for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value
$1\text{ or}1$ is recommended. If the output of error messages is undesirable, then the value
$1$ is recommended. Otherwise, if you are not familiar with this argument, the recommended value is
$0$.
When the value $\mathbf{1}\text{ or}\mathbf{1}$ is used it is essential to test the value of IFAIL on exit.
On exit:
${\mathbf{IFAIL}}={\mathbf{0}}$ unless the routine detects an error or a warning has been flagged (see
Section 6).
6 Error Indicators and Warnings
If on entry
${\mathbf{IFAIL}}=0$ or
$1$, explanatory error messages are output on the current error message unit (as defined by
X04AAF).
Errors or warnings detected by the routine:
 ${\mathbf{IFAIL}}=1$

On entry,  ${\mathbf{M}}<3$, 
or  ${\mathbf{NY}}<2$, 
or  ${\mathbf{NX}}<1$, 
or  ${\mathbf{NY}}+{\mathbf{NX}}>{\mathbf{M}}$, 
or  ${\mathbf{LDR}}<{\mathbf{M}}$, 
or  ${\mathbf{LDP}}<{\mathbf{NY}}$. 
 ${\mathbf{IFAIL}}=2$

On entry,  there are not exactly NY elements of ${\mathbf{ISZ}}<0$, 
or  there are not exactly NX elements of ${\mathbf{ISZ}}>0$. 
 ${\mathbf{IFAIL}}=3$

On entry, the variancecovariance/correlation matrix of the $X$ variables, ${\Sigma}_{xx}$, is not of full rank. Try removing some of the $X$ variables by setting the appropriate element of ${\mathbf{ISZ}}=0$.
 ${\mathbf{IFAIL}}=4$

Either a diagonal element of the partial variancecovariance matrix,
${\Sigma}_{y\mid x}$, is zero and/or a computed partial correlation coefficient is greater than one. Both indicate that the matrix input in
R was not positive definite.
 ${\mathbf{IFAIL}}=99$
An unexpected error has been triggered by this routine. Please
contact
NAG.
See
Section 3.9 in How to Use the NAG Library and its Documentation for further information.
 ${\mathbf{IFAIL}}=399$
Your licence key may have expired or may not have been installed correctly.
See
Section 3.8 in How to Use the NAG Library and its Documentation for further information.
 ${\mathbf{IFAIL}}=999$
Dynamic memory allocation failed.
See
Section 3.7 in How to Use the NAG Library and its Documentation for further information.
7 Accuracy
G02BYF computes the partial variancecovariance matrix,
${\Sigma}_{y\mid x}$, by computing the Cholesky factorization of
${\Sigma}_{xx}$. If
${\Sigma}_{xx}$ is not of full rank the computation will fail. For a statement on the accuracy of the Cholesky factorization see
F07GDF (DPPTRF).
8 Parallelism and Performance
G02BYF is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
G02BYF makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the
X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this routine. Please also consult the
Users' Note for your implementation for any additional implementationspecific information.
Models that represent the linear associations given by partial correlations can be fitted using the multiple regression routine
G02DAF.
10 Example
Data, given by
Osborn (1979), on the number of deaths, smoke (
$\mathrm{mg}/{\mathrm{m}}^{3}$) and sulphur dioxide (parts/million) during an intense period of fog is input. The correlations are computed using
G02BXF and the partial correlation between deaths and smoke given sulphur dioxide is computed using G02BYF. Both correlation matrices are printed using the routine
X04CAF.
10.1 Program Text
Program Text (g02byfe.f90)
10.2 Program Data
Program Data (g02byfe.d)
10.3 Program Results
Program Results (g02byfe.r)