g13 Chapter Contents
g13 Chapter Introduction
NAG Library Manual

# NAG Library Function Documentnag_tsa_varma_update (g13dkc)

## 1  Purpose

nag_tsa_varma_update (g13dkc) accepts a sequence of new observations in a multivariate time series and updates both the forecasts and the standard deviations of the forecast errors. A call to nag_tsa_varma_forecast (g13djc) must be made prior to calling this function in order to calculate the elements of a reference vector together with a set of forecasts and their standard errors. On a successful exit from nag_tsa_varma_update (g13dkc) the reference vector is updated so that should future series values become available these forecasts may be updated by recalling nag_tsa_varma_update (g13dkc).

## 2  Specification

 #include #include
 void nag_tsa_varma_update (Integer k, Integer lmax, Integer m, Integer *mlast, const double z[], Integer kmax, double ref[], Integer lref, double v[], double predz[], double sefz[], NagError *fail)

## 3  Description

Let ${Z}_{\mathit{t}}={\left({z}_{1\mathit{t}},{z}_{2\mathit{t}},\dots ,{z}_{k\mathit{t}}\right)}^{\mathrm{T}}$, for $\mathit{t}=1,2,\dots ,n$, denote a $k$-dimensional time series for which forecasts of ${\stackrel{^}{Z}}_{n+1},{\stackrel{^}{Z}}_{n+2},\dots ,{\stackrel{^}{Z}}_{n+{l}_{\mathrm{max}}}$ have been computed using nag_tsa_varma_forecast (g13djc). Given $m$ further observations ${Z}_{n+1},{Z}_{n+2},\dots ,{Z}_{n+m}$, where $m<{l}_{\mathrm{max}}$, nag_tsa_varma_update (g13dkc) updates the forecasts of ${Z}_{n+m+1},{Z}_{n+m+2},\dots ,{Z}_{n+{l}_{\mathrm{max}}}$ and their corresponding standard errors.
nag_tsa_varma_update (g13dkc) uses a multivariate version of the procedure described in Box and Jenkins (1976). The forecasts are updated using the $\psi$ weights, computed in nag_tsa_varma_forecast (g13djc). If ${Z}_{t}^{*}$ denotes the transformed value of ${Z}_{t}$ and ${\stackrel{^}{Z}}_{t}^{*}\left(l\right)$ denotes the forecast of ${Z}_{t+l}^{*}$ from time $t$ with a lead of $l$ (that is the forecast of ${Z}_{t+l}^{*}$ given observations ${Z}_{t}^{*},{Z}_{t-1}^{*},\dots \text{}$), then
 $Z^t+1*l=τ+ψlεt+1+ψl+1εt+ψl+2εt-1+⋯$
and
 $Z^t*l+ 1=τ+ψl+ 1εt+ψl+ 2εt- 1+⋯$
where $\tau$ is a constant vector of length $k$ involving the differencing parameters and the mean vector $\mu$. By subtraction we obtain
 $Z^t+1*l=Z^t*l+1+ψlεt+1.$
Estimates of the residuals corresponding to the new observations are also computed as ${\epsilon }_{n+\mathit{l}}={Z}_{n+\mathit{l}}^{*}-{\stackrel{^}{Z}}_{n}^{*}\left(\mathit{l}\right)$, for $\mathit{l}=1,2,\dots ,m$. These may be of use in checking that the new observations conform to the previously fitted model.
On a successful exit, the reference array is updated so that nag_tsa_varma_update (g13dkc) may be called again should future series values become available, see Section 9.
When a transformation has been used the forecasts and their standard errors are suitably modified to give results in terms of the original series ${Z}_{t}$; see Granger and Newbold (1976).

## 4  References

Box G E P and Jenkins G M (1976) Time Series Analysis: Forecasting and Control (Revised Edition) Holden–Day
Granger C W J and Newbold P (1976) Forecasting transformed series J. Roy. Statist. Soc. Ser. B 38 189–203
Wei W W S (1990) Time Series Analysis: Univariate and Multivariate Methods Addison–Wesley

## 5  Arguments

The quantities klmaxkmaxref and lref from nag_tsa_varma_forecast (g13djc) are suitable for input to nag_tsa_varma_update (g13dkc).
1:     kIntegerInput
On entry: $k$, the dimension of the multivariate time series.
Constraint: ${\mathbf{k}}\ge 1$.
2:     lmaxIntegerInput
On entry: the number, ${l}_{\mathrm{max}}$, of forecasts requested in the call to nag_tsa_varma_forecast (g13djc).
Constraint: ${\mathbf{lmax}}\ge 2$.
3:     mIntegerInput
On entry: $m$, the number of new observations available since the last call to either nag_tsa_varma_forecast (g13djc) or nag_tsa_varma_update (g13dkc). The number of new observations since the last call to nag_tsa_varma_forecast (g13djc) is then ${\mathbf{m}}+{\mathbf{mlast}}$.
Constraint: $0<{\mathbf{m}}<{\mathbf{lmax}}-{\mathbf{mlast}}$.
4:     mlastInteger *Input/Output
On entry: on the first call to nag_tsa_varma_update (g13dkc), since calling
nag_tsa_varma_forecast (g13djc), mlast must be set to $0$ to indicate that no new observations have yet been used to update the forecasts; on subsequent calls mlast must contain the value of mlast as output on the previous call to nag_tsa_varma_update (g13dkc).
On exit: is incremented by $m$ to indicate that ${\mathbf{mlast}}+{\mathbf{m}}$ observations have now been used to update the forecasts since the last call to nag_tsa_varma_forecast (g13djc).
mlast must not be changed between calls to nag_tsa_varma_update (g13dkc), unless a call to nag_tsa_varma_forecast (g13djc) has been made between the calls in which case mlast should be reset to $0$.
Constraint: $0\le {\mathbf{mlast}}<{\mathbf{lmax}}-{\mathbf{m}}$.
5:     z[${\mathbf{kmax}}×{\mathbf{m}}$]const doubleInput
On entry: ${\mathbf{z}}\left[{\mathbf{kmax}}×\left(\mathit{j}-1\right)+\mathit{i}-1\right]$ must contain the value of ${z}_{\mathit{i},n+{\mathbf{mlast}}+\mathit{j}}$, for $\mathit{i}=1,2,\dots ,k$ and $\mathit{j}=1,2,\dots ,m$, and where $n$ is the number of observations in the time series in the last call made to nag_tsa_varma_forecast (g13djc).
Constraint: if the transformation defined in tr in nag_tsa_varma_forecast (g13djc) for the $\mathit{i}$th series is the log transformation, then ${\mathbf{z}}\left[{\mathbf{kmax}}×\left(\mathit{j}-1\right)+\mathit{i}-1\right]>0.0$, and if it is the square-root transformation, then ${\mathbf{z}}\left[{\mathbf{kmax}}×\left(\mathit{j}-1\right)+\mathit{i}-1\right]\ge 0.0$, for $\mathit{j}=1,2,\dots ,m$ and $\mathit{i}=1,2,\dots ,k$.
6:     kmaxIntegerInput
On entry: the first dimension of the arrays Z, PREDZ, SEFZ and V.
Constraint: ${\mathbf{kmax}}\ge {\mathbf{k}}$.
7:     ref[lref]doubleInput/Output
On entry: must contain the first $\left({\mathbf{lmax}}-1\right)×{\mathbf{k}}×{\mathbf{k}}+2×{\mathbf{k}}×{\mathbf{lmax}}+{\mathbf{k}}$ elements of the reference vector as returned on a successful exit from nag_tsa_varma_forecast (g13djc) (or a previous call to nag_tsa_varma_update (g13dkc)).
On exit: the elements of ref are updated. The first $\left({\mathbf{lmax}}-1\right)×{\mathbf{k}}×{\mathbf{k}}$ elements store the $\psi$ weights ${\psi }_{1},{\psi }_{2},\dots ,{\psi }_{{l}_{\mathrm{max}}-1}$. The next ${\mathbf{k}}×{\mathbf{lmax}}$ elements contain the forecasts of the transformed series and the next ${\mathbf{k}}×{\mathbf{lmax}}$ elements contain the variances of the forecasts of the transformed variables; see nag_tsa_varma_forecast (g13djc). The last k elements are not updated.
8:     lrefIntegerInput
On entry: the dimension of the array ref.
Constraint: ${\mathbf{lref}}\ge \left({\mathbf{lmax}}-1\right)×{\mathbf{k}}×{\mathbf{k}}+2×{\mathbf{k}}×{\mathbf{lmax}}+{\mathbf{k}}$.
9:     v[${\mathbf{kmax}}×{\mathbf{m}}$]doubleOutput
On exit: ${\mathbf{v}}\left[{\mathbf{kmax}}×\left(\mathit{j}-1\right)+\mathit{i}-1\right]$ contains an estimate of the $\mathit{i}$th component of ${\epsilon }_{n+{\mathbf{mlast}}+\mathit{j}}$, for $\mathit{i}=1,2,\dots ,k$ and $\mathit{j}=1,2,\dots ,m$.
10:   predz[${\mathbf{kmax}}×{\mathbf{lmax}}$]doubleInput/Output
On entry: nonupdated values are kept intact.
On exit: ${\mathbf{predz}}\left[{\mathbf{kmax}}×\left(\mathit{j}-1\right)+\mathit{i}-1\right]$ contains the updated forecast of ${z}_{\mathit{i},n+\mathit{j}}$, for $\mathit{i}=1,2,\dots ,k$ and $\mathit{j}={\mathbf{mlast}}+{\mathbf{m}}+1,\dots ,{l}_{\mathrm{max}}$.
The columns of predz corresponding to the new observations since the last call to either nag_tsa_varma_forecast (g13djc) or nag_tsa_varma_update (g13dkc) are set equal to the corresponding columns of z.
11:   sefz[${\mathbf{kmax}}×{\mathbf{lmax}}$]doubleInput/Output
On entry: nonupdated values are kept intact.
On exit: ${\mathbf{sefz}}\left[{\mathbf{kmax}}×\left(\mathit{j}-1\right)+\mathit{i}-1\right]$ contains an estimate of the standard error of the corresponding element of predz, for $\mathit{i}=1,2,\dots ,k$ and $\mathit{j}={\mathbf{mlast}}+{\mathbf{m}}+1,\dots ,{l}_{\mathrm{max}}$.
The columns of sefz corresponding to the new observations since the last call to either nag_tsa_varma_forecast (g13djc) or nag_tsa_varma_update (g13dkc) are set equal to zero.
12:   failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
On entry, argument $⟨\mathit{\text{value}}⟩$ had an illegal value.
NE_INT
On entry, ${\mathbf{k}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{k}}\ge 1$.
On entry, ${\mathbf{lmax}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{lmax}}\ge 2$.
On entry, lref is too small: ${\mathbf{lref}}=⟨\mathit{\text{value}}⟩$ but must be at least $⟨\mathit{\text{value}}⟩$.
On entry, ${\mathbf{m}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{m}}>0$.
On entry, ${\mathbf{mlast}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{mlast}}\ge 0$.
NE_INT_2
On entry, ${\mathbf{kmax}}=⟨\mathit{\text{value}}⟩$ and ${\mathbf{k}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{kmax}}\ge {\mathbf{k}}$.
NE_INT_3
On entry, ${\mathbf{m}}=⟨\mathit{\text{value}}⟩$, ${\mathbf{lmax}}=⟨\mathit{\text{value}}⟩$ and ${\mathbf{mlast}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{m}}<{\mathbf{lmax}}-{\mathbf{mlast}}$.
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.
NE_REF_VEC
On entry, some of the elements of the array ref have been corrupted.
NE_RESULT_OVERFLOW
The updated forecasts will overflow if computed.
NE_TRANSFORMATION
On entry, one (or more) of the transformations requested is invalid.

## 7  Accuracy

The matrix computations are believed to be stable.

## 8  Parallelism and Performance

nag_tsa_varma_update (g13dkc) is not threaded by NAG in any implementation.
nag_tsa_varma_update (g13dkc) 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.

If a further ${m}^{*}$ observations, ${Z}_{n+{\mathbf{mlast}}+1},{Z}_{n+{\mathbf{mlast}}+2},\dots ,{Z}_{n+{\mathbf{mlast}}+{m}^{*}}$, become available, then forecasts of ${Z}_{n+{\mathbf{mlast}}+{m}^{*}+1},{Z}_{n+{\mathbf{mlast}}+{m}^{*}+2},\dots ,{Z}_{n+{l}_{\mathrm{max}}}$ may be updated by recalling nag_tsa_varma_update (g13dkc) with ${\mathbf{m}}={m}^{*}$. Note that m and the contents of the array z are the only quantities which need updating; mlast is updated on exit from the previous call. On a successful exit, v contains estimates of ${\epsilon }_{n+{\mathbf{mlast}}+1},{\epsilon }_{n+{\mathbf{mlast}}+2},\dots ,{\epsilon }_{n+{\mathbf{mlast}}+{m}^{*}}$; columns ${\mathbf{mlast}}+1,{\mathbf{mlast}}+2,\dots ,{\mathbf{mlast}}+{m}^{*}$ of predz contain the new observed values ${Z}_{n+{\mathbf{mlast}}+1},{Z}_{n+{\mathbf{mlast}}+2},\dots ,{Z}_{n+{\mathbf{mlast}}+{m}^{*}}$ and columns ${\mathbf{mlast}}+1,{\mathbf{mlast}}+2,\dots ,{\mathbf{mlast}}+{m}^{*}$ of sefz are set to zero.

## 10  Example

This example shows how to update the forecasts of two series each of length $48$. No transformation has been used and no differencing applied to either of the series. nag_tsa_varma_estimate (g13ddc) is first called to fit an AR(1) model to the series. $\mu$ is to be estimated and ${\varphi }_{1}\left(2,1\right)$ constrained to be zero. A call to nag_tsa_varma_forecast (g13djc) is then made in order to compute forecasts of the next five series values. After one new observation becomes available the four forecasts are updated. A further observation becomes available and the three forecasts are updated.

### 10.1  Program Text

Program Text (g13dkce.c)

### 10.2  Program Data

Program Data (g13dkce.d)

### 10.3  Program Results

Program Results (g13dkce.r)