Main Content

You can use a seasonal filter (moving average) to estimate the seasonal component of a time series. For example, seasonal moving averages play a large role in the X-11-ARIMA seasonal adjustment program of Statistics Canada [1] and the X-12-ARIMA seasonal adjustment program of the U.S. Census Bureau [2].

For observations made during period *k*, *k* = 1,...,*s* (where *s* is the known periodicity of the seasonality), a seasonal filter is a convolution of weights and observations made during past and future periods *k*. For example, given monthly data (*s* = 12), a smoothed January observation is a symmetric, weighted average of January data.

In general, for a time series *x _{t}*,

$${\tilde{s}}_{k+js}={\displaystyle \sum _{l=-r}^{r}{a}_{l}{x}_{k+(j+l)s}},$$ | (1) |

The two most commonly used seasonal filters are the stable seasonal filter and the *S _{n × m}* seasonal filter.

Use a stable seasonal filter if the seasonal level does not change over time, or if you have a short time series (under 5 years).

Let *n _{k}* be the total number of observations made in period

$${\tilde{s}}_{k}=\frac{1}{{n}_{k}}{\displaystyle \sum _{j=1}^{(N/s)-1}{x}_{k+js},}$$

for *k* = 1,...,*s*, and $${\tilde{s}}_{k}={\tilde{s}}_{k-s}$$ for *k* > *s*.

Define$$\overline{s}=(1/s){\displaystyle {\sum}_{k=1}^{s}{\tilde{s}}_{k}}.$$ For identifiability from the trend component,

Use $${\widehat{s}}_{k}={\tilde{s}}_{k}-\overline{s}$$ to estimate the seasonal component for an additive decomposition model (that is, constrain the component to fluctuate around zero).

Use $${\widehat{s}}_{k}={\tilde{s}}_{k}/\overline{s}$$ to estimate the seasonal component for a multiplicative decomposition model (that is, constrain the component to fluctuate around one).

To apply an *S _{n × m}* seasonal filter, take a symmetric

An *S*_{3×3} filter has five terms with weights

$$\left(1/9,2/9,1/3,2/9,1/9\right).$$

To illustrate, suppose you have monthly data over 10 years. Let *Jan _{yy}* denote the value observed in January, 20

$$\widehat{J}a{n}_{05}=\frac{1}{3}\left[\frac{1}{3}\left(Ja{n}_{03}+Ja{n}_{04}+Ja{n}_{05}\right)+\frac{1}{3}\left(Ja{n}_{04}+Ja{n}_{05}+Ja{n}_{06}\right)+\text{\hspace{0.17em}}\frac{1}{3}\left(Ja{n}_{05}+Ja{n}_{06}+Ja{n}_{07}\right)\right].$$

Similarly, an *S*_{3×5} filter has seven terms with weights

$$\left(1/15,2/15,1/5,1/5,1/5,2/15,1/15\right).$$

When using a symmetric filter, observations are lost at the beginning and end of the series. You can apply asymmetric weights at the ends of the series to prevent observation loss.

To center the seasonal estimate, define a moving average of the seasonally filtered series, $${\overline{s}}_{t}={\displaystyle {\sum}_{j=-q}^{q}{b}_{j}{\tilde{s}}_{t+j}}.$$ A reasonable choice for the weights are$${b}_{j}=1/4q$$ for *j* = ±*q* and $${b}_{j}=1/2q$$ otherwise. Here, *q* = 2 for quarterly data (a 5-term average), or *q* = 6 for monthly data (a 13-term average).

For identifiability from the trend component,

Use $${\widehat{s}}_{t}={\tilde{s}}_{t}-{\overline{s}}_{t}$$ to estimate the seasonal component of an additive model (that is, constrain the component to fluctuate approximately around zero).

Use $${\widehat{s}}_{t}={\tilde{s}}_{t}/{\overline{s}}_{t}$$ to estimate the seasonal component of a multiplicative model (that is, constrain the component to fluctuate approximately around one).

[1] Dagum, E. B. *The X-11-ARIMA Seasonal Adjustment Method*. Number 12–564E. Statistics Canada, Ottawa, 1980.

[2] Findley, D. F., B. C. Monsell, W. R. Bell, M. C. Otto, and B.-C. Chen. “New Capabilities and Methods of the X-12-ARIMA Seasonal-Adjustment Program.”
*Journal of Business & Economic Statistics*. Vol. 16, Number 2, 1998, pp. 127–152.