ETS

ETS equations; Smoothing

Author

AS

1 What Is the ETS Model?

Understand the structure of ETS, the role of each component, and the critical distinction between error and level.

1.1 Error–Trend–Seasonality: The Framework

ETS stands for Error–Trend–Seasonality and is a state space exponential smoothing framework.

\[\textbf{ETS}(E,\ T,\ S)\]

Letter Component Options
E Error type A = Additive, M = Multiplicative
T Trend type N = None, A = Additive, Ad = Damped, M = Multiplicative
S Seasonality N = None, A = Additive, M = Multiplicative

Example: ETS(A, A, A) = additive error, additive trend, additive seasonality.

1.2 The Three Latent States

A latent state is an unobserved, underlying variable or hidden condition that explains patterns in observable data. It represents a “hidden” state that is not directly measured but can be inferred.

1.2.1 1. Level \((\ell_t)\)

The underlying baseline at time \(t\). > “Where is the series right now?”

1.2.2 2. Trend \((b_t)\)

The slope of the level. > “How fast is it increasing or decreasing?”

1.2.3 3. Seasonality \((s_t)\)

The repeating pattern across seasons of length \(m\). > “Quarterly bump? Monthly dip?”

1.3 Additive vs. Multiplicative Error

  1. Additive: \(y_t = \text{structure} + \varepsilon_t\) — noise size does NOT depend on the level. > Beer production fluctuates ±10 units regardless of scale.

  2. Multiplicative: \(y_t = \text{structure} \times (1 + \varepsilon_t)\) — noise GROWS with the level. > Sales fluctuate ±10% of current level.

1.4 Full Example: ETS(A, A, A)

Observation equation: \[y_t = \ell_{t-1} + b_{t-1} + s_{t-m} + \varepsilon_t\]

State updates: \[\ell_t = \ell_{t-1} + b_{t-1} + \alpha\,\varepsilon_t\] \[b_t = b_{t-1} + \beta\,\varepsilon_t\] \[s_t = s_{t-m} + \gamma\,\varepsilon_t\]

Important

Error \(\varepsilon_t\) drives the updating of level, trend, and seasonality. Error is the learning signal — it is not the same as the level.

1.5 Level vs. Error

Concept Meaning Deterministic?
Level Underlying baseline Yes (state)
Trend Slope Yes (state)
Seasonality Cyclical pattern Yes (state)
Error Random shock No

\[\text{Observed} = \underbrace{\text{Level + Trend + Seasonality}}_{\text{Structure}} + \underbrace{\varepsilon_t}_{\text{Error}}\]

1.6 R Code: Fitting ETS with aus_production

library(fpp3)
Registered S3 method overwritten by 'tsibble':
  method               from 
  as_tibble.grouped_df dplyr
── Attaching packages ──────────────────────────────────────────── fpp3 1.0.2 ──
✔ tibble      3.3.0     ✔ tsibble     1.1.6
✔ dplyr       1.1.4     ✔ tsibbledata 0.4.1
✔ tidyr       1.3.1     ✔ feasts      0.4.2
✔ lubridate   1.9.4     ✔ fable       0.4.1
✔ ggplot2     4.0.0     
── Conflicts ───────────────────────────────────────────────── fpp3_conflicts ──
✖ lubridate::date()    masks base::date()
✖ dplyr::filter()      masks stats::filter()
✖ tsibble::intersect() masks base::intersect()
✖ tsibble::interval()  masks lubridate::interval()
✖ dplyr::lag()         masks stats::lag()
✖ tsibble::setdiff()   masks base::setdiff()
✖ tsibble::union()     masks base::union()
fit <- aus_production |>
  filter(year(Quarter) >= 1992) |>
  model(
    ETS_AAA  = ETS(Beer ~ error("A") + trend("A") + season("A")),
    ETS_auto = ETS(Beer)
  )

fit |> report()
Warning in report.mdl_df(fit): Model reporting is only supported for individual
models, so a glance will be shown. To see the report for a specific model, use
`select()` and `filter()` to identify a single model.
# A tibble: 2 × 9
  .model       sigma2 log_lik   AIC  AICc   BIC   MSE  AMSE    MAE
  <chr>         <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 ETS_AAA  165.         -344.  706.  709.  727.  147.  149. 9.45  
2 ETS_auto   0.000854   -344.  702.  704.  718.  155.  155. 0.0217
fit |>
  forecast(h = 8) |>
  autoplot(aus_production |> filter(year(Quarter) >= 1992))


2 Why Is “Level” Not in the ETS Name?

Confusion between the ETS naming convention and the actual model structure.

2.1 The Confusion

“Level, trend, seasonality are the structural components — but ETS stands for Error–Trend–Seasonality. Where is level? There’s no one-to-one mapping!“

2.2 What ETS Actually Means

ETS does not mean: \[\text{Observed} = \text{Error} + \text{Trend} + \text{Seasonality}\]

It means the model is classified by:

Letter What it controls
E Stochastic form — how noise enters
T Trend structure — type and shape
S Seasonal structure — type and shape

Level is not in the name because level is always present.

2.3 Level Is the Implicit Backbone

Even the simplest ETS model — simple exponential smoothing ETS(A, N, N) — has a level:

\[y_t = \ell_{t-1} + \varepsilon_t\] \[\ell_t = \ell_{t-1} + \alpha\,\varepsilon_t\]

There is no ETS model without a level.

Note

Naming logic: Trend and seasonality are optional (can be N). Level is mandatory. It goes without saying.

2.4 The Regression Analogy

Consider: \[y = X\beta + \varepsilon\]

We don’t call this the “Error–Slope model” even though error and slope both appear. The intercept is implicit. Same logic: level is implicit in ETS.

2.5 The Correct Mental Model

TipReframe this

Wrong: ETS = Error + Trend + Seasonality (three additive pieces)

Right: ETS = (Error form) + (Trend type) + (Seasonality type) with level always implicit as the core state

2.6 Common Student Confusions

Misconception Correction
“Error = residual” Error is structural — it drives state updates
“Trend is deterministic” Trend is an evolving state, updated by error
“Level must be in the name” Level is mandatory and implicit
“ETS = additive decomposition” ETS is a state space model, not static decomposition

2.7 Final Take-Home Message

Important

ETS naming is a classification of stochastic form and structural components — not a decomposition into additive pieces.

There is no missing level. Level is assumed. It is the backbone of every exponential smoothing model.

3 Types of Smothing

Data smoothing techniques reduce noise and volatility in time-series or sequential data to reveal underlying trends and patterns. Selection depends on data characteristics (seasonality, trend) and goals, with methods ranging from simple moving averages (equal weight) to exponential smoothing (weighted recent data). Common techniques include moving averages, exponential smoothing, and random walk models.

Key Data Smoothing Techniques

Selection Factors

  • Presence of Seasonality: Use Holt-Winters or seasonal adjustment methods.

  • Trend Importance: Use Double Exponential Smoothing for trends.

  • Noise Level: High volatility often requires broader smoothing windows.

  • Goal: Identifying long-term trends vs. short-term forecasting.

Data smoothing helps identify patterns in finance, economics, and technical analysis.

Summary of Selection

  • No Trend/Seasonality: Simple Moving Average or Simple Exponential Smoothing.

  • Trend Present: Double Exponential Smoothing (Holt’s).

  • Trend & Seasonality: Triple Exponential Smoothing (Holt-Winters).

Important

my_data <- read.table(pipe("pbpaste"), sep = "\t", header = TRUE)
Warning in read.table(pipe("pbpaste"), sep = "\t", header = TRUE): incomplete
final line found by readTableHeader on 'pbpaste'
str(my_data)
'data.frame':   0 obs. of  1 variable:
 $ ETS_parameters: logi