NAG Library Function Document
nag_tsa_multi_inp_model_forecast (g13bjc)
1
Purpose
nag_tsa_multi_inp_model_forecast (g13bjc) produces forecasts of a time series (the output series) which may depend on one or more other (input) series via a previously estimated multi-input model. The future values of any input series must be supplied. Standard errors of the forecasts are produced. If future values of some of the input series have been obtained as forecasts using ARIMA models for those series, this may be allowed for in the calculation of the standard errors.
2
Specification
#include <nag.h> |
#include <nagg13.h> |
void |
nag_tsa_multi_inp_model_forecast (Nag_ArimaOrder *arimav,
Integer nseries,
Nag_TransfOrder *transfv,
double para[],
Integer npara,
Integer nev,
Integer nfv,
const double xxy[],
Integer tdxxy,
double rmsxy[],
const Integer mrx[],
Integer tdmrx,
const double parx[],
Integer ldparx,
Integer tdparx,
double fva[],
double fsd[],
Nag_G13_Opt *options,
NagError *fail) |
|
3
Description
nag_tsa_multi_inp_model_forecast (g13bjc) has two stages. The first stage is essentially the same as a call to the model estimation function
nag_tsa_multi_inp_model_estim (g13bec), with zero iterations. In particular, all the arguments remain unchanged in the supplied input series transfer function models and output noise series ARIMA model except that a further iteration takes place for any
corresponding to a simple input. The internal nuisance arguments associated with the pre-observation period effects of the input series are estimated where requested, and so are any backforecasts of the output noise series. The output components
and
, and residuals
are calculated exactly as described in the
Section 3 of
nag_tsa_multi_inp_model_estim (g13bec).
In the second stage, the forecasts of the output series are calculated for where is the latest time point of the observations and is the maximum lead time of the forecasts.
First the new values, for any input series are used to form the input components for using the transfer function models:
(a) |
.
The output noise component for is then forecast by setting for and using the ARIMA model equations: |
(b) |
. |
(c) |
. |
(d) |
. |
This last step of ‘integration’ reverses the process of differencing. Finally the output forecasts are calculated as
The forecast error variance of
(i.e., at lead time
) is
, which is the sum of parts which arise from the various input series, and the output noise component. That part due to the output noise is
is the estimated residual variance of the output noise ARIMA model, and
, are the ‘psi-weights’ of this model as defined in
Box and Jenkins (1976). They are calculated by applying the equations (b), (c) and (d) above for
, but with artificial values for the various series and with the constant
set to 0. Thus all values of
,
,
and
are taken as zero for
;
is taken to be 1 for
and 0 for
. The resulting values of
for
are precisely
as required.
Further contributions to
come only from those input series, for which future values are forecasts which have been obtained by applying input series ARIMA models. For such a series the contribution is
is the estimated residual variance of the input series ARIMA model. The coefficients
are calculated by applying the transfer function model equation (a) above for
, but again with artificial values of the series. Thus all values of
and
for
are taken to be zero, and
are taken to be the psi-weight sequence
for the input series ARIMA model. The resulting values of
for
are precisely
as required.
In adding such contributions to to make up the total forecast error variance , it is assumed that the various input series with which these contributions are associated, are statistically independent of each other.
When using the function in practice an ARIMA model is required for all the input series. In the case of those inputs for which no such ARIMA model is available (or its effects are to be excluded), the corresponding orders and arguments and the estimated residual variance should be set to zero.
4
References
Box G E P and Jenkins G M (1976) Time Series Analysis: Forecasting and Control (Revised Edition) Holden–Day
5
Arguments
- 1:
– Nag_ArimaOrder *
-
Pointer to structure of type Nag_ArimaOrder with the following members:
- p – Integer
- d – IntegerInput
- q – IntegerInput
- bigp – IntegerInput
- bigd – IntegerInput
- bigq – IntegerInput
- s – IntegerInput
-
On entry: these seven members of
arimav must specify the orders vector
, respectively, of the ARIMA model for the output noise component.
, , and refer, respectively, to the number of autoregressive , moving average , seasonal autoregressive and seasonal moving average arguments.
, and refer, respectively, to the order of non-seasonal differencing, the order of seasonal differencing and the seasonal period.
Constraints:
- , , , , , , ;
- ;
- ;
- if , ;
- if , ;
- ;
- .
- 2:
– IntegerInput
-
On entry: the number of input and output series. There may be any number of input series (including none), but only one output series.
Constraint:
if there are no arguments in the model (that is and ), otherwise.
- 3:
– Nag_TransfOrder *
-
Pointer to structure of type Nag_TransfOrder with the following members:
- b – Integer *Input
- q – Integer *Input
- p – Integer *
- r – Integer *Input
-
On entry: before use these member pointers
must be allocated memory by calling
nag_tsa_transf_orders (g13byc) which allocates
elements to each pointer. The memory allocated to these pointers must be given the transfer function model orders
,
and
of each of the input series. The order arguments for input series
are held in the
th element of the allocated memory for each pointer.
holds the value
,
holds the value
and
holds the value
.
For a simple input, .
holds the value , where for a simple input, and or 3 for a transfer function input.
The choice leads to estimation of the pre-period input effects as nuisance arguments, and suppresses this estimation. This choice may affect the returned forecasts.
When , any nonzero contents of the th element of the memory of , and are ignored.
Constraint:
,
or
, for
The memory allocated to the members of
transfv must be freed by a call to
nag_tsa_trans_free (g13bzc)
- 4:
– doubleInput/Output
-
On entry: estimates of the multi-input model arguments. These are in order firstly the ARIMA model arguments:
values of
arguments,
values of
arguments,
values of
arguments,
values of
arguments. These are followed by the transfer function model argument values
, and
for the first of any input series and similarly for each subsequent input series. The final component of
para is the value of the constant
.
On exit: the input estimates are unaltered except that any estimates corresponding to a simple input will be undated by a single iteration.
- 5:
– IntegerInput
-
On entry: the exact number of , , , , , , arguments, so that , the summation being over all the input series. ( must be included whether its value was previously estimated or was set fixed.)
- 6:
– IntegerInput
-
On entry: the number of original (undifferenced) values in each of the input and output time-series.
- 7:
– IntegerInput
-
On entry: the number of forecast values of the output series required.
Constraint:
.
- 8:
– const doubleInput
-
Note: the th element of the matrix is stored in .
On entry: the columns of
xxy must contain in the first
nev places, the past values of each of the input and output series, in that order. In the next
nfv places, the columns relating to the input series (i.e., columns 0 to
) contain the future values of the input series which are necessary for construction of the forecasts of the output series
.
- 9:
– IntegerInput
-
On entry: the stride separating matrix column elements in the array
xxy.
Constraint:
.
- 10:
– doubleInput/Output
-
On entry: elements of
to
must contain the estimated residual variance of the input series ARIMA models. In the case of those inputs for which no ARIMA model is available or its effects are to be excluded in the calculation of forecast standard errors, the corresponding entry of
rmsxy should be set to 0.
On exit:
contains the estimated residual variance of the output noise ARIMA model which is calculated from the supplied series. Otherwise
rmsxy is unchanged.
- 11:
– const IntegerInput
-
On entry: the orders array for each of the input series ARIMA models. Thus, column
contains values of
,
,
,
,
,
,
for input series
. In the case of those inputs for which no ARIMA model is available, the corresponding orders should be set to 0.
If there are no input series then
NULL may be supplied in place of
mrx.
- 12:
– IntegerInput
-
On entry: the stride separating matrix column elements in the array
mrx.
Constraint:
.
- 13:
– const doubleInput
-
Note: the th element of the matrix is stored in .
On entry: values of the arguments (
,
,
, and
) for each of the input series ARIMA models. Thus column
contains
values of
,
values of
,
values of
and
values of
– in that order.
Values in the columns relating to those input series for which no ARIMA model is available are ignored.
If there are no input series then
NULL may be supplied in place of
parx.
- 14:
– IntegerInput
-
On entry: the maximum number of arguments in any of the input series ARIMA models. If there are no input series then
ldparx is not referenced.
Constraint:
, for .
- 15:
– IntegerInput
-
On entry: the stride separating matrix column elements in the array
parx.
Constraint:
.
- 16:
– doubleOutput
-
On exit: the required forecast values for the output series.
- 17:
– doubleOutput
-
On exit: the standard errors for each of the forecast values.
- 18:
– Nag_G13_Opt *Input/Output
-
On entry/exit: a pointer to a structure of type Nag_G13_Opt whose members are optional parameters for
nag_tsa_multi_inp_model_forecast (g13bjc). If the optional parameters are not required, then the null pointer,
G13_DEFAULT, can be used in the function call to
nag_tsa_multi_inp_model_forecast (g13bjc). Details of the optional parameters and their types are given below in
Section 11.
- 19:
– NagError *Input/Output
-
The NAG error argument (see
Section 3.7 in How to Use the NAG Library and its Documentation).
6
Error Indicators and Warnings
- NE_2_INT_ARG_LT
-
On entry,
while
. These arguments must satisfy
. (See the expression for
in
Section 5 where
ldparx is described).
On entry, while . These arguments must satisfy .
On entry, while . These arguments must satisfy .
On entry, while . These arguments must satisfy .
- NE_ALLOC_FAIL
-
Dynamic memory allocation failed.
- NE_ARIMA_TEST_FAILED
-
On entry, or during execution, one or more sets of the ARIMA (, , or ) arguments do not satisfy the stationarity or invertibility test conditions.
- NE_BAD_PARAM
-
On entry, argument had an illegal value.
- NE_CONSTRAINT
-
General constraint: .
- NE_DELTA_TEST_FAILED
-
On entry, or during execution, one or more sets of arguments do not satisfy the stationarity or invertibility test conditions.
- NE_G13_OPTIONS_NOT_INIT
-
On entry, the option structure,
options, has not been initialized using
nag_tsa_options_init (g13bxc).
- NE_G13_ORDERS_NOT_INIT
-
On entry, the orders array structure
transfv in function
nag_tsa_transf_orders (g13byc) has not been initialized.
- NE_INT_ARG_LE
-
On entry, .
Constraint: .
- NE_INT_ARG_LT
-
On entry, .
Constraint: .
- NE_INT_ARRAY_2
-
Value given to not valid. Correct range for elements if is .
- 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_INVALID_NSER
-
On entry, and there are no arguments in the model, i.e., ( and ).
- NE_MAT_NOT_POS_DEF
-
Attempt to invert the second derivative matrix needed in the calculation of the covariance matrix of the parameter estimates has failed. The matrix is not positive definite, possibly due to rounding errors.
- NE_NPARA_MR_MT_INCONSIST
-
On entry, there is inconsistency between
npara on the one hand and the elements in the orders structures,
arimav and
transfv on the other.
- NE_NSER_INCONSIST
-
Value of
nseries passed to
nag_tsa_transf_orders (g13byc) was
which is not equal to the value
passed in this function.
- NE_SOLUTION_FAIL_CONV
-
Iterative refinement has failed to improve the solution of the equations giving the latest estimates of the arguments. This occurred because the matrix of the set of equations is too ill-conditioned.
7
Accuracy
The computation used is believed to be stable.
8
Parallelism and Performance
nag_tsa_multi_inp_model_forecast (g13bjc) is not threaded in any implementation.
The time taken by nag_tsa_multi_inp_model_forecast (g13bjc) is approximately proportional to the product of the length of each series and the square of the number of arguments in the multi-input model.
10
Example
The data in this example relate to 40 observations of an output time series and 5 input time series. This example differs from
Section 10 in
nag_tsa_multi_inp_model_estim (g13bec) in
nag_tsa_multi_inp_model_estim (g13bec) in that there are now 4 simple input series. The output series has one autoregressive
argument and one seasonal moving average
argument. The seasonal period is 4. The transfer function input (the fifth in the set) is defined by orders
,
,
,
, so that it allows for pre-observation period effects. The initial values of the specified model are:
A further eight values of the input series are supplied, and it is assumed that the values for the fifth series have themselves been forecast from an ARIMA model with orders 2 0 2 0 1 1 4, in which , , , and , and for which the residual mean square is 0.1720.
The following are computed and printed out: the estimated residual variance for the output noise series, the eight forecast values and their standard errors, and the values of the components and the output noise component .
10.1
Program Text
Program Text (g13bjce.c)
10.2
Program Data
Program Data (g13bjce.d)
10.3
Program Results
Program Results (g13bjce.r)
11
Optional Parameters
A number of optional input and output arguments to
nag_tsa_multi_inp_model_forecast (g13bjc) are available through the structure argument
options of type Nag_G13_Opt. An argument may be selected by assigning an appropriate value to the relevant structure member and those arguments not selected will be assigned default values. If no use is to be made of any of the optional parameters you should use the null pointer,
G13_DEFAULT, in place of
options when calling
nag_tsa_multi_inp_model_forecast (g13bjc); the default settings will then be used for all arguments.
Before assigning values to
options the structure must be initialized by a call to the function
nag_tsa_options_init (g13bxc). Values may then be assigned directly to the structure members in the normal C manner.
Options selected by direct assignment are checked within nag_tsa_multi_inp_model_forecast (g13bjc) for being within the required range, if outside the range, an error message is generated.
When all calls to
nag_tsa_multi_inp_model_forecast (g13bjc) have been completed and the results contained in the options structure are no longer required; then
nag_tsa_free (g13xzc) should be called to free the NAG allocated memory from
options.
11.1
Optional Parameters Checklist and Default Values
For easy reference, the following list shows the input and output members of
options which are valid for
nag_tsa_multi_inp_model_forecast (g13bjc) together with their default values where relevant.
Boolean list |
Nag_TRUE |
Boolean cfixed |
Nag_FALSE |
double *zt |
|
double *noise |
|
11.2
Description of the Optional Parameters
List – Nag_Boolean | | Default |
On entry: if then the argument settings which are used in the call to nag_tsa_multi_inp_model_forecast (g13bjc) will be printed.
cfixed – Nag_Boolean | | Default |
On entry: must be set to Nag_FALSE if the constant was estimated when the model was fitted, and Nag_TRUE if it was held at a fixed value. This only affects the degrees of freedom used in calculating the estimated residual variance.
zt – double * | | Default memory |
On exit: this pointer is allocated memory internally with elements corresponding to rows by columns. The columns of hold the values of the input component series .
noise – double * | | Default memory |
On exit: this pointer is allocated memory internally with elements. It holds the output noise component .