Forms preliminary estimates of parameters in time-series models.
|What to print (
||Models whose parameters are to be estimated|
||Auto- or cross-correlations on which to base estimates for each model|
||Box-Cox transformation parameter|
TFIT directive carries out a lot of computation to find the best estimates of the parameters of a time-series model. The amount of computation can be reduced if you provide rough initial values for the parameters, especially when there are many of them. This can be done using the
FTSM obtains moment estimators of a simple kind, by solving equations between the unknown parameters of the ARIMA or transfer-function model and the autocorrelations or cross-correlations calculated from the observed time series. Sometimes these equations have no solution, or their solution provides values inconsistent with the constraints demanded of the parameters. If so, Genstat sets the corresponding parameters to missing values. The form of the directive is the same for ARIMA and transfer-function models, but the interpretation is slightly different.
To obtain preliminary estimates of ARIMA model parameters, a typical
FTSM statement might be
FTSM [PRINT=model] Yatsm; CORRELATIONS=Yacf; BOXCOX=Ytran;\
You must previously have declared
Yatsm to be a
TSM structure (i.e. a time-series model structure) of type
ARIMA with appropriate orders, and lags if you need to specify them. Genstat takes this model to be associated with observations of a time series yt. The aim of the directive is to set the values of the variate of model parameters equal to preliminary estimates derived from the variate
Yacf and scalars
Yacf should contain sample autocorrelations r0 … rm. You should obtain these from the original time series, stored in variate
Y say, by first using the
CALCULATE directive to transform
Y according to the Box-Cox equations with transformation parameter
Ytran (if you do indeed want a transformation). You should then form the differences of the transformed series, according to the degrees of differencing already set in the model; you can use the
DIFFERENCE function with the
CALCULATE directive for this. Finally, you should use the
AUTOCORRELATIONS parameter of the
CORRELATE directive to store the autocorrelations of the resulting series in
Yacf. Often you will have done these operations already in order to produce
Yacf for selecting a model.
At the same time, you can supply the scalars
Yvar to set the first three elements of the parameters variate of
Yatsm; these cannot be set using
Yacf alone. The scalar
Ytran should be the parameter used to transform
Y, and Genstat will copy it into the first element of the variate of parameters. Genstat will copy the scalar
Ymean into the second element, which is the constant term of the model; the recommended value for this is the sample mean of the series from which
Yacf is calculated, but you may prefer the value 0. The scalar
Yvar is used to set the innovation variance, which is the third element of the variate of parameters. The recommended value is the sample variance of the series from which
Yacf is calculated. If you set
Yvar to 1.0, then Genstat will set the innovation variance to the variance ratio Variance(e)/Variance(y), as estimated from
Yacf according to the model.
If any of the
VARIANCE parameters is not set, Genstat will leave unchanged the corresponding value in the variate of parameters of the model. The only exception to this rule is if a parameter is missing. Then Genstat initially sets the transformation parameter to 1.0 (corresponding to no transformation), and the constant to 0.0; the innovation variance is left missing.
FTSM statement for a transfer-function model might be
FTSM [PRINT=model] Xytsm; CORRELATIONS=Xyccf; BOXCOX=Xtran;\
You must previously have declared the time-series model
Xytsm to be of type
transferfunction with appropriate orders, and lags if you need to specify them. Genstat assumes that this model represents the dependence of an output series yt on an input series xt in a multi-input model. The directive sets the values of the parameters of the model equal to preliminary estimates derived from
You should put into the variate
Xyccf an estimate of the impulse-response function of the model, from which Genstat will derive the parameters. This estimate is usually a sample cross-correlation sequence r0 … rm obtained from variates
X1 containing observations of yt and xt according to one of the following four rules:
(a) In the simple case, the differencing orders of
Xytsm are all zero, and you do not want to use any Box-Cox transformation of either yt or xt. Then the cross-correlations should be those between variates
Beta, say, derived from
Y by filtering (or pre-whitening), see the
TFILTER directive. The ARIMA model that you used for the filter should be the same for
Y, and you should choose it so that the values of
Alpha represent white noise.
(b) If the differencing orders of
Xytsm are not zero, then before you calculate the cross-correlations you should further difference the series
Beta as specified by these orders.
(c) If a Box-Cox transformation is associated with yt, you should apply it to
Y before the filtering. However this transformation parameter must not be associated with
Xytsm: you should assign it to the univariate ARIMA model that you have specified for the error term.
(d) If a Box-Cox transformation is associated with xt, it must be the same as the one you used in the ARIMA model for xt from which the series
Alpha was derived. The scalar
Xtran must contain this transformation parameter. Genstat copies it into the first element of the parameter variate of
Xytsm. If the Box-Cox parameter is unset, Genstat leaves the transformation parameter of
Xytsm unchanged; it is set to 1.0 if it was originally missing.
Genstat copies the scalar
Xmean into the second element of the variate of parameters. The recommended value is the sample mean of
X after any transformation has been applied. If you do not set the
CONSTANT parameter, Genstat leaves the constant parameter of
Xytsm unchanged; it is set to 0.0 if it was originally missing.
You use the scalar
Xyvratio to obtain the correct scaling of non-seasonal moving-average parameters in
Xytsm. All the other autoregressive parameters and moving-average parameters are invariant under scale changes in yt and xt. You should set the scalar to the ratio of the sample variances of the variates from which the cross-correlations were calculated; that is, Variance(
Alpha). If you do not set this, Genstat uses the value 1.0.
You can use
FTSM to go backwards from autocorrelations to the original time-series model. If you apply it to the autocorrelations that were constructed from a time-series model by means of
TSUMMARIZE, it will recover the parameters of the model exactly, provided the model is non-seasonal. If the model contains seasonal parameters, with seasonal period s, the parameters will not be recovered exactly, except in one special circumstance: that is, when the non-seasonal part of the model, considered in isolation from the seasonal part, has a theoretical autocorrelation function that is zero beyond lag s/2. Otherwise, the non-seasonal and seasonal parts of the model interact, and so Genstat loses accuracy in the recovered parameters. When you use sample autocorrelations, this loss of accuracy tends to be small in comparison with the sampling fluctuations of the estimates. But if s is small, say s=4 for quarterly data, the loss could be serious. Exactly the same considerations apply to transfer-function models.
Commands for: Time series.
" Example TFIT-1: Fitting a seasonal ARIMA model" VARIATE time; VALUES=!(1...120) FILEREAD [NAME='%gendir%/examples/TFIT-1.DAT'] apt " Display the correlation structure of the logged data" CALCULATE lapt = LOG(apt) BJIDENTIFY [GRAPHICS=high; WINDOWS=!(5,6,7,8)] lapt " Calculate the autocorrelations of the differences and seasonally differenced series" CALCULATE ddslapt = DIFFERENCE(DIFFERENCE(lapt; 12); 1) CORRELATE [PRINT=auto; MAXLAG=48] ddslapt; AUTO=ddsr " Define a model for the series: IMA(1) (that is, a model with a single moving-average parameter applied to the differences of the series) plus a seasonal IMA(1) component" TSM [MODELTYPE=arima] airpass; ORDERS=!((0,1,1)2,12) " Form preliminary estimates of the parameters, using a log transformation (BOXCOX=0 is equivalent to log)" FTSM [PRINT=model] airpass; ddsr; BOXCOX=0 " Get the best estimates, fixing the constant" TFIT [CONSTANT=fix] SERIES=apt; TSM=airpass " Graph the residuals against time" TKEEP RESID=resids DGRAPH [WINDOW=3; KEYWINDOW=0; TITLE='Residuals vs Time'] resids; time " Test the independence of the residuals" CORRELATE [GRAPH=auto; MAXLAG=48] resids; TEST=S PRINT 'Test statistic for independence of the residuals',S