Moudle 5 Discussion ETS

Author

You-Jin,Tsai

1. Explanation of ETS Smoothing Parameters

In an ETS model, smoothing parameters determine how quickly the model updates its components based on new observations. These parameters generally range from 0 to 1. A value closer to 1 indicates that the model is highly sensitive and gives more weight to recent data, while a value closer to 0 means the model is more stable and relies heavily on historical averages.

  • Alpha (\(\alpha\)) - Level: Controls the rate at which the baseline (level) of the time series updates. A higher \(\alpha\) means the model adjusts its baseline rapidly to recent changes.
  • Beta (\(\beta\)) - Trend: Controls how quickly the trend (the slope or growth rate) updates. A lower \(\beta\) assumes a steady, long-term growth rate, whereas a higher \(\beta\) reacts quickly to recent shifts in the slope.
  • Gamma (\(\gamma\)) - Seasonality: Controls the flexibility of the seasonal pattern. A \(\gamma\) near 0 assumes the seasonal shape is identical every year, while a higher value allows the seasonal pattern to evolve over time.
  • Phi (\(\phi\)) - Damping Parameter (Tied to Beta): This parameter is directly related to the trend component controlled by \(\beta\). It is only applicable when a trend exists. Instead of controlling a learning rate, \(\phi\) acts as a “brake” on the trend over the forecast horizon. It gradually flattens the trend line to prevent unrealistic infinite growth or decline.

2. Visual Estimation vs. ETS Model Validation

library(fpp3)
library(fredr)
library(tidyverse)
library(patchwork)
library(knitr)
library(kableExtra)
library(writexl)
library(dplyr)
Sys.setlocale("LC_TIME", "en_US.UTF-8")

Example 1: Motor Vehicle Retail Sales: Domestic Autos (DAUTOSAAR)

Import Data

fredr_set_key("11c23965cf4414274d293d0c36ec7507") 

MVRS <- fredr(series_id = "DAUTOSAAR",
              observation_start = as.Date("2006-01-01"),
              observation_end   = as.Date("2025-12-01")
              ) |>
  transmute(Month = yearmonth(date), value) |>
  as_tsibble(index = Month)

Visual Estimation

MVRS %>% autoplot(value) +
  labs(
    title = "Time Series Plot of Domestic Auto Sales ",
    y = "Millions of Units",
    x = "Month"
  )

My Intuition: Looking at the time series plot of Domestic Auto Sales, here are my expectations for the smoothing parameters:

  • Alpha (\(\alpha\)): I expect this to be very high (close to 1). The data experiences massive, sudden structural breaks (e.g., the 2008-2009 financial crisis and the 2020 COVID-19 crash). The model will need to heavily rely on the most recent observations to quickly adjust its baseline level to these drastic macro-economic shocks.
  • Beta (\(\beta\)): I expect this to be low to moderate. While there is an overall downward trajectory, the slope changes directions across different economic cycles. A low \(\beta\) ensures the model doesn’t overreact and project a short-term steep drop forever.
  • Gamma (\(\gamma\)): I expect Gamma to be NULL (non-existent). Since this specific dataset is a Seasonally Adjusted Annual Rate , the seasonal component has already been mathematically removed prior to publication. The high-frequency “zig-zags” visible on the plot are merely random month-to-month noise, not a systematic seasonal pattern. Therefore, the ETS model should select “N” (None) for seasonality.
  • Phi (\(\phi\)): I strongly expect a damped trend here. Given the heavy downward slope in recent years, an undamped trend would unrealistically predict that auto sales will eventually drop below zero.

ETS Model Validation

# fit ETS model
fit_MVRS <- MVRS %>%
  model(ETS(value))

report(fit_MVRS)
Series: value 
Model: ETS(A,N,N) 
  Smoothing parameters:
    alpha = 0.8282815 

  Initial states:
     l[0]
 6.296392

  sigma^2:  0.0759

     AIC     AICc      BIC 
700.5771 700.6788 711.0190 

Intuition vs. Actual Model: The fpp3 algorithm automatically selected the ETS(A, N, N) model . Comparing this to my initial expectations yields interesting insights:

  • Alpha (\(\alpha = 0.828\)): Match. As predicted, \(\alpha\) is exceptionally high. This confirms my intuition that the model must rely heavily on the most recent observations to rapidly adjust its baseline level in response to massive, sudden economic shocks (like the 2008 and 2020 crashes).
  • Gamma (\(\gamma\) = None): Match. Because this is Seasonally Adjusted Annual Rate (SAAR) data, the algorithm correctly identified no seasonality (“N”), meaning \(\gamma\) is completely absent.
  • Beta (\(\beta\)) and Phi (\(\phi\)): Different. I originally expected a damped trend (Ad). However, the model selected “N” (No trend). Why did this happen? The algorithm determined that the “downward trajectory” I observed isn’t a continuous, underlying slope (\(\beta\)). Instead, the drops are sudden level shifts caused by macro-economic crises. Because \(\alpha\) is so high, the model handles these crashes by instantly dropping its baseline level, rather than modeling a downward slope. Since there is no trend component, there is naturally no damping parameter (\(\phi\)).

Example 2: All Employees, Retail Trade (CEU4200000001)

Import Data

CEU <- fredr(series_id = "CEU4200000001",
              observation_start = as.Date("2006-01-01"),
              observation_end   = as.Date("2025-12-01")
              ) |>
  transmute(Month = yearmonth(date), value) |>
  as_tsibble(index = Month)

Visual Estimation

CEU %>% autoplot(value) +
  labs(
    title = "Time Series Plot of US Retail Trade Employment ",
    y = "Thousands of Persons",
    x = "Month"
  )

My Intuition : Looking at the time series plot of US Retail Trade Employment, here is my visual assessment:

  • Alpha (\(\alpha\)): I expect \(\alpha\) to be relatively high. Similar to the auto sales data, this series suffers from massive macro-economic shocks (especially the sharp drop in early 2020). The model needs a high level-smoothing parameter to rapidly adjust its baseline to these sudden events.
  • Beta (\(\beta\)): I expect a positive, though perhaps small, \(\beta\). While the overall series is interrupted by recessions, there is a very clear and steady upward trajectory during economic expansions (e.g., from 2010 to 2019). The model should capture this as a Trend.
  • Gamma (\(\gamma\)): I expect \(\gamma\) to be extremely small (close to 0). There is an obvious and massive seasonal spike at the end of every year (holiday hiring in Nov-Dec, followed by a sharp drop in Jan). However, because this specific seasonal shape repeats almost identically every single year, the model can rely entirely on historical averages and doesn’t need to aggressively update the seasonal pattern.
  • Phi (\(\phi\)): Given the upward trend and the hard drop in 2020, I expect the model to apply a damped trend rather than projecting infinite linear job growth.

ETS Model Validation

# fit ETS model
fit_CEU <- CEU %>%
  model(ETS(value))

report(fit_CEU)
Series: value 
Model: ETS(A,N,A) 
  Smoothing parameters:
    alpha = 0.9998966 
    gamma = 0.0001000657 

  Initial states:
     l[0]     s[0]    s[-1]    s[-2]    s[-3]   s[-4]     s[-5]     s[-6]
 15407.69 521.4845 404.2835 30.04751 -110.348 -3.7101 0.2824626 -14.03567
     s[-7]    s[-8]     s[-9]    s[-10]    s[-11]
 -136.5185 -242.346 -179.1018 -210.7069 -59.33111

  sigma^2:  27013.23

     AIC     AICc      BIC 
3779.908 3782.051 3832.118 

Intuition vs. Actual Model: The fpp3 algorithm automatically selected the ETS(A, N, A) model. Comparing this to my initial visual assessment reveals fascinating insights about how the algorithm handles extreme structural breaks:

  • Alpha (\(\alpha = 0.9998\)): Match. The \(\alpha\) is virtually 1. This perfectly confirms my intuition. Because of the massive, sudden macroeconomic crashes (especially the 2020 drop), the model is forced to rely entirely on the most recent observation to instantly pull its baseline level down, ignoring long-term averages.
  • Gamma (\(\gamma = 0.0001\)): Match. As predicted, \(\gamma\) is practically 0. The model successfully recognized the additive seasonality (“A”), which clearly captures the massive holiday hiring spikes at the end of each year. Because this seasonal pattern repeats with an almost identical shape annually, the model uses a fixed seasonal component and does not need to update it, hence the near-zero \(\gamma\).
  • Beta (\(\beta\)) and Phi (\(\phi\)): Different. I visually identified an upward trajectory (e.g., from 2010 to 2019) and expected a Trend component. However, the model selected “N” (No trend). Why? Because \(\alpha\) is almost exactly 1, the model essentially acts as a “Seasonal Random Walk.” It doesn’t need a mathematical slope (\(\beta\)) to climb the 2010-2019 expansion; it simply updates its baseline to match the latest data point every single month. Furthermore, the massive 2020 crash completely breaks any long-term mathematical slope, making a “No Trend” model with an extremely reactive level the mathematically optimal choice to minimize errors (AICc).