Lesson 1 - From ARIMA to SARIMA

Welcome to From ARIMA to SARIMA

Module 5 ended on a precise, measured failure: a non-seasonal ARIMA couldn’t beat a one-line seasonal baseline on Cyclepath, because it had no term for seasonality. The diagnosis pointed straight at the cure — give the model an explicit seasonal mechanism. That’s SARIMA: Seasonal ARIMA. It doesn’t replace anything you learned; it duplicates the ARIMA machinery at the seasonal lag, so the model can say “this month depends on its recent neighbors and on the same month a year ago.”

By the end of this lesson, you will be able to:

  • Read the full SARIMA(p,d,q)(P,D,Q)[s] notation
  • Explain what the seasonal period s is and how to choose it
  • Map each seasonal order (P, D, Q) to its non-seasonal twin (p, d, q)
  • Explain why the seasonal terms are the mechanism ARIMA lacked

Let’s read the notation.


The SARIMA Notation

A SARIMA model is written with two sets of orders:

SARIMA(p, d, q)(P, D, Q)[s]
       \_______/\_________/
      non-seasonal  seasonal
  • (p, d, q) — the familiar non-seasonal orders from Module 5: p AR terms, d differences, q MA terms, all operating at short lags (1, 2, 3, …).
  • (P, D, Q) — the seasonal orders (capital letters), applying the same three ideas but at the seasonal lag: P seasonal AR terms, D seasonal differences, Q seasonal MA terms.
  • [s] — the seasonal period: how many time steps make up one full cycle. For Cyclepath’s monthly data with a yearly pattern, s = 12.

So SARIMA(1, 1, 0)(1, 1, 0)[12] — the model this module builds toward — means: one non-seasonal AR term, one first difference, no non-seasonal MA; plus one seasonal AR term, one seasonal difference, no seasonal MA; with a 12-month season. Six numbers, but every one of them is an idea you already know, applied at one of two scales.

Choosing the seasonal period s

The period s is set by the calendar structure of your data, not estimated: 12 for monthly data with a yearly cycle (Cyclepath), 4 for quarterly data with a yearly cycle, 7 for daily data with a weekly cycle, 24 for hourly data with a daily cycle. It’s the same “how long is one full season” question you answered for seasonal differencing back in Module 3, and for the seasonal-naive baseline in Module 1. If a series has two seasonal cycles (e.g. daily hourly data with both daily and weekly patterns), plain SARIMA handles only one s — the more complex case needs extensions beyond this course’s classical scope.


Each Seasonal Term Mirrors Its Non-Seasonal Twin

The elegance of SARIMA is that the seasonal orders aren’t new concepts — they’re the Module 3 and Module 5 concepts applied a full cycle apart:

Non-seasonalSeasonalWhat the seasonal version means
d — difference vs. last periodD — difference vs. s periods agosubtract last year’s same month (Module 3’s seasonal differencing)
p — AR on recent valuesP — AR on values s apartthis July depends on last July’s value
q — MA on recent shocksQ — MA on shocks s apartthis July depends on last July’s shock

You’ve already met two of these directly. Seasonal differencing (D) is exactly y.diff(12) from Module 3 — the transformation that stationarized Cyclepath. And seasonal AR (P) is what Module 4’s preview model used: SARIMA(0,0,0)(1,1,0)[12], the seasonal-AR(1) that scored far better than any non-seasonal candidate on AIC. SARIMA just gives all six terms a single, unified home.

A large diagram of the notation SARIMA(p, d, q)(P, D, Q)[s]. The left group (p, d, q) is labeled 'non-seasonal: short lags 1, 2, 3...' in blue, with three small labels: p = AR on recent values, d = differences, q = MA on recent shocks. The right group (P, D, Q) is labeled 'seasonal: lag s apart' in orange, with P = AR on values s apart, D = seasonal differences, Q = MA on shocks s apart. The [s] is labeled 'season length: 12 for monthly-yearly'. A curved arrow connects each lowercase letter to its uppercase twin, showing they are the same idea at two scales.
SARIMA(p,d,q)(P,D,Q)[s]: the non-seasonal orders operate at short lags, the seasonal orders apply the identical AR/difference/MA ideas at the seasonal lag s. Every uppercase term is the lowercase idea, one full cycle apart.

Why This Is the Missing Piece

Module 5’s non-seasonal ARIMA failed on Cyclepath for a structural reason: its terms only reached back a few short lags, so it could model month-to-month persistence but had no way to connect July 2023 to July 2022 — twelve steps apart, far beyond any sensible non-seasonal p or q. You saw the desperate workaround: ARIMA(2,1,2) tried to synthesize a 12-month cycle by pushing its roots onto the unit circle, a fragile hack that triggered convergence warnings.

SARIMA’s seasonal terms make that connection directly and stably. A seasonal AR(1) term (P=1) explicitly relates each month to the same month one cycle earlier — no contortion required. That’s the entire reason SARIMA can beat the seasonal-naive baseline where ARIMA couldn’t: it has a term built for exactly the “same month last year” relationship the baseline exploits, and it can refine that relationship with the trend-and-persistence machinery of the non-seasonal part layered on top.


Practice Exercises

Exercise 1: Read a specification

What does SARIMA(0, 1, 1)(0, 1, 1)[12] mean, term by term?

Hint

Non-seasonal (0, 1, 1): no non-seasonal AR, one first difference (remove trend), one non-seasonal MA term (recent shock). Seasonal (0, 1, 1)[12]: no seasonal AR, one seasonal difference (subtract the same month 12 periods ago), one seasonal MA term (the shock from 12 periods ago), with a 12-month season. This particular specification is famous — it’s the “airline model” from Box and Jenkins’ original work, one of the most widely used seasonal models in practice, and you’ll compare against it later in this module.

Exercise 2: Pick the seasonal period

You have hourly electricity-demand data with a strong daily pattern (demand peaks every afternoon, dips every night). What seasonal period s should a SARIMA use?

Hint

s = 24 — one full daily cycle is 24 hourly observations, so the seasonal terms should connect each hour to the same hour one day (24 steps) earlier. This matches “how long is one full season” for this data: the pattern that repeats is daily, and there are 24 hours in a day. (Real electricity data often also has a weekly cycle, s=168; plain SARIMA can only model one seasonal period at a time, so you’d pick the dominant one — usually daily — for a classical SARIMA.)

Exercise 3: Why not just increase p?

If July depends on last July (12 months back), why not just fit a non-seasonal ARIMA with p = 12 to reach that lag, instead of using a seasonal term?

Hint

A non-seasonal p = 12 would force the model to estimate all twelve intermediate AR coefficients (lags 1 through 12) just to reach lag 12 — eleven of which you have no reason to believe matter, burning parameters and inviting overfitting on a short series. A seasonal AR term (P = 1) reaches lag 12 with a single coefficient, targeting exactly the seasonal relationship and nothing else. This parsimony is the whole point: SARIMA connects to the seasonal lag directly and cheaply, where a bloated non-seasonal model would connect to it wastefully, if at all. It’s the same “target the lag that matters” discipline from Module 4’s ACF/PACF reading.


Summary

A SARIMA model is written SARIMA(p, d, q)(P, D, Q)[s] — the familiar non-seasonal orders plus a seasonal set (P, D, Q) that applies the identical AR, differencing, and MA ideas at the seasonal lag s (12 for monthly-yearly data). Each seasonal term mirrors a non-seasonal twin: seasonal differencing D is Module 3’s y.diff(12), seasonal AR P is the “this July depends on last July” relationship Module 4’s preview used, and seasonal MA Q is the same for shocks. These seasonal terms are precisely the mechanism a non-seasonal ARIMA lacked — they connect each period to the same period one cycle earlier with a single coefficient, directly and stably, rather than the fragile unit-root workaround Module 5 exposed.

Key Concepts

  • SARIMA(p,d,q)(P,D,Q)[s] — non-seasonal orders plus seasonal orders at lag s.
  • Seasonal period s — set by the calendar (12 monthly, 4 quarterly, 7 daily-weekly, 24 hourly-daily), not estimated.
  • Seasonal terms mirror non-seasonal ones — D is seasonal differencing, P/Q are AR/MA at the seasonal lag.
  • Parsimony — a seasonal term reaches the seasonal lag with one coefficient, where a large non-seasonal p would waste eleven.

Why This Matters

SARIMA is where the entire course converges: the stationarity work (d and D), the ACF/PACF reading (p, q, P, Q), the seasonal period (s), and the ARIMA fitting machinery all combine into one model that can finally handle a series like Cyclepath properly. Understanding that the seasonal orders are just the non-seasonal ideas applied a cycle apart means SARIMA’s six-number notation isn’t six new things to learn — it’s two things you know, at two scales. Next, you’ll build the seasonal AR and MA terms concretely and see exactly what a seasonal coefficient says about the relationship between one season and the next.


Next Steps

Continue to Lesson 2 - Seasonal AR and MA Terms

Build the seasonal AR and MA terms concretely and see what a seasonal coefficient says about one cycle to the next.

Back to Module Overview

Return to the Seasonality: SARIMA module overview


Continue Building Your Skills

You now know the full SARIMA notation and that its seasonal orders are the non-seasonal ideas applied one cycle apart — the exact mechanism ARIMA lacked. Next you’ll build the seasonal AR and MA terms concretely, seeing how a seasonal-AR coefficient captures the relationship between this season and the last, and how seasonal differencing sets the stage for them.