g13dj computes forecasts of a multivariate time series. It is assumed that a vector ARMA model has already been fitted to the appropriately differenced/transformed time series using g13dd. The standard deviations of the forecast errors are also returned. A reference vector is set up so that, should future series values become available, the forecasts and their standard errors may be updated by calling g13dk.

Syntax

C#
```public static void g13dj(
int k,
int n,
double[,] z,
string[] tr,
int[] id,
double[,] delta,
int ip,
int iq,
string mean,
double[] par,
double[,] qq,
double[,] v,
int lmax,
double[,] predz,
double[,] sefz,
double[] dnref,
out int ifail
)```
Visual Basic
```Public Shared Sub g13dj ( _
k As Integer, _
n As Integer, _
z As Double(,), _
tr As String(), _
id As Integer(), _
delta As Double(,), _
ip As Integer, _
iq As Integer, _
mean As String, _
par As Double(), _
qq As Double(,), _
v As Double(,), _
lmax As Integer, _
predz As Double(,), _
sefz As Double(,), _
dnref As Double(), _
<OutAttribute> ByRef ifail As Integer _
)```
Visual C++
```public:
static void g13dj(
int k,
int n,
array<double,2>^ z,
array<String^>^ tr,
array<int>^ id,
array<double,2>^ delta,
int ip,
int iq,
String^ mean,
array<double>^ par,
array<double,2>^ qq,
array<double,2>^ v,
int lmax,
array<double,2>^ predz,
array<double,2>^ sefz,
array<double>^ dnref,
[OutAttribute] int% ifail
)```
F#
```static member g13dj :
k : int *
n : int *
z : float[,] *
tr : string[] *
id : int[] *
delta : float[,] *
ip : int *
iq : int *
mean : string *
par : float[] *
qq : float[,] *
v : float[,] *
lmax : int *
predz : float[,] *
sefz : float[,] *
dnref : float[] *
ifail : int byref -> unit
```

Parameters

k
Type: System..::..Int32
On entry: $k$, the dimension of the multivariate time series.
Constraint: ${\mathbf{k}}\ge 1$.
n
Type: System..::..Int32
On entry: $n$, the number of observations in the series, ${Z}_{t}$, prior to differencing.
Constraint: ${\mathbf{n}}\ge 3$.
The total number of observations must exceed the total number of parameters in the model; that is
• if ${\mathbf{mean}}=\text{"Z"}$, ${\mathbf{n}}×{\mathbf{k}}>\left({\mathbf{ip}}+{\mathbf{iq}}\right)×{\mathbf{k}}×{\mathbf{k}}+{\mathbf{k}}×\left({\mathbf{k}}+1\right)/2$;
• if ${\mathbf{mean}}=\text{"M"}$, ${\mathbf{n}}×{\mathbf{k}}>\left({\mathbf{ip}}+{\mathbf{iq}}\right)×{\mathbf{k}}×{\mathbf{k}}+{\mathbf{k}}+{\mathbf{k}}×\left({\mathbf{k}}+1\right)/2$,
(see the parameters ip, iq and mean).
z
Type: array<System..::..Double,2>[,](,)[,][,]
An array of size [dim1, n]
Note: dim1 must satisfy the constraint: $\mathrm{dim1}\ge {\mathbf{k}}$
On entry: ${\mathbf{z}}\left[\mathit{i},\mathit{t}\right]$ must contain, ${z}_{\mathit{i}\mathit{t}}$, the $\mathit{i}$th component of ${Z}_{\mathit{t}}$, for $\mathit{i}=1,2,\dots ,k$ and $\mathit{t}=1,2,\dots ,n$.
Constraints:
• if ${\mathbf{tr}}\left[i-1\right]=\text{"L"}$, ${\mathbf{z}}\left[i,t\right]>0.0$;
• if ${\mathbf{tr}}\left[i-1\right]=\text{"S"}$, ${\mathbf{z}}\left[\mathit{i},\mathit{t}\right]\ge 0.0$, for $\mathit{i}=0,1,\dots ,k-1$ and $\mathit{t}=0,1,\dots ,n-1$.
tr
Type: array<System..::..String>[]()[][]
An array of size [k]
On entry: ${\mathbf{tr}}\left[\mathit{i}-1\right]$ indicates whether the $\mathit{i}$th time series is to be transformed, for $\mathit{i}=1,2,\dots ,k$.
${\mathbf{tr}}\left[i-1\right]=\text{"N"}$
No transformation is used.
${\mathbf{tr}}\left[i-1\right]=\text{"L"}$
A log transformation is used.
${\mathbf{tr}}\left[i-1\right]=\text{"S"}$
A square root transformation is used.
Constraint: ${\mathbf{tr}}\left[\mathit{i}-1\right]=\text{"N"}$, $\text{"L"}$ or $\text{"S"}$, for $\mathit{i}=1,2,\dots ,k$.
id
Type: array<System..::..Int32>[]()[][]
An array of size [k]
On entry: ${\mathbf{id}}\left[i-1\right]$ must specify, ${\mathit{d}}_{i}$, the order of differencing required for the $i$th series.
Constraint: $0\le {\mathbf{id}}\left[\mathit{i}-1\right]<{\mathbf{n}}-\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{ip}},{\mathbf{iq}}\right)$, for $\mathit{i}=1,2,\dots ,k$.
delta
Type: array<System..::..Double,2>[,](,)[,][,]
An array of size [dim1, dim2]
Note: dim1 must satisfy the constraint: $\mathrm{dim1}\ge {\mathbf{k}}$
Note: the second dimension of the array delta must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,\mathit{d}\right)$, where $\mathit{d}=\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{id}}\left[i-1\right]\right)$.
On entry: if ${\mathbf{id}}\left[i-1\right]>0$, then ${\mathbf{delta}}\left[\mathit{i}-1,\mathit{j}-1\right]$ must be set equal to ${\delta }_{\mathit{i}\mathit{j}}$, for $\mathit{j}=1,2,\dots ,{\mathit{d}}_{\mathit{i}}$ and $\mathit{i}=1,2,\dots ,k$.
If $\mathit{d}=0$, delta is not referenced.
ip
Type: System..::..Int32
On entry: $p$, the number of AR parameter matrices.
Constraint: ${\mathbf{ip}}\ge 0$.
iq
Type: System..::..Int32
On entry: $q$, the number of MA parameter matrices.
Constraint: ${\mathbf{iq}}\ge 0$.
mean
Type: System..::..String
On entry: ${\mathbf{mean}}=\text{"M"}$, if components of $\mu$ have been estimated and ${\mathbf{mean}}=\text{"Z"}$, if all elements of $\mu$ are to be taken as zero.
Constraint: ${\mathbf{mean}}=\text{"M"}$ or $\text{"Z"}$.
par
Type: array<System..::..Double>[]()[][]
An array of size [lpar]
On entry: must contain the parameter estimates read in row by row in the order ${\varphi }_{1},{\varphi }_{2},\dots ,{\varphi }_{p}$, ${\theta }_{1},{\theta }_{2},\dots ,{\theta }_{q}$, $\mu$.
Thus,
• if ${\mathbf{ip}}>0$, ${\mathbf{par}}\left[\left(\mathit{l}-1\right)×k×k+\left(\mathit{i}-1\right)×k+\mathit{j}-1\right]$ must be set equal to an estimate of the $\left(\mathit{i},\mathit{j}\right)$th element of ${\varphi }_{\mathit{l}}$, for $\mathit{l}=1,2,\dots ,p$, $\mathit{i}=1,2,\dots ,k$ and $\mathit{j}=1,2,\dots ,k$;
• if ${\mathbf{iq}}>0$, ${\mathbf{par}}\left[p×k×k+\left(\mathit{l}-1\right)×k×k+\left(\mathit{i}-1\right)×k+\mathit{j}-1\right]$ must be set equal to an estimate of the $\left(\mathit{i},\mathit{j}\right)$th element of ${\theta }_{\mathit{l}}$, for $\mathit{l}=1,2,\dots ,q$, $\mathit{i}=1,2,\dots ,k$ and $\mathit{j}=1,2,\dots ,k$;
• if ${\mathbf{mean}}=\text{"M"}$, ${\mathbf{par}}\left[\left(p+q\right)×k×k+\mathit{i}-1\right]$ must be set equal to an estimate of the $\mathit{i}$th component of $\mu$, for $\mathit{i}=1,2,\dots ,k$.
Constraint: the first ${\mathbf{ip}}×{\mathbf{k}}×{\mathbf{k}}$ elements of par must satisfy the stationarity condition and the next ${\mathbf{iq}}×{\mathbf{k}}×{\mathbf{k}}$ elements of par must satisfy the invertibility condition.
qq
Type: array<System..::..Double,2>[,](,)[,][,]
An array of size [dim1, k]
Note: dim1 must satisfy the constraint: $\mathrm{dim1}\ge {\mathbf{k}}$
On entry: ${\mathbf{qq}}\left[i-1,j-1\right]$ must contain an estimate of the $\left(i,j\right)$th element of $\Sigma$. The lower triangle only is needed.
Constraint: ${\mathbf{qq}}$ must be positive definite.
On exit: if ${\mathbf{ifail}}\ne {1}$, then the upper triangle is set equal to the lower triangle.
v
Type: array<System..::..Double,2>[,](,)[,][,]
An array of size [dim1, dim2]
Note: dim1 must satisfy the constraint: $\mathrm{dim1}\ge {\mathbf{k}}$
Note: the second dimension of the array v must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{n}}-\mathit{d}\right)$, where $\mathit{d}=\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{id}}\left[i-1\right]\right)$.
On entry: ${\mathbf{v}}\left[\mathit{i}-1,\mathit{t}-1\right]$ must contain an estimate of the $\mathit{i}$th component of ${\epsilon }_{\mathit{t}+\mathit{d}}$, for $\mathit{i}=1,2,\dots ,k$ and $\mathit{t}=1,2,\dots ,n-\mathit{d}$.
If $q=0$, v is not used.
lmax
Type: System..::..Int32
On entry: the number, ${l}_{\mathrm{max}}$, of forecasts required.
Constraint: ${\mathbf{lmax}}\ge 1$.
predz
Type: array<System..::..Double,2>[,](,)[,][,]
An array of size [dim1, lmax]
Note: dim1 must satisfy the constraint: $\mathrm{dim1}\ge {\mathbf{k}}$
On exit: ${\mathbf{predz}}\left[\mathit{i}-1,\mathit{l}-1\right]$ contains the forecast of ${z}_{\mathit{i},n+\mathit{l}}$, for $\mathit{i}=1,2,\dots ,k$ and $\mathit{l}=1,2,\dots ,{\mathit{l}}_{\mathrm{max}}$.
sefz
Type: array<System..::..Double,2>[,](,)[,][,]
An array of size [dim1, lmax]
Note: dim1 must satisfy the constraint: $\mathrm{dim1}\ge {\mathbf{k}}$
On exit: ${\mathbf{sefz}}\left[\mathit{i}-1,\mathit{l}-1\right]$ contains an estimate of the standard error of the forecast of ${z}_{\mathit{i},n+\mathit{l}}$, for $\mathit{i}=1,2,\dots ,k$ and $\mathit{l}=1,2,\dots ,{\mathit{l}}_{\mathrm{max}}$.
dnref
Type: array<System..::..Double>[]()[][]
An array of size [lref]
On exit: the reference vector which may be used to update forecasts using g13dk. The first $\left({\mathbf{lmax}}-1\right)×{\mathbf{k}}×{\mathbf{k}}$ elements contain the $\psi$ weight matrices, ${\psi }_{1},{\psi }_{2},\dots ,{\psi }_{{l}_{\mathrm{max}}-1}$. The next ${\mathbf{k}}×{\mathbf{lmax}}$ elements contain the forecasts of the transformed series ${\stackrel{^}{Z}}_{n+1}^{*},{\stackrel{^}{Z}}_{n+2}^{*},\dots ,{\stackrel{^}{Z}}_{n+{l}_{\mathrm{max}}}^{*}$ and the next ${\mathbf{k}}×{\mathbf{lmax}}$ contain the variances of the forecasts of the transformed variables. The last k elements are used to store the transformations for the series.
ifail
Type: System..::..Int32%
On exit: ${\mathbf{ifail}}={0}$ unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

Description

Let the vector ${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 ${Z}_{n+1},{Z}_{n+2},\dots ,{Z}_{n+{l}_{\mathrm{max}}}$ are required. Let ${W}_{t}={\left({w}_{1t},{w}_{2t},\dots ,{w}_{kt}\right)}^{\mathrm{T}}$ be defined as follows:
 $wit=δiBzit*, i=1,2,…,k,$
where ${\delta }_{i}\left(B\right)$ is the differencing operator applied to the $i$th series and where ${z}_{it}^{*}$ is equal to either ${z}_{it}$, $\sqrt{{z}_{it}}$ or ${\mathrm{log}}_{\mathrm{e}}\left({z}_{it}\right)$ depending on whether or not a transformation was required to stabilize the variance before fitting the model.
If the order of differencing required for the $i$th series is ${\mathit{d}}_{i}$, then the differencing operator for the $i$th series is defined by ${\delta }_{i}\left(B\right)=1-{\delta }_{i1}B-{\delta }_{i2}{B}^{2}-\cdots -{\delta }_{i{\mathit{d}}_{i}}{B}^{{\mathit{d}}_{i}}$ where $B$ is the backward shift operator; that is, $B{Z}_{t}={Z}_{t-1}$. The differencing parameters ${\delta }_{\mathit{i}\mathit{j}}$, for $\mathit{i}=1,2,\dots ,k$ and $\mathit{j}=1,2,\dots ,{\mathit{d}}_{\mathit{i}}$, must be supplied by you. If the $i$th series does not require differencing, then ${\mathit{d}}_{i}=0$.
${W}_{t}$ is assumed to follow a multivariate ARMA model of the form:
 $Wt-μ=ϕ1Wt-1-μ+ϕ2Wt-2-μ+⋯+ϕpWt-p-μ+εt-θ1εt-1-⋯-θqεt-q,$ (1)
where ${\epsilon }_{\mathit{t}}={\left({\epsilon }_{1\mathit{t}},{\epsilon }_{2\mathit{t}},\dots ,{\epsilon }_{k\mathit{t}}\right)}^{\mathrm{T}}$, for $\mathit{t}=1,2,\dots ,n$, is a vector of $k$ residual series assumed to be Normally distributed with zero mean and positive definite covariance matrix $\Sigma$. The components of ${\epsilon }_{t}$ are assumed to be uncorrelated at non-simultaneous lags. The ${\varphi }_{i}$ and ${\theta }_{j}$ are $k$ by $k$ matrices of parameters. The matrices ${\varphi }_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,p$, are the autoregressive (AR) parameter matrices, and the matrices ${\theta }_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,q$, the moving average (MA) parameter matrices. The parameters in the model are thus the $p$ ($k$ by $k$) $\varphi$-matrices, the $q$ ($k$ by $k$) $\theta$-matrices, the mean vector $\mu$ and the residual error covariance matrix $\Sigma$. The ARMA model (1) must be both stationary and invertible; see g13dx for a method of checking these conditions.
The ARMA model (1) may be rewritten as
 $ϕBδBZt*-μ=θBεt,$
where $\varphi \left(B\right)$ and $\theta \left(B\right)$ are the autoregressive and moving average polynomials and $\delta \left(B\right)$ denotes the $k$ by $k$ diagonal matrix whose $i$th diagonal elements is ${\delta }_{i}\left(B\right)$ and ${Z}_{t}^{*}={\left({z}_{1t}^{*},{z}_{2t}^{*}\dots {z}_{kt}^{*}\right)}^{\mathrm{T}}$.
This may be rewritten as
 $ϕBδBZt*=ϕBμ+θBεt$
or
 $Zt*=τ+ψBεt=τ+εt+ψ1εt-1+ψ2εt-2+⋯$
where $\psi \left(B\right)={\delta }^{-1}\left(B\right){\varphi }^{-1}\left(B\right)\theta \left(B\right)$ and $\tau ={\delta }^{-1}\left(B\right)\mu$ is a vector of length $k$.
Forecasts are computed using a multivariate version of the procedure described in Box and Jenkins (1976). If ${\stackrel{^}{Z}}_{n}^{*}\left(l\right)$ denotes the forecast of ${Z}_{n+l}^{*}$, then ${\stackrel{^}{Z}}_{n}^{*}\left(l\right)$ is taken to be that linear function of ${Z}_{n}^{*},{Z}_{n-1}^{*},\dots \text{}$ which minimizes the elements of $E\left\{{e}_{n}\left(l\right){e}_{n}^{\prime }\left(l\right)\right\}$ where ${e}_{n}\left(l\right)={Z}_{n+l}^{*}-{\stackrel{^}{Z}}_{n}^{*}\left(l\right)$ is the forecast error. ${\stackrel{^}{Z}}_{n}^{*}\left(l\right)$ is referred to as the linear minimum mean square error forecast of ${Z}_{n+l}^{*}$.
The linear predictor which minimizes the mean square error may be expressed as
 $Z^n*l=τ+ψlεn+ψl+1εn-1+ψl+2εn-2+⋯.$
The forecast error at $t$ for lead $l$ is then
 $enl=Zn+l*-Z^n*l=εn+l+ψ1εn+l-1+ψ2εn+l-2+⋯+ψl-1εn+1.$
Let $\mathit{d}=\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathit{d}}_{\mathit{i}}\right)$, for $\mathit{i}=1,2,\dots ,k$. Unless $q=0$ the method requires estimates of ${\epsilon }_{\mathit{t}}$, for $\mathit{t}=\mathit{d}+1,\dots ,n$, which are obtainable from g13dd. The terms ${\epsilon }_{\mathit{t}}$ are assumed to be zero, for $\mathit{t}=n+1,\dots ,n+{l}_{\mathrm{max}}$. You may use g13dk to update these ${l}_{\mathrm{max}}$ forecasts should further observations, ${Z}_{n+1},{Z}_{n+2},\dots \text{}$, become available. Note that when ${l}_{\mathrm{max}}$ or more further observations are available then g13dj must be used to produce new forecasts for ${Z}_{n+{l}_{\mathrm{max}}+1},{Z}_{n+{l}_{\mathrm{max}}+2},\dots \text{}$, should they be required.
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).

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

Error Indicators and Warnings

Errors or warnings detected by the method:
Some error messages may refer to parameters that are dropped from this interface (KMAX) In these cases, an error in another parameter has usually caused an incorrect value to be inferred.
${\mathbf{ifail}}=1$
 On entry, ${\mathbf{k}}<1$, or ${\mathbf{n}}<3$, or ${\mathbf{id}}\left[i-1\right]<0$ for some $i=1,2,\dots ,k$, or ${\mathbf{id}}\left[i-1\right]\ge {\mathbf{n}}-\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{ip}},{\mathbf{iq}}\right)$ for some $i=1,2,\dots ,k$, or ${\mathbf{ip}}<0$, or ${\mathbf{iq}}<0$, or ${\mathbf{mean}}\ne \text{"M"}$ or $\text{"Z"}$, or ${\mathbf{lpar}}<\left({\mathbf{ip}}+{\mathbf{iq}}\right)×{\mathbf{k}}×{\mathbf{k}}+{\mathbf{k}}$, and ${\mathbf{mean}}=\text{"M"}$, or ${\mathbf{lpar}}<\left({\mathbf{ip}}+{\mathbf{iq}}\right)×{\mathbf{k}}×{\mathbf{k}}$ and ${\mathbf{mean}}=\text{"Z"}$, or ${\mathbf{n}}×{\mathbf{k}}\le \left({\mathbf{ip}}+{\mathbf{iq}}\right)×{\mathbf{k}}×{\mathbf{k}}+{\mathbf{k}}+{\mathbf{k}}\left[{\mathbf{k}}\right]/2$, and ${\mathbf{mean}}=\text{"M"}$, or ${\mathbf{n}}×{\mathbf{k}}\le \left({\mathbf{ip}}+{\mathbf{iq}}\right)×{\mathbf{k}}×{\mathbf{k}}+{\mathbf{k}}\left[{\mathbf{k}}\right]/2$ and ${\mathbf{mean}}=\text{"Z"}$, or ${\mathbf{lmax}}<1$, or ${\mathbf{lref}}<\left({\mathbf{lmax}}-1\right)×{\mathbf{k}}×{\mathbf{k}}+2×{\mathbf{k}}×{\mathbf{lmax}}+{\mathbf{k}}$, or lwork is too small, or liwork is too small.
${\mathbf{ifail}}=2$
 On entry, at least one of the first $k$ elements of tr is not equal to "N", "L" or "S".
${\mathbf{ifail}}=3$
On entry, one or more of the transformations requested cannot be computed; that is, you may be trying to log or square-root a series, some of whose values are negative.
${\mathbf{ifail}}=4$
On entry, either qq is not positive definite or the autoregressive parameter matrices are extremely close to or outside the stationarity region, or the moving average parameter matrices are extremely close to or outside the invertibility region. To proceed, you must supply different parameter estimates in the arrays par and qq.
${\mathbf{ifail}}=5$
This is an unlikely exit brought about by an excessive number of iterations being needed to evaluate the eigenvalues of the matrices required to check for stationarity and invertibility; see g13dx. All output parameters are undefined.
${\mathbf{ifail}}=6$
This is an unlikely exit which could occur if qq is nearly non positive definite. In this case the standard deviations of the forecast errors may be non-positive. To proceed, you must supply different parameter estimates in the array qq.
${\mathbf{ifail}}=7$
This is an unlikely exit. For one of the series, overflow will occur if the forecasts are computed. You should check whether the transformations requested in the array tr are sensible. All output parameters are undefined.
${\mathbf{ifail}}=-9000$
An error occured, see message report.
${\mathbf{ifail}}=-6000$
Invalid Parameters $〈\mathit{\text{value}}〉$
${\mathbf{ifail}}=-4000$
Invalid dimension for array $〈\mathit{\text{value}}〉$
${\mathbf{ifail}}=-8000$
Negative dimension for array $〈\mathit{\text{value}}〉$
${\mathbf{ifail}}=-6000$
Invalid Parameters $〈\mathit{\text{value}}〉$

Accuracy

The matrix computations are believed to be stable.

Parallelism and Performance

None.

The same differencing operator does not have to be applied to all the series. For example, suppose we have $k=2$, and wish to apply the second order differencing operator ${\nabla }^{2}$ to the first series and the first-order differencing operator $\nabla$ to the second series:
 $w1t=∇2z1t=1-B2z1t=1-2B+B2Z1t, andw2t=∇z2t=1-Bz2t.$
Then ${\mathit{d}}_{1}=2,{\mathit{d}}_{2}=1$, $\mathit{d}=\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left({\mathit{d}}_{1},{\mathit{d}}_{2}\right)=2$, and
 $delta=δ11δ12δ21=2-11.$
Note:  although differencing may already have been applied prior to the model fitting stage, the differencing parameters supplied in delta are part of the model definition and are still required by this method to produce the forecasts.
g13dj should not be used when the moving average parameters lie close to the boundary of the invertibility region. The method does test for both invertibility and stationarity but if in doubt, you may use g13dx, before calling this method, to check that the VARMA model being used is invertible.
On a successful exit, the quantities k, lmax, kmax, ref and lref will be suitable for input to g13dk.