Seasonal ARIMA (SARIMA)

Retail sales spike every December. Electricity demand climbs every summer. Airline passenger numbers surge each holiday season, year after year. These series carry a pattern that ordinary ARIMA is blind to: a value in December is tied not just to November, but to last December — a dependence that jumps a whole period of s=12 months at a stride. Differencing month-to-month never removes it. We need a model that reaches back a full season.

Seasonal ARIMA, written SARIMA(p,d,q)(P,D,Q)_s, does exactly that. It bolts a second, seasonal ARIMA — operating at the seasonal lag s instead of lag 1 — onto the ordinary one, and multiplies them together. The lower-case orders (p,d,q) handle the short-range, month-to-month dynamics; the upper-case orders (P,D,Q) handle the year-to-year seasonal dynamics.

Seasonal differencing and seasonal polynomials

The engine is the same backshift operator B, but raised to the seasonal power. The seasonal difference is

\nabla_s\, x_t = (1 - B^{s})\,x_t = x_t - x_{t-s},

the change from this month to the same month a year ago — precisely the operation that annihilates a stable annual pattern, just as seasonal adjustment removes it by other means. Alongside it come seasonal AR and MA polynomials in B^{s}:

\Phi(B^{s}) = 1 - \Phi_1 B^{s} - \dots - \Phi_P B^{Ps}, \qquad \Theta(B^{s}) = 1 + \Theta_1 B^{s} + \dots + \Theta_Q B^{Qs}.

The full model simply multiplies the seasonal and non-seasonal operators on each side — a multiplicative structure:

Multiplying the polynomials out generates coefficients at lags like 1, s-1, s, s+1 automatically — the model "knows" that a shock ripples into the neighbouring months of the next season, without you specifying each one. That parsimony is the whole point.

Seeing it work

Below, the upper curve is a monthly series with both a gentle upward trend and a strong repeating annual wave. The lower curve is its seasonal difference x_t - x_{t-12}. In one stroke the seasonal difference erases both the annual wave and most of the trend, leaving a series that hovers around a constant — ready for an ordinary ARMA to finish the job.

The seasonal fingerprint is even clearer in the autocorrelation function: a seasonal series shows big ACF spikes at the seasonal lags s, 2s, 3s, \dots — here at 12 and 24 — riding above the ordinary short-lag structure.

Those tell-tale spikes are exactly what you read off to decide the seasonal orders, the same way the ordinary PACF pins down p.

Worked example: the airline model

The most famous SARIMA of all is Box and Jenkins' analysis of monthly international airline passengers — the "airline model", SARIMA(0, 1, 1)(0, 1, 1)_{12}. Let us read every symbol:

OrderValueMeaning
d = 1one ordinary differenceremoves the trend in the level
D = 1one seasonal difference (lag 12)removes the repeating annual pattern
q = 1ordinary MA(1)month-to-month shock dependence
Q = 1seasonal MA(1), lag 12year-to-year shock dependence
p = P = 0no AR termsall dynamics captured by the two MA terms

Its equation is strikingly compact:

(1-B)(1-B^{12})\,x_t = (1 + \theta_1 B)(1 + \Theta_1 B^{12})\,\varepsilon_t.

Two differences, two MA parameters — just \theta_1 and \Theta_1 — and it captures the behaviour of a genuinely complicated 12-year monthly series. Because it so often fits seasonal data well with minimal parameters, the airline model is the standard first thing to try on any monthly series and a benchmark that automated procedures still race against.

A common slip is to read SARIMA(0,1,1)(0,1,1)_{12} as "an MA(1) plus a separate MA(13)". It is not a sum — the seasonal and non-seasonal MA polynomials are multiplied: (1+\theta_1 B)(1+\Theta_1 B^{12}) = 1 + \theta_1 B + \Theta_1 B^{12} + \theta_1\Theta_1 B^{13}. Notice the cross term at lag 13 with coefficient \theta_1\Theta_1: the multiplicative form forces a specific relationship between the lag-13 effect and the product of the lag-1 and lag-12 effects. That constraint is a feature — it is what keeps the model parsimonious — but if you mentally treat the terms as independent you will mis-count the parameters and misread the fitted ACF.

Not necessarily. Seasonality can be deterministic (a rock-steady pattern, best handled with seasonal dummy variables) or stochastic (a pattern that itself drifts and evolves, which is what the seasonal difference (1-B^{12}) is for). Over-applying seasonal differencing to a fixed, deterministic season injects the same kind of spurious non-invertible term that ordinary over-differencing does. The tell: if the seasonal pattern's shape and size are essentially unchanged across years, prefer dummies; if it wanders, seasonally difference. As always, the fewest differences that do the job.