NAG Library Routine Document
G13BAF filters a time series by an ARIMA model.
|SUBROUTINE G13BAF (
||Y, NY, MR, NMR, PAR, NPAR, CY, WA, NWA, B, NB, IFAIL)
||NY, MR(NMR), NMR, NPAR, NWA, NB, IFAIL
||Y(NY), PAR(NPAR), CY, WA(NWA), B(NB)
From a given series , a new series is calculated using a supplied (filtering) ARIMA model. This model will be one which has previously been fitted to a series with residuals . The equations defining in terms of are very similar to those by which is obtained from . The only dissimilarity is that no constant correction is applied after differencing. This is because the series is generally distinct from the series with which the model is associated, though may be related to . Whilst it is appropriate to apply the ARIMA model to so as to preserve the same relationship between and as exists between and , the constant term in the ARIMA model is inappropriate for . The consequence is that will not necessarily have zero mean.
The equations are precisely:
the appropriate differencing of
; both the seasonal and non-seasonal inverted autoregressive operations are then applied,
followed by the inverted moving average operations
Because the filtered series value
depends on present and past values
, there is a problem arising from ignorance of
which particularly affects calculation of the early values
, causing ‘transient errors’. The routine allows two possibilities.
||The equations (1), (2) and (3) are applied from successively later time points so that all terms on their right-hand sides are known, with being defined for . Equations (4) and (5) are then applied over the same range, taking any values on the right-hand side associated with previous time points to be zero.
This procedure may still however result in unacceptably large transient errors in early values of .
||The unknown values are estimated by backforecasting. This requires that an ARIMA model distinct from that which has been supplied for filtering, should have been previously fitted to .
For efficiency, you are asked to supply both this ARIMA model for
and a limited number of backforecasts which are prefixed to the known values of
. Within the routine further backforecasts of
, and the series
are then easily calculated, and a set of linear equations solved for backforecasts of
for use in (4)
in the case that
Even if the best model for
is not available, a very approximate guess such as
can help to reduce the transients substantially.
The backforecasts which need to be prefixed to
are of length
are the non-seasonal and seasonal moving average orders and
the seasonal period for the ARIMA model of
. Thus you need not carry out the backforecasting exercise if
. Otherwise, the series
should be reversed to obtain
should be used to forecast
. The ARIMA model used is that fitted to
(as a forward series) except that, if
is odd, the constant should be changed in sign (to allow, for example, for the fact that a forward upward trend is a reversed downward trend). The ARIMA model for
supplied to the filtering routine must however have the appropriate constant for the forward series.
The series is then supplied to the routine, and a corresponding set of values returned for .
Box G E P and Jenkins G M (1976) Time Series Analysis: Forecasting and Control (Revised Edition) Holden–Day
- 1: Y(NY) – REAL (KIND=nag_wp) arrayInput
backforecasts, starting with backforecast at time
to backforecast at time
, followed by the time series starting at time
. If there are no backforecasts, either because the ARIMA model for the time series is not known, or because it is known but has no moving average terms, then the time series starts at the beginning of Y
- 2: NY – INTEGERInput
: the total number of backforecasts and time series data points in array Y
- 3: MR(NMR) – INTEGER arrayInput
: the orders vector for the filtering model, followed by the orders vector for the ARIMA model for the time series if the latter is known. The orders appear in the standard sequence
as given in the G13 Chapter Introduction
. If the ARIMA model for the time series is supplied, then the routine will assume that the first
values of the array Y
the filtering model is restricted in the following ways:
- , i.e., filtering by a model which contains only differencing terms is not permitted;
- , for ;
- if , ;
- if , ;
the ARIMA model for the time series is restricted in the following ways:
- , for ;
- if , ;
- if , ;
- 4: NMR – INTEGERInput
: the number of values specified in the array MR
. It takes the value
if no ARIMA model for the time series is supplied but otherwise it takes the value
. Thus NMR
acts as an indicator as to whether backforecasting can be carried out.
- 5: PAR(NPAR) – REAL (KIND=nag_wp) arrayInput
On entry: the parameters of the filtering model, followed by the parameters of the ARIMA model for the time series, if supplied. Within each model the parameters are in the standard order of non-seasonal AR and MA followed by seasonal AR and MA.
- 6: NPAR – INTEGERInput
: the total number of parameters held in array PAR
- if , ;
- if , .
the first constraint (i.e.,
) on the orders of the filtering model, in parameter MR
, ensures that
- 7: CY – REAL (KIND=nag_wp)Input
: if the ARIMA model is known (i.e.,
must specify the constant term of the ARIMA model for the time series. If this model is not known (i.e.,
), then CY
is not used.
- 8: WA(NWA) – REAL (KIND=nag_wp) arrayWorkspace
- 9: NWA – INTEGERInput
: the dimension of the array WA
as declared in the (sub)program from which G13BAF is called. Workspace is only required if the ARIMA model for the time series is known.
- if , ;
- if , .
- 10: B(NB) – REAL (KIND=nag_wp) arrayOutput
: the filtered output series. If the ARIMA model for the time series was known, and hence
backforecasts were supplied in Y
, then B
‘filtered’ backforecasts followed by the filtered series. Otherwise, the filtered series begins at the start of B
just as the original series began at the start of Y
. In either case, if the value of the series at time
is held in
, then the filtered value at time
is held in
- 11: NB – INTEGERInput
: the dimension of the array B
as declared in the (sub)program from which G13BAF is called. In addition to holding the returned filtered series, B
is also used as an intermediate work array if the ARIMA model for the time series was known.
- if , ;
- if , .
- 12: IFAIL – INTEGERInput/Output
must be set to
. If you are unfamiliar with this parameter you should refer to Section 3.3
in the Essential Introduction for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value
is recommended. If the output of error messages is undesirable, then the value
is recommended. Otherwise, if you are not familiar with this parameter, the recommended value is
. When the value is used it is essential to test the value of IFAIL on exit.
unless the routine detects an error or a warning has been flagged (see Section 6
6 Error Indicators and Warnings
If on entry
, explanatory error messages are output on the current error message unit (as defined by X04AAF
Errors or warnings detected by the routine:
|On entry,|| and .|
|On entry,||the orders vector MR does not satisfy the constraints given in Section 5.|
|On entry,||NY is too small to successfully carry out the requested filtering, (see Section 5).|
|On entry,||the work array WA is too small.|
|On entry,||the array B is too small.|
The orders vector for the filtering model is invalid.
The orders vector for the ARIMA model is invalid. (Only occurs if .)
The initial values of the filtered series are indeterminate for the given models.
Internal memory allocation failed.
Accuracy and stability are high except when the MA parameters are close to the invertibility boundary.
If an ARIMA model is supplied,
a local workspace array
allocated internally by G13BAF. The total size of
is the expression defined in the description of the parameter WA
The time taken by G13BAF is approximately proportional to
with an appreciable fixed increase if an ARIMA model is supplied for the time series.
This example reads a time series of length
. It reads the univariate ARIMA
model and the ARIMA filtering
model for the series. Two initial backforecasts are required and these are calculated by a call to
The backforecasts are inserted at the start of the series and G13BAF is called to perform the calculations.
9.1 Program Text
Program Text (g13bafe.f90)
9.2 Program Data
Program Data (g13bafe.d)
9.3 Program Results
Program Results (g13bafe.r)