g13ba filters a time series by an ARIMA model.


public static void g13ba(
	double[] y,
	int ny,
	int[] mr,
	int nmr,
	double[] par,
	double cy,
	double[] b,
	out int ifail
Visual Basic
Public Shared Sub g13ba ( _
	y As Double(), _
	ny As Integer, _
	mr As Integer(), _
	nmr As Integer, _
	par As Double(), _
	cy As Double, _
	b As Double(), _
	<OutAttribute> ByRef ifail As Integer _
Visual C++
static void g13ba(
	array<double>^ y, 
	int ny, 
	array<int>^ mr, 
	int nmr, 
	array<double>^ par, 
	double cy, 
	array<double>^ b, 
	[OutAttribute] int% ifail
static member g13ba : 
        y : float[] * 
        ny : int * 
        mr : int[] * 
        nmr : int * 
        par : float[] * 
        cy : float * 
        b : float[] * 
        ifail : int byref -> unit 


Type: array<System..::..Double>[]()[][]
An array of size [ny]
On entry: the Qy backforecasts, starting with backforecast at time 1-Qy to backforecast at time 0, followed by the time series starting at time 1, where Qy=mr[9]+mr[12]×mr[13]. 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.
Type: System..::..Int32
On entry: the total number of backforecasts and time series data points in array y.
Constraint: nymax1+Qy,_npar.
Type: array<System..::..Int32>[]()[][]
An array of size [nmr]
On entry: 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 p,d,q,P,D,Q,s as given in the G13 class. If the ARIMA model for the time series is supplied, then the method will assume that the first Qy values of the array y are backforecasts.
the filtering model is restricted in the following ways:
  • mr[0]+mr[2]+mr[3]+mr[5]>0, i.e., filtering by a model which contains only differencing terms is not permitted;
  • mr[k]0, for k=0,1,,6;
  • if mr[6]=0, mr[3]+mr[4]+mr[5]=0;
  • if mr[6]0, mr[3]+mr[4]+mr[5]0;
  • mr[6]1.
the ARIMA model for the time series is restricted in the following ways:
  • mr[k]0, for k=7,8,,13;
  • if mr[13]=0, mr[10]+mr[11]+mr[12]=0;
  • if mr[13]0, mr[10]+mr[11]+mr[12]0;
  • mr[13]1.
Type: System..::..Int32
On entry: the number of values specified in the array mr. It takes the value 7 if no ARIMA model for the time series is supplied but otherwise it takes the value 14. Thus nmr acts as an indicator as to whether backforecasting can be carried out.
Constraint: nmr=7 or 14.
Type: array<System..::..Double>[]()[][]
An array of size [dim1]
Note: dim1 must satisfy the constraint:
  • if nmr=7, _npar=mr[0]+mr[2]+mr[3]+mr[5];
  • if nmr=14, _npar=mr[0]+mr[2]+mr[3]+mr[5]+mr[7]+mr[9]+mr[10]+mr[12].
Note: the first constraint (i.e., mr[0]+mr[2]+mr[3]+mr[5]>0) on the orders of the filtering model, in parameter mr, ensures that _npar>0.
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.
Type: System..::..Double
On entry: if the ARIMA model is known (i.e., nmr=14), cy must specify the constant term of the ARIMA model for the time series. If this model is not known (i.e., nmr=7), then cy is not used.
Type: array<System..::..Double>[]()[][]
An array of size [nb]
On exit: the filtered output series. If the ARIMA model for the time series was known, and hence Qy backforecasts were supplied in y, then b contains Qy ‘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 t is held in y[t-1], then the filtered value at time t is held in b[t-1].
Type: System..::..Int32%
On exit: ifail=0 unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).


From a given series y1,y2,,yn, a new series b1,b2,,bn is calculated using a supplied (filtering) ARIMA model. This model will be one which has previously been fitted to a series xt with residuals at. The equations defining bt in terms of yt are very similar to those by which at is obtained from xt. The only dissimilarity is that no constant correction is applied after differencing. This is because the series yt is generally distinct from the series xt with which the model is associated, though yt may be related to xt. Whilst it is appropriate to apply the ARIMA model to yt so as to preserve the same relationship between bt and at as exists between yt and xt, the constant term in the ARIMA model is inappropriate for yt. The consequence is that bt will not necessarily have zero mean.
The equations are precisely:
wt=dsDyt, (1)
the appropriate differencing of yt; both the seasonal and non-seasonal inverted autoregressive operations are then applied,
ut=wt-Φ1wt-s--ΦPwt-s×P (2)
vt=ut-ϕ1ut-1--ϕput-p (3)
followed by the inverted moving average operations
zt=vt+Θ1zt-s++ΘQzt-s×Q (4)
bt=zt+θ1bt-1++θqbt-q. (5)
Because the filtered series value bt depends on present and past values yt,yt-1,, there is a problem arising from ignorance of y0,y-1, which particularly affects calculation of the early values b1,b2,, causing ‘transient errors’. The method allows two possibilities.
(i) 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 vt being defined for t=1+d+s×D+s×P,,n. 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 bt.
(ii) The unknown values y0,y-1, 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 yt.
For efficiency, you are asked to supply both this ARIMA model for yt and a limited number of backforecasts which are prefixed to the known values of yt. Within the method further backforecasts of yt, and the series wt, ut, vt in (1), (2) and (3) are then easily calculated, and a set of linear equations solved for backforecasts of zt,bt for use in (4) and (5) in the case that q+Q>0.
Even if the best model for yt is not available, a very approximate guess such as
can help to reduce the transients substantially.
The backforecasts which need to be prefixed to yt are of length Qy=qy+sy×Qy, where qy and Qy are the non-seasonal and seasonal moving average orders and sy the seasonal period for the ARIMA model of yt. Thus you need not carry out the backforecasting exercise if Qy=0. Otherwise, the series y1,y2,,yn should be reversed to obtain yn,yn-1,,y1 and g13aj should be used to forecast Qy values, y^0,,y^1-Qy. The ARIMA model used is that fitted to yt (as a forward series) except that, if dy+Dy 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 yt supplied to the filtering method must however have the appropriate constant for the forward series.
The series y^1-Qy,,y^0,y1,,yn is then supplied to the method, and a corresponding set of values returned for bt.


Box G E P and Jenkins G M (1976) Time Series Analysis: Forecasting and Control (Revised Edition) Holden–Day

Error Indicators and Warnings

Errors or warnings detected by the method:
Some error messages may refer to parameters that are dropped from this interface (NPAR) In these cases, an error in another parameter has usually caused an incorrect value to be inferred.
On entry,nmr7 and nmr14.
On entry,the orders vector mr does not satisfy the constraints given in [Parameters].
On entry,ny is too small to successfully carry out the requested filtering, (see [Parameters]).
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 nmr=14.)
The initial values of the filtered series are indeterminate for the given models.
Internal memory allocation failed.
An error occured, see message report.
Negative dimension for array value
Invalid Parameters value


Accuracy and stability are high except when the MA parameters are close to the invertibility boundary.

Parallelism and Performance


Further Comments

If an ARIMA model is supplied, a local workspace array of fixed length is allocated internally by g13ba. The total size of this array amounts to K integer elements, where K is the expression defined in the description of the parameter wa.
The time taken by g13ba 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 296. It reads the univariate ARIMA 4,0,2,0,0,0,0 model and the ARIMA filtering 3,0,0,0,0,0,0 model for the series. Two initial backforecasts are required and these are calculated by a call to g13aj . The backforecasts are inserted at the start of the series and g13ba is called to perform the calculations.

Example program (C#): g13bae.cs

Example program data: g13bae.d

Example program results: g13bae.r

See Also