1. Home
  2. MOVINGAVERAGE procedure

MOVINGAVERAGE procedure

Calculates and plots the moving average of a time series (R.P. Littlejohn, G. Tunnicliffe Wilson & D.B. Baird).

Options

PRINT = string token What to print (parameters); default * i.e. nothing
NSAMPLES = scalar Number of samples used to calculate each moving average
METHOD = string token How to calculate the averages (past, centred, exponential, filter, holtwinters) default past
ORDER = scalars Order for polynomial smoothing (0, 1, 2, 3, 4); default 0 i.e. ordinary moving-averages calculated from means
TRIM = string token Whether to trim transients with METHOD settings past or centre when ORDER=0 (yes, no); default no
PLOT = string token What to plot (components, movingaverages, predictions); default * i.e. nothing
ALPHA = scalar Allows the smoothing parameter for the contribution of the last value in the series to the moving average to be specified for the exponential or Holt-Winters methods
BETA = scalar Allows the smoothing parameter for the trend to be specified for the Holt-Winters method
GAMMA = scalar Allows the smoothing parameter for the seasonal component to be specified for the Holt-Winters method
MULTIPLICATIVE = string token Controls whether the seasonal component is multiplicative in the Holt-Winters method (yes, no); default no
NPREDICTIONS = scalar Number of predicted values to form for the Holt-Winters method; default is twice the number of levels of the SEASONAL factor, or 2 if SEASONAL is not set

Parameters

SERIES = variates Time series whose moving averages are required
MASERIES = pointers Saves the moving averages for the defined ORDER settings
TITLE = texts Title for the graph
SEASONAL = factors Factor for seasonal adjustment
SAVE = pointers Saves results from the Holt-Winters method or from seasonal adjustment

Description

MOVINGAVERAGE calculates and plots an unweighted or exponentially weighted moving average of a time series, or uses TFILTER with two-sided ARIMA smoothing of transients. This allows you to smooth out short-term volatility and assess longer-term trends or cycles in the data.

The method of averaging is specified by the METHOD option, with settings:

    past takes an unweighted average of past values (default);
    centred takes an average centred on the current value with the first and last values receiving weights of 0.5 when NSAMPLES is even;
    exponential takes an exponentially weighted average of past values;
    filter uses TFILTER to smooth the data, using a specially constructed ARIMA model; and
    holtwinters uses the Holt-Winters method; see Holt (1957) and Winters (1960).

The time series is specified, in a variate, using the SERIES parameter. The moving averages can be saved using the MASERIES parameter. They are saved in a pointer with a suffix for each setting of the ORDER option.

The SEASONAL factor can specify a factor to perform a seasonal adjustment of the moving average. The residuals (the observed values minus the moving average) are calculated and averaged for each level of the factor. These averages for each level are then subtracted from the corresponding units of the moving average, so that the mean residual for each level is now zero.

The NSAMPLES option specifies the number of data points that are used to calculate the moving average. When METHOD=exponential the weighting parameter can be specified by the ALPHA option. If this is unset, the default is calculated as

α = 2 / (NSAMPLES + 1).

In the filter method, most of the weight is spread over an NSAMPLES range centred upon each point. Outside this range, the weights go slightly negative before dying away.

With METHOD settings past or centre, the ORDER option can be used to request polynomial smoothing. The default is ORDER=0, which gives ordinary moving averages calculated from the means of the defined range of values. Alternatively, you can set ORDER to values in the range 1-4 to calculate the averages by fitting polynomials of those orders to the data values in the defined range. NSAMPLES should then be an integer greater than the requested ORDER. With these METHOD settings, the transients at either end of the series are trimmed by default, but they can be evaluated by setting option TRIM=yes.

The Holt-Winters method uses a weighted average of past estimates of the level and trend in estimating the current value. The smoothing parameters can be specified by the ALPHA and BETA options. These control the balance between past and current contributions to the estimates of the level and trend respectively. They must take a value between 0 and 1, and the closer they are to zero, the less the current value contributes to the estimate, giving greater smoothing of the series. When the SEASONAL parameter is set, the Holt-Winters moving average uses a weighted estimate of the seasonal effects. The smoothing parameter that controls the balance between past and current contributions to the seasonal effects can be specified by the GAMMA option. If the parameters are not specified, their values are estimated by minimizing the prediction sums of squares. You can set option PRINT=parameters to print the values of the parameters. By default, the seasonal component is used in an additive model

estimate = level + trend + season

but you can set option MULTIPLICATIVE=yes to use a multiplicative model

estimate = (level + trend) × season.

When METHOD=holtwinters, the NPREDICTIONS option specifies the number of predicted points to form at the end of the original series. The default is twice the number of levels of the SEASONAL factor, or two if SEASONAL is not set.

The graphs that are produced by MOVINGAVERAGE are controlled by the PLOT option, with settings:

    components to plot the separate components (trend, level and season) of the estimate from a Holt-Winters or a seasonal model,
    movingaverages to plot the moving averages, together with the original series, and
    predictions to plot the predicted values with 95% confidence limits at the end of the series for a Holt-Winters model.

By default nothing is plotted. The TITLE parameter can supply a title for the graphs. The default is to construct a title automatically from the name of the series variate and the type of moving average.

The SAVE parameter allows you to save a pointer with results from the Holt-Winters method or from seasonal adjustment. For Holt-Winters, the pointer has elements 'Level', 'Trend', 'Season' (if SEASONAL is set), 'Parameters' and, if NPREDICTIONS is greater than zero, 'Lower', and 'Upper'. With other seasonal adjustment models, it has elements for 'Trend', 'Season'. However, if polynomial smoothing is being used, the pointer has two levels of suffix, with these at the second level, and the polynomial components as the first level.

Options: PRINT, NSAMPLES, METHOD, ORDER, TRIM, PLOT, ALPHA, BETA, GAMMA, MULTIPLICATIVE, NPREDICTIONS.

Parameters: SERIES, MASERIES, TITLE, SEASONAL, SAVE.

Method

The procedure uses MODEL and FIT to do polynomial smoothing. The filter setting uses an ARIMA model with forward and backward filtering, to implement a Wiener signal extraction procedure in a similar manner to the example of the TFILTER directive illustrated in Example 7.6.1b of the Guide to the Genstat Command Language, Part 2 Statistics.

The filter is designed to estimate a regularly sampled continuous time integrated random walk (the signal), to which random noise has been added. At the sampled points the signal follows an ARIMA(0,2,1) process, and the observations follow an ARIMA(0,2,2) process. The parameters of these processes depend on the signal to noise ratio, which is imputed from the specified value of NSAMPLES. An important aspect of the implementation is that the assumed stochastic properties of the signal allow one to reduce the end effect (transients) by implicit forecasting and backforecasting, to get a fully optimal filter for the finite set of observations. The result is, in fact, exactly equivalent to fitting a cubic smoothing spline with knots at each observation point. Example 7.6.1b in the Guide implements a similar filter, but for a signal that follows the more simple random walk process, and the result is a two-sided exponential smoother that is equivalent to a linear smoothing spline. To be effective, the assumed model does not have to be correct. The procedure just removes high frequency variations with relatively small distortion of the lower frequency variations, the cut off between high and low frequencies being determined by the setting of NSAMPLES.

For the Holt-Winters model, the prediction sum of squares is minimized by FITNONLINEAR using functions in CurveFuncs.dll, if this is available in the version of Genstat that is being used. Otherwise, or if FITNONLINEAR does not find a solution, it is minimized by the MINIMIZE procedure. The calculations are then done by procedures _HWNFUNCTION, _HWAFUNCTION and _HWMFUNCTION, that are subsidiary procedures of MOVINGAVERAGE

Action with RESTRICT

Restrictions are not permitted.

References

Holt, C.C. (1957).  Forecasting trends and seasonals by exponentially weighted moving averages. ONR Research Memorandum, 52.

Winters, P.R. (1960). Forecasting sales by exponentially weighted moving averages. Management Science, 6, 324–342.

 

See also

Commands for: Time series.

Example

CAPTION       'MOVINGAVERAGE example',\
              !t('Annual measurements of Central England Average Temperature:',\
              'data from Manley, G. (1974), Central England temperatures:',\
              'monthly means 1659-1973, Quart.J.Met.Soc., 100, 378-405.',\
              'See the Guide to Genstat, Part 2 Statistics, Example 7.6.');\
              STYLE=meta,plain
VARIATE       [NVALUES=315] Cetave
OPEN          '%GENDIR%/Examples/GuidePart2/Cetave.dat'; 3
READ          [CHANNEL=3] Cetave
CLOSE         3
MOVINGAVERAGE [NSAMPLES=12; METHOD=centre; PLOT=movingaverage] Cetave;\
              MASERIES=Centre
MOVINGAVERAGE [NSAMPLES=12; METHOD=exponential; PLOT=movingaverage] Cetave;\
              MASERIES=Exponential
MOVINGAVERAGE [NSAMPLES=12; METHOD=filter; PLOT=movingaverage] Cetave;\
              MASERIES=Filter
PRINT         Cetave,Centre[],Exponential[],Filter[]
Updated on June 19, 2019

Was this article helpful?