#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
Module 10
11 min read

ETS Framework

Error, Trend, Seasonal forecasting framework

What You'll Learn

  • ETS framework components
  • Choosing the right ETS model
  • Automatic model selection
  • Forecasting with ETS
  • Model evaluation

What is ETS?

ETS = Error, Trend, Seasonal

Framework for exponential smoothing: Systematic way to choose smoothing method

Three components:

  • E: Error type (Additive or Multiplicative)
  • T: Trend type (None, Additive, or Damped)
  • S: Seasonal type (None, Additive, or Multiplicative)

Total models: 30 possible combinations!

Error Component (E)

Additive error (A): Y_t = (Level + Trend + Seasonal) + ε_t Errors are constant size

Multiplicative error (M): Y_t = (Level + Trend + Seasonal) × (1 + ε_t) Errors proportional to level

Choosing:

  • A: For most data
  • M: When variance grows with level

Trend Component (T)

None (N): No trend, level is constant ETS(A,N,N) = Simple exponential smoothing

Additive (A): Linear trend ETS(A,A,N) = Holt's linear method

Additive damped (Ad): Trend that flattens out over time ETS(A,Ad,N) = Damped trend method

Why damped? Trends rarely continue forever Damping makes long-term forecasts more realistic

Seasonal Component (S)

None (N): No seasonality

Additive (A): Seasonal effect is constant Sales +$10K every December

Multiplicative (M): Seasonal effect proportional to level Sales ×1.2 every December

Choosing:

  • N: No seasonal pattern
  • A: Constant seasonal swings
  • M: Seasonal swings grow with level

Popular ETS Models

ETS(A,N,N): Simple exponential smoothing No trend, no seasonality

ETS(A,A,N): Holt's linear trend Trend but no seasonality

ETS(A,Ad,N): Damped trend Trend flattens out

ETS(A,N,A): Additive seasonality No trend, seasonal

ETS(A,A,A): Additive Holt-Winters Trend + additive seasonality

ETS(A,A,M): Multiplicative Holt-Winters Trend + multiplicative seasonality

State Space Models

ETS uses state space formulation:

Components:

  • Level (ℓ_t)
  • Trend (b_t)
  • Seasonal (s_t)

Equations update each component: Based on new observations

Example ETS(A,A,A): ℓ_t = α(Y_t - s_{t-m}) + (1-α)(ℓ_{t-1} + b_{t-1}) b_t = β(ℓ_t - ℓ_{t-1}) + (1-β)b_{t-1} s_t = γ(Y_t - ℓ_t) + (1-γ)s_{t-m}

Parameters: α, β, γ (smoothing constants)

Automatic Model Selection

Too many models to choose manually!

Solution: Automatic selection via AIC/BIC

Process:

  1. Fit all 30 ETS models
  2. Calculate AIC for each
  3. Choose model with lowest AIC

AIC (Akaike Information Criterion): Balances fit and complexity Lower is better!

Software does this automatically: forecast::ets() in R statsmodels in Python

Forecasting with ETS

Once model selected:

Point forecasts: Use equations to project forward

Prediction intervals: Analytical formulas available (Unlike many other methods!)

Example: ETS(A,A,A) for monthly sales

Forecast for next 12 months:

  • Incorporates trend
  • Adds seasonal pattern
  • Provides 80% and 95% intervals

Model Diagnostics

Check residuals:

1. No autocorrelation Ljung-Box test

2. Homoscedasticity Constant variance over time

3. Normality For accurate prediction intervals

If diagnostics fail:

  • Try different error type
  • Check for outliers
  • Consider transformations

Advantages of ETS

1. Automatic selection Don't need to choose manually

2. Prediction intervals Analytical formulas available

3. Robust Works for many patterns

4. Interpretable Clear components

5. Fast Quick to fit and forecast

Limitations of ETS

1. Limited patterns Only 30 model types

2. No external variables Can't include predictors

3. Single seasonality Can't handle multiple seasonal periods

4. Short-term focus Best for operational forecasting

5. Assumes patterns continue No structural breaks

Choosing Between Models

No trend, no seasonality: ETS(A,N,N)

Linear trend, no seasonality: ETS(A,A,N) or ETS(A,Ad,N)

Seasonality, no trend: ETS(A,N,A) or ETS(A,N,M)

Trend + seasonality: ETS(A,A,A) or ETS(A,A,M)

Growing variance: Try multiplicative error (M)

Let software decide: Use automatic selection!

Damped Trend

Problem with linear trend: Forecasts infinity!

Solution: Damping parameter φ (0 < φ < 1)

Effect: Trend gradually flattens

Forecast: Approaches asymptote instead of growing forever

When to use:

  • Long-term forecasts
  • Uncertain trend continuation
  • Historical trends slow down

Empirical result: Damped often outperforms linear!

Parameter Estimation

How α, β, γ are found:

Optimization: Minimize Sum of Squared Errors (SSE)

Or: Maximize likelihood

Typical values:

  • α (level): 0.1 to 0.3
  • β (trend): 0.05 to 0.2
  • γ (seasonal): 0.05 to 0.1

Low values: More smoothing, stable forecasts

High values: Less smoothing, responsive forecasts

Prediction Intervals

Big advantage of ETS: Analytical prediction intervals!

Formula depends on model: More complex for multiplicative

Interpretation: 95% PI: [Lower, Upper] "95% confident true value in this range"

Width increases with horizon: Less certain about distant future

Use them! Communicate forecast uncertainty

Information Criteria

AIC (Akaike Information Criterion): AIC = -2×log(L) + 2k

AICc (corrected for small samples): AICc = AIC + 2k(k+1)/(n-k-1)

BIC (Bayesian Information Criterion): BIC = -2×log(L) + k×log(n)

Where:

  • L = likelihood
  • k = number of parameters
  • n = sample size

Use: Compare models, choose lowest

Python Implementation

from statsmodels.tsa.holtwinters import ExponentialSmoothing
import pandas as pd

# Data
data = pd.Series([...])  # Your time series

# Fit ETS(A,A,A)
model = ExponentialSmoothing(
    data,
    trend='add',
    seasonal='add',
    seasonal_periods=12
)
fit = model.fit()

# Forecast
forecast = fit.forecast(steps=12)
print(forecast)

# Get prediction intervals
pred = fit.get_prediction(start=len(data), end=len(data)+11)
pred_df = pred.summary_frame()
print(pred_df[['mean', 'pi_lower', 'pi_upper']])

# Model summary
print(fit.summary())

R Implementation

library(forecast)

# Data
data <- ts(your_data, frequency=12)

# Automatic ETS selection
fit <- ets(data)
print(fit)

# Forecast
fc <- forecast(fit, h=12)
plot(fc)

# Components
autoplot(fit)

Real-World Example

Monthly airline passengers:

Pattern:

  • Strong upward trend
  • Yearly seasonality
  • Seasonal swings growing

Best model: ETS(M,A,M)

  • Multiplicative error
  • Additive trend
  • Multiplicative seasonality

Result: Accurate forecasts with realistic intervals

Model Selection Example

Data characteristics: Monthly retail sales, 5 years

Try models:

  1. ETS(A,N,A): AIC = 1450
  2. ETS(A,A,A): AIC = 1320
  3. ETS(A,Ad,A): AIC = 1315 ← Winner!
  4. ETS(M,A,M): AIC = 1335

Choose: ETS(A,Ad,A) - damped trend with seasonality

Common Mistakes

1. Ignoring diagnostics Always check residuals!

2. Using wrong seasonal period m=12 for monthly, m=4 for quarterly

3. Extrapolating too far ETS best for short-medium term

4. Not checking intervals Wide intervals = high uncertainty

5. Forgetting transformations Log transform can help

Comparison with Other Methods

ETS vs ARIMA:

  • ETS: Easier to interpret
  • ARIMA: More flexible

ETS vs Prophet:

  • ETS: Traditional, proven
  • Prophet: Handles holidays, events

ETS vs Machine Learning:

  • ETS: Better for pure time series
  • ML: Better with many predictors

Practice Exercise

Quarterly data with trend and seasonality: Q1: 100, Q2: 120, Q3: 110, Q4: 130 Q1: 105, Q2: 125, Q3: 115, Q4: 135

Questions:

  1. Is trend additive or multiplicative?
  2. Is seasonality additive or multiplicative?
  3. What ETS model to try first?
  4. Should you use damping for long forecasts?

Answers:

  1. Additive (linear increase)
  2. Additive (constant seasonal swings)
  3. ETS(A,A,A)
  4. Yes, damped more realistic long-term

When to Use ETS

Good for:

  • Regular patterns
  • Automatic forecasting
  • Need prediction intervals
  • Operational forecasting
  • Smooth data

Not ideal for:

  • Multiple seasonality
  • Need to include predictors
  • Irregular patterns
  • Structural changes
  • Very long-term forecasts

Next Steps

Learn about Excel Statistical Analysis!

Tip: Let ETS auto-select the model, then check if it makes sense!