Exponential Smoothing (ETS) Parameters
What is an ETS Model?
ETS stands for Error, Trend, Seasonality in
fpp3It is a family of exponential smoothing models.
Exponential Smoothing models generate forecasts by giving more weight to recent observations while still considering the whole history of the series.
“Exponential” = the weights applied to past observations decline exponentially as you go back in time.
“Smoothing” = we’re smoothing out random noise to extract the underlying level, trend, and seasonality of the series.
- The four ETS smoothing parameters govern how the Exponential Smoothing models update their internal components based on new data. They are typically estimated from the data to maximize forecast accuracy.
| Symbol | Name | Component Controlled | Intuition |
|---|---|---|---|
| \(\alpha\) | Alpha | Level | Trust in the most recent observation for the baseline. |
| \(\beta\) | Beta | Trend | How much the slope/direction changes each period. |
| \(\gamma\) | Gamma | Seasonality | How much the seasonal pattern is allowed to shift or evolve. |
| \(\phi\) | Phi | Damping | Whether the trend continues forever (\(\phi=1\)) or gradually flattens out (\(\phi<1\)). |
-
Level is the baseline or average value of a series at a given time (the “height” where the series sits).
Trend is the slope or direction of change in the level over time (upward, downward, or flat). - Level answers “where are we now?” Trend answers “are we moving up, down, or staying steady?”
The maximum number of smoothing parameters used in an ETS model is four (\(\alpha, \beta, \gamma, \phi\)), but simpler models use fewer.
- Parameter Usage by Model - Not all ETS models utilize all four parameters. Simpler models only use the parameters corresponding to the components they include.
| Model Name | ETS Notation | Parameters Used |
|---|---|---|
| Simple Exponential Smoothing | \(\text{ETS}(\text{A,N,N})\) | \(\alpha\) |
| Holt’s Linear Trend | \(\text{ETS}(\text{A,A,N})\) | \(\alpha\), \(\beta\) |
| Holt–Winters Seasonal | \(\text{ETS}(\text{A,A,A})\) | \(\alpha\), \(\beta\), \(\gamma\) |
| Damped Holt–Winters | \(\text{ETS}(\text{A,A}_{\text{d}}\text{,A})\) | \(\alpha\), \(\beta\), \(\gamma\), \(\phi\) |
- The core of Exponential Smoothing (ETS) models lies in the smoothing parameters/weights (\(\alpha\), \(\beta\), and \(\gamma\)), which governs how quickly the model updates the estimates.
-
All parameters are constrained to values between \(0\) and \(1\).
- High values (close to 1): The model reacts quickly to recent changes, making it more responsive but potentially more volatile.
- Low values (close to 0): The model reacts slowly, resulting in a smoother estimate that may lag behind sudden changes.
- For \(\phi\), it’s also between 0 and 1, but it isn’t a “smoothing weight” in the same sense — it’s a trend dampening factor.
-
All parameters are constrained to values between \(0\) and \(1\).
While there aren’t strict universal cutoffs, here are commonly used guidelines in practice for interpreting the smoothing parameters (\(\alpha\), \(\beta\), \(\gamma\)) and the damping parameter (\(\phi\)).
| Parameter | Function | Low (Stable) | Medium (Balanced) | High (Responsive) |
|---|---|---|---|---|
| \(\alpha\) (Alpha) | Level Smoothing | 0.0 - 0.3 (Conservative) | 0.3 - 0.7 | 0.7 - 1.0 (Adaptive) |
| \(\beta\) (Beta) | Trend Smoothing |
0.0 - 0.2 (Stable Trend) |
0.2 - 0.5 | 0.5 - 1.0 (Responsive Trend) |
| \(\gamma\) (Gamma) | Seasonal Smoothing |
0.0 - 0.3 (Stable Seasonality) |
0.3 - 0.6 | 0.6 - 1.0 (Responsive Seasonality) |
\(\phi\) (Phi) — Damping Parameter
The \(\phi\) parameter controls whether the estimated trend slows down over the forecast horizon.
- No damping: \(\phi = 1.0\) (Trend continues linearly forever)
- Light damping: \(0.9 - 0.99\)
- Moderate damping: \(0.8 - 0.9\)
- Strong damping: \(0.5 - 0.8\)
Context-Dependent Cutoffs
The optimal parameter values often depend on the context and data frequency:
- Academic Literature: Often uses \(0.5\) as the dividing line between “low” and “high.”
- High-Frequency Data (Daily/Weekly): Values like \(\alpha > 0.9\) are considered “high” (very responsive).
- Low-Frequency Data (Annual/Strategic): Values like \(\alpha > 0.3\) may be considered “high” (responsive).
Practical Rule of Thumb:
For most general business applications:
- Low: \(< 0.3\)
- Medium: \(0.3 - 0.7\)
- High: \(> 0.7\)
Remember: These are guidelines, not hard rules. The “optimal” values are estimated from the data to minimize forecast errors.
Smoothing Parameters/Weights: Details
\(\alpha\) (Alpha) — Level Smoothing
The parameter \(\alpha\) controls how quickly the model updates the baseline level (\(\ell_t\)) of the time series.
- High \(\alpha\) (closer to 1): The model reacts strongly to the most recent observation (\(y_t\)), making the estimated level more responsive but less smooth.
- Low \(\alpha\) (closer to 0): The model reacts slowly, resulting in a smoother level estimate, but it may lag behind sudden changes.
Intuition: How much do we trust the most recent observation (\(y_t\)) for setting the current baseline?
Formula (Simple Exponential Smoothing):
\[\ell_t = \alpha y_t + (1 - \alpha) \ell_{t-1}\]
where \(\ell_t\) is the estimated level at time \(t\).
\(\beta\) (Beta) — Trend Smoothing
The parameter \(\beta\) controls how quickly the trend (slope, \(b_t\)) of the series is updated.
- High \(\beta\): The trend estimate changes rapidly with new data.
- Low \(\beta\): The trend changes more slowly, producing smoother and more stable slope estimates.
Intuition: How much do we update the slope (is the underlying trend changing fast)?
Formula (Holt’s Linear):
\[b_t = \beta(\ell_t - \ell_{t-1}) + (1 - \beta)b_{t-1}\]
where \(b_t\) is the estimated trend.
\(\gamma\) (Gamma) — Seasonality Smoothing
The parameter \(\gamma\) controls how quickly the seasonal component (\(s_t\)) is updated.
- High \(\gamma\): The seasonal factors adapt quickly to new data, which is useful if the seasonal pattern is shifting over time.
- Low \(\gamma\): The seasonal factors remain relatively stable across time.
Intuition: How much do we allow the seasonal pattern to shift or evolve?
Formula (Holt–Winters Additive):
\[s_t = \gamma (y_t - \ell_{t-1} - b_{t-1}) + (1 - \gamma)s_{t-m}\]
where \(s_t\) is the seasonal effect at time \(t\), and \(m\) is the seasonal period (e.g., \(m=12\) for monthly data).
Classic/Key ETS Models
While these components can be combined in different ways, leading to a variety of ETS models, only a handful are common enough to have acquired special, non-ETS names due to their frequent use and historical significance.
| ETS Notation | Model Name | Error (E) | Trend (T) | Seasonality (S) |
|---|---|---|---|---|
| ETS(A,N,N) | Simple Exponential Smoothing (SES) | Additive (A) | None (N) | None (N) |
| ETS(A,A,N) | Holt’s Linear Method | Additive (A) | Additive (A) | None (N) |
| ETS(A,A,A) | Holt–Winters Additive Seasonal | Additive (A) | Additive (A) | Additive (A) |
ETS Models in State Space Form (Additive Components)
Expressing an Exponential Smoothing (ETS) model in State Space Form provides a rigorous, unified mathematical structure, enabling advanced techniques like likelihood estimation and automatic model selection.
This formulation separates the process into two key components: the Forecast (Measurement) equation, which links the hidden states to the data, and the State (Transition) equations, which define how the hidden states evolve over time.
1. Forecast (Measurement) Equation
The observed value \(Y_t\) is defined as the sum of the predicted components from the previous time step plus a forecast error.
\[\hat{Y}_{t|t-1} = \ell_{t-1} + b_{t-1} + s_{t-m}\]
The actual observed value is:
\[Y_t = \ell_{t-1} + b_{t-1} + s_{t-m} + \varepsilon_t\]
Where:
- \(Y_t\): The observed value at time \(t\).
- \(\ell_{t-1}\): The previous Level (baseline).
- \(b_{t-1}\): The previous Trend (slope).
- \(s_{t-m}\): The Seasonal Component from one full cycle (\(m\) periods) ago.
- \(\varepsilon_t\): The Forecast Error (or innovation), defined as \(\varepsilon_t = Y_t - \hat{Y}_{t|t-1}\).
2. State (Transition) Equations
These equations update the model’s internal components (\(\ell_t, b_t, s_t\)) by incorporating the new information provided by the latest forecast error, \(\varepsilon_t\).
The structure shown below corresponds to the additive error models (e.g., \(\text{ETS}(\text{A,A,A})\)).
Level Component (\(\ell_t\))
The new level is the old level plus a correction proportional to the error \(\varepsilon_t\):
\[\ell_t = \ell_{t-1} + \alpha \varepsilon_t\]
- \(\alpha\) (Alpha): The smoothing parameter for the level.
Trend Component (\(b_t\))
Standard (Undamped) Trend (\(\text{T}=\text{A}\))
The new trend is the old trend plus a correction proportional to the error:
\[b_t = b_{t-1} + \beta \varepsilon_t\]
- \(\beta\) (Beta): The smoothing parameter for the trend.
Damped Trend (\(\text{T}=\text{A}_{\text{d}}\))
The previous trend is first damped by \(\phi\), and then updated by the error term:
\[b_t = \phi b_{t-1} + \beta \varepsilon_t\]
- \(\phi\) (Phi): The damping parameter. (\(\phi=1\) for undamped, \(0 < \phi < 1\) for damped).
Seasonal Component (\(s_t\))
The new seasonal component replaces the old one with a correction proportional to the error:
\[s_t = s_{t-m} + \gamma \varepsilon_t\]
- \(\gamma\) (Gamma): The smoothing parameter for seasonality.
- \(m\): The length of the seasonal cycle (e.g., \(m=12\) for monthly data).
Why State Space Form Matters
- Unified Framework: It provides a single, mathematically consistent way to represent all 30 ETS models, regardless of the combination of components.
- Model Estimation: It enables likelihood-based estimation, allowing smoothing parameters (\(\alpha, \beta, \gamma, \phi\)) to be found by maximizing the likelihood function of the forecast errors.
- Statistical Inference: It is essential for calculating reliable prediction intervals and performing model selection using criteria like AIC and BIC.
Application
We will import different time series, visualise it, identify the dominant patterns, fit an ETS model, and check the estimated parameters to see if they align with our expectations.
Set Up
Case 1: Random Walk / Pure Level (No Trend, No Seasonality)
# Simulate level-only data
set.seed(123)
level_data <- tibble(
time = 1:50,
value = 100 + cumsum(rnorm(n = 50, mean = 0, sd = 2))
) |> as_tsibble(index = time)
# Plot
level_data |>
ggplot(aes(x = time, y = value)) +
geom_line(size = 1) +
labs(title = "Case 1: Pure Level Changes",
subtitle = "Random walk around mean - expect high α") +
theme_minimal() -> case1Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.
case1Would expect no seasonality (\(\gamma\) = 0) and no trend (\(\beta\) = 0). Level smoothing should be high (\(\alpha\) close to 1). Furthermore, level smoothing looks additve, not multiplicative (goes up and down by same amount {kind of know it from the data generation process where sd is 2}.
# Fit ETS
fit_level <- level_data |> model(ETS(value))
report(fit_level)Series: value
Model: ETS(A,N,N)
Smoothing parameters:
alpha = 0.9998989
Initial states:
l[0]
98.88015
sigma^2: 3.4791
AIC AICc BIC
261.8994 262.4212 267.6355
tidy(fit_level)Auto ETS selects ETS(A,N,N) with high α (additive), no β, no γ as expected.
Case 2: No Seasonality (strong Trend and increasing Level)
# Strong upward trend data
trend_data <- global_economy |>
filter(Country == "China", Year >= 1980) |>
select(Year, GDP) |>
mutate(GDP_trillions = GDP / 1e12)
# Plot
trend_data |>
ggplot(aes(x = Year, y = GDP_trillions)) +
geom_line(size = 1) +
labs(title = "Case 2: Strong Non-Linear Trend",
subtitle = "Consistent growth - expect high α, β",
y = "GDP (Trillions USD)") +
theme_minimal() -> case2
case2Would expect strong trend (\(\beta\) high as slope is increasing rapidly) and high level adaptation (\(\alpha\) high as level increases over time). No seasonality (\(\gamma\) = 0).
# Fit ETS
fit_trend <- trend_data |> model(ETS(GDP_trillions))
report(fit_trend)Series: GDP_trillions
Model: ETS(M,A,N)
Smoothing parameters:
alpha = 0.9999
beta = 0.9679319
Initial states:
l[0] b[0]
0.1876217 0.001694121
sigma^2: 0.007
AIC AICc BIC
-29.51823 -27.64323 -21.33030
tidy(fit_trend)Auto ETS selects trend model with high α and β as expected. No γ.
The model picked multiplicative error instead of additive. This means the forecast errors scale with the level (larger GDP → larger error band), which makes sense for GDP.
The trend component is additive (linear trend), but because α and β are both very high, the model is essentially tracking the steep growth closely.
Case 3: Seasonality (with increasing Level and stable Trend)
# Stable seasonal pattern
seasonal_data <- aus_production |>
filter(Quarter >= yearquarter("1990 Q1"), Quarter <= yearquarter("2010 Q4")) |>
select(Quarter, Electricity)
# Plot
seasonal_data |>
ggplot(aes(x = Quarter, y = Electricity)) +
geom_line(size = 1) +
labs(title = "Case 3: Pure Seasonality",
subtitle = "Regular pattern, stable level - expect low α, high γ") +
theme_minimal() -> case3
case3Clear additive seasonality in the first half of the data (not multiplicative). Also, would expect level smoothing and trend smoothing at a cursory glance.
# Fit ETS
fit_seasonal <- seasonal_data |> model(ETS(Electricity))
report(fit_seasonal)Series: Electricity
Model: ETS(M,A,A)
Smoothing parameters:
alpha = 0.3250347
beta = 0.0001000219
gamma = 0.1380468
Initial states:
l[0] b[0] s[0] s[-1] s[-2] s[-3]
38220.12 260.6592 -1057.735 1855.485 -24.95561 -772.7935
sigma^2: 4e-04
AIC AICc BIC
1497.584 1500.084 1519.244
tidy(fit_seasonal)Auto ETS selects seasonal model with low γ as expected, as seasnality is pretty stable in the time series. Furthermore, seasoanlity is additive.
The positive trend is absorbed partly into the level (α) and the seasonal adjustment (γ). Also, ETS sometimes struggles when the “trend” is not perfectly linear — electricity usage rose but also had flattening in the 2000s, so the model may prefer a slowly adjusting level rather than a strong persistent trend.
Case 4: Linear Growth (increasing Level, stable Trend and no Dampening)
# Exponential growth that needs damping
explosive_data <- global_economy |>
filter(Country == "Australia", Year >= 1960, Year <= 1990) |>
select(Year, Population) |>
mutate(Population_millions = Population / 1e6)
# Plot
explosive_data |>
ggplot(aes(x = Year, y = Population_millions)) +
geom_line(size = 1) +
labs(title = "Case 4: Growth Requiring No Damping",
y = "Population (Millions)") +
theme_minimal() -> case4
case4Would expect no seasonality (\(\gamma\) will not be estimated), large level growth/adaptation and a stable trend. Both the latter terms seem additive and not multiplcative. There is clearly no dampening needed as the growth is linear.
# Fit ETS
fit_explosive <- explosive_data |> model(ETS(Population))
report(fit_explosive )Series: Population
Model: ETS(A,A,N)
Smoothing parameters:
alpha = 0.9998999
beta = 0.0001001627
Initial states:
l[0] b[0]
10067190 228913.9
sigma^2: 3887839126
AIC AICc BIC
796.6856 799.0856 803.8556
tidy(fit_explosive )As expected.
Case 5: Increasing Level, Dampening Trend, Multiplicative Seasonality,
# Seasonal amplitude changes with level
mult_seasonal <- aus_arrivals |>
filter(Origin == "Japan", Quarter >= yearquarter("1985 Q1")) |>
select(Quarter, Arrivals)
# Plot
mult_seasonal |>
ggplot(aes(x = Quarter, y = Arrivals)) +
geom_line(size = 1) +
labs(title = "Case 5: Multiplicative Seasonality",
subtitle = "Seasonal amplitude grows with level - expect multiplicative") +
theme_minimal() -> case5
case5Would expect multiplicative seasonal component where seasonal swings increase proportionally with the level.
# Fit ETS
fit_mult <- mult_seasonal |> model(ETS(formula = Arrivals))
report(fit_mult )Series: Arrivals
Model: ETS(A,Ad,A)
Smoothing parameters:
alpha = 0.4297394
beta = 0.0203778
gamma = 0.1979133
phi = 0.9707015
Initial states:
l[0] b[0] s[0] s[-1] s[-2] s[-3]
18668.17 5292.242 4356.274 6160.736 -22554.31 12037.3
sigma^2: 216523642
AIC AICc BIC
2663.818 2666.018 2690.914
tidy(fit_mult )Visuals suggested multiplicative seasonality, but automatic ETS chose additive seasonal based on likelihood/AIC. Shows why we test models rather than rely only on intuition.
\(\alpha = 0.43\) → moderate update of level \(\beta = 0.02\) → trend changes very slowly \(\gamma = 0.20\) → seasonal pattern adjusts moderately \(\phi = 0.97\) → damped trend (flattens long run)
ETS Model Selection: Auto ETS correctly identifies the dominant patterns and selects appropriate error/trend/seasonal components based on visual characteristics.
Conclusion
ETS models describe time series in terms of error, trend, and seasonality.
They can be written in state space form, which provides a systematic way to estimate, update, and forecast.
-
Parameters:
- \(\alpha\): updates the level
- \(\beta\): updates the trend
- \(\gamma\): updates seasonality
- \(\phi\): dampens the trend
All parameters act as weights on forecast errors, determining how responsive each component is to new data.
Appendix:
Four Alpha-Beta Interaction Cases
The black line is the actual noisy data with an underlying upward trend. Each colored line shows how different α-β combinations filter and smooth this data.
- Red line (High-High): Closely follows all fluctuations, very reactive
- Blue line (High-Low): Adapts to level changes but maintains smooth trend
- Green line (Low-High): Smooth overall but trend slope adjusts
- Purple line (Low-Low): Very smooth, ignores most noise
Key Insights
- Case 1: Fitted line closely tracks all fluctuations (high responsiveness)
- Case 2: Quick level adjustments but smooth trend (balanced approach)
- Case 3: Smooth level with trend adaptations (uncommon but valid)
- Case 4: Very smooth fitted line (conservative, stable)
Practical Applications:
- High-High: Financial data, volatile markets
- High-Low: Economic indicators with occasional shocks
- Low-High: Climate data, gradual trend changes
- Low-Low: Demographics, stable long-term processes