Skip to content
Time Seriesintermediate

Seasonality in Time Series

Many series show seasonality, a pattern that repeats at fixed points in the year, such as retail sales peaking each December. Left unmodeled, seasonal swings can mask the relationship you care about. The standard fix is a set of seasonal dummy variables, one for each season minus the base category, added to the regression. Including them is equivalent to deseasonalizing the data, so the remaining coefficients describe the relationship after the regular calendar pattern has been removed. With monthly data you add eleven month dummies; with quarterly data, three quarter dummies.

Why it matters

Ice-cream sales jump every summer whether or not anything economic changes. If you ignore that, a regression confuses the summer bump with the effect of your variable of interest. Seasonal dummies give each season its own intercept shift, so the model already "knows" that December is high and February is low, leaving the slopes to capture the part that is not just the calendar.

Formulas

Quarterly seasonal dummy model
yt=β0+γ2Q2t+γ3Q3t+γ4Q4t+β1xt+uty_t = \beta_0 + \gamma_2 Q2_t + \gamma_3 Q3_t + \gamma_4 Q4_t + \beta_1 x_t + u_t
Q1 is the omitted base; each gamma shifts the intercept for that quarter relative to Q1.
Number of seasonal dummies
s1s - 1
For s seasons (s = 4 quarterly, s = 12 monthly), use s minus 1 dummies to avoid the dummy variable trap.

Worked examples

Scenario

You model monthly housing starts and suspect strong seasonal effects across the calendar.

Solution

With `tsset date, monthly`, use factor-variable notation to generate month dummies automatically: `regress starts rate i.month, robust`. Stata omits one month as the base. The coefficient on `rate` is now the effect net of seasonality, and you can test joint seasonality with `testparm i.month`.

Note`i.month` builds the s minus 1 seasonal dummies for you and keeps a base category, avoiding the dummy variable trap.

Common mistakes

  • You need one dummy for every season. You include s1s-1 dummies and leave one season as the base, otherwise you hit the dummy variable trap.
  • Seasonal dummies remove the trend as well. They handle the repeating calendar pattern only; a separate time trend is still needed for drift.
  • Already-seasonally-adjusted data still need seasonal dummies. If the series is already deseasonalized, adding dummies is unnecessary and can even distort results.
  • Seasonality is the same problem as serial correlation. Seasonality is a deterministic calendar pattern; serial correlation is dependence in the error term, and the two are handled differently.

Revision bullets

  • Seasonality is a repeating calendar pattern within the year
  • Model it with seasonal dummy variables
  • Use s1s-1 dummies with one season as the base
  • Including the dummies deseasonalizes the data
  • Stata’s `i.month` or `i.quarter` builds the dummies automatically

Quick check

To capture seasonality in quarterly data, how many seasonal dummy variables do you include?

Adding a full set of seasonal dummy variables to a regression is equivalent to:

Connected topics

Sources

  1. Wooldridge (2019), §10.5
    Wooldridge, Jeffrey M. Introductory Econometrics: A Modern Approach. 7th ed. Cengage, 2019.
    Introduces seasonality and the use of seasonal dummy variables to deseasonalize a regression.
  2. Hyndman, R.J., and G. Athanasopoulos. Forecasting: Principles and Practice. 3rd ed. OTexts, 2021.
    Accessible treatment of seasonal components and seasonal adjustment, complementing the regression-dummy approach.
How to cite this page
Dr. Phil's Quant Lab. (2026). Seasonality in Time Series. Derivatives Atlas. https://phucnguyenvan.com/concept/efm-seasonality