NAG CL Interface
g13dbc (multi_​autocorr_​part)

1 Purpose

g13dbc calculates the multivariate partial autocorrelation function of a multivariate time series.

2 Specification

#include <nag.h>
void  g13dbc (const double c0[], const double c[], Integer ns, Integer nl, Integer nk, double p[], double *v0, double v[], double d[], double db[], double w[], double wb[], Integer *nvp, NagError *fail)
The function may be called by the names: g13dbc, nag_tsa_multi_autocorr_part or nag_tsa_multi_auto_corr_part.

3 Description

The input is a set of lagged autocovariance matrices C0,C1,C2,,Cm. These will generally be sample values such as are obtained from a multivariate time series using g13dmc.
The main calculation is the recursive determination of the coefficients in the finite lag (forward) prediction equation
xt = Φl,1 xt-1 ++ Φl,l xt-l + el,t  
and the associated backward prediction equation
xt-l- 1=Ψl,1xt-l++Ψl,lxt- 1+fl,t  
together with the covariance matrices Dl of el,t and Gl of fl,t.
The recursive cycle, by which the order of the prediction equation is extended from l to l+1, is to calculate
Ml+1 = Cl+1T - Φ l,1 ClT -- Φl,l C1T (1)
then Φ l+1,l+1 = Ml+1 Dl-1 , Ψ l+1,l+1 = MT l+1 Gl-1
from which
Φl+1,j=Φl,j-Φl+1,l+1Ψl,l+1-j,   j=1,2,,l (2)
and
Ψl+1,j=Ψl,j-Ψl+1,l+1Φl,l+1-j,  j=1,2,,l. (3)
Finally, Dl+1=Dl-Ml+1ΦTl+1,l+1 and Gl+1=Gl-MTl+1ΨTl+1,l+1.
(Here T denotes the transpose of a matrix.)
The cycle is initialized by taking (for l=0)
D0=G0=C0.  
In the step from l=0 to 1, the above equations contain redundant terms and simplify. Thus (1) becomes M1=CT1 and neither (2) or (3) are needed.
Quantities useful in assessing the effectiveness of the prediction equation are generalized variance ratios
vl = detDl / detC0 ,   l=1,2,  
and multiple squared partial autocorrelations
pl2 = 1 - vl / v l-1 .  

4 References

Akaike H (1971) Autoregressive model fitting for control Ann. Inst. Statist. Math. 23 163–180
Whittle P (1963) On the fitting of multivariate autoregressions and the approximate canonical factorization of a spectral density matrix Biometrika 50 129–134

5 Arguments

1: c0[ns×ns] const double Input
On entry: contains the zero lag cross-covariances between the ns series as returned by g13dmc. (c0 is assumed to be symmetric, upper triangle only is used.)
2: c[ns×ns×nl] const double Input
On entry: the k cross-covariances as returned by g13dmc.
3: ns Integer Input
On entry: k, the number of time series whose cross-covariances are supplied in c and c0.
Constraint: ns1.
4: nl Integer Input
On entry: m, the maximum lag for which cross-covariances are supplied in c.
Constraint: nl1.
5: nk Integer Input
On entry: the number of lags to which partial auto-correlations are to be calculated.
Constraint: 1nknl.
6: p[nk] double Output
On exit: the multiple squared partial autocorrelations from lags 1 to nvp; that is, p[l-1] contains pl2, for l=1,2,,nvp. For lags nvp+1 to nk the elements of p are set to zero.
7: v0 double * Output
On exit: the lag zero prediction error variance (equal to the determinant of c0).
8: v[nk] double Output
On exit: the prediction error variance ratios from lags 1 to nvp; that is, v[l-1] contains vl, for l=1,2,,nvp. For lags nvp+1 to nk the elements of v are set to zero.
9: d[dim] double Output
On exit: the prediction error variance matrices at lags 1 to nvp, d[l-1k2+j-1k+i-1] contains the i,jth prediction error covariance of series i and series j at lag l. Series j leads series i.
10: db[ns×ns] double Output
On exit: the backward prediction error variance matrix at lag nvp, db[j-1k+i-1] contains the backward prediction error covariance of series i and series j.
11: w[dim] double Output
On exit: the prediction coefficient matrices at lags 1 to nvp, w[l-1k2+j-1k+i-1] contains the jth prediction coefficient of series i at lag l (i.e., the i,jth element of ΦL,l).
12: wb[dim] double Output
On exit: the backward prediction coefficient matrices at lags 1 to nvp, wb[l-1k2+j-1+i-1] contains the jth backward prediction coefficient of series i at lag l (i.e., the i,jth element of ΨL,l).
13: nvp Integer * Output
On exit: the maximum lag, L, for which calculation of p, v, d, db, w and wb was successful. If the function completes successfully nvp will equal nk.
14: fail NagError * Input/Output
The NAG error argument (see Section 7 in the Introduction to the NAG Library CL Interface).

6 Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
See Section 3.1.2 in the Introduction to the NAG Library CL Interface for further information.
NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_INT
On entry, nk=value.
Constraint: nk1.
On entry, nl=value.
Constraint: nl1.
On entry, ns=value.
Constraint: ns1.
NE_INT_2
On entry, nk=value and nl=value.
Constraint: nknl.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
See Section 7.5 in the Introduction to the NAG Library CL Interface for further information.
NE_NO_LICENCE
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library CL Interface for further information.
NE_POS_DEF
c0 is not positive definite. The arguments v0, v, p, d, db, w, wb and nvp are set to zero.
For nvp=value, at lag k=nvp+1, Dk was found not to be positive definite.
Up to lag k-1, arguments v0, v, p, d, w and wb contain the values calculated so far. From lag k they contain zero. The argument db contains the backward prediction coefficients for lag k-1.

7 Accuracy

The conditioning of the problem depends on the prediction error variance ratios. Very small values of these may indicate loss of accuracy in the computations.

8 Parallelism and Performance

g13dbc is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
g13dbc 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 function. Please also consult the Users' Note for your implementation for any additional implementation-specific information.

9 Further Comments

The time taken by g13dbc is roughly proportional to nk2×ns3.
If sample autocorrelation matrices are used as input, then the output will be relevant to the original series scaled by their standard deviations. If these autocorrelation matrices are produced by g13dmc, you must replace the diagonal elements of C0 (otherwise used to hold the series variances) by 1.

10 Example

This example reads the autocovariance matrices for four series from lag 0 to 5. It calls g13dbc to calculate the multivariate partial autocorrelation function and other related matrices of statistics up to lag 3. It prints the results.

10.1 Program Text

Program Text (g13dbce.c)

10.2 Program Data

Program Data (g13dbce.d)

10.3 Program Results

Program Results (g13dbce.r)