Skip to content
Ivan Svetunkov edited this page Jan 30, 2026 · 10 revisions

ES - Exponential Smoothing

ES (Exponential Smoothing) is a wrapper around ADAM that provides a simplified interface for pure ETS (Error-Trend-Seasonal) models without ARIMA components.

Overview

The ES class implements the classical taxonomy of 30 ETS models in Single Source of Error (SSOE) state-space form. It uses normal distribution for errors by default and provides automatic model selection.

Mathematical Form

See ADAM for more details.

Model Taxonomy

All 30 ETS models are supported:

Trend \ Seasonal N (None) A (Additive) M (Multiplicative)
N (None) ANN, MNN ANA, MNA ANM, MNM
A (Additive) AAN, MAN AAA, MAA AAM, MAM
Ad (Additive Damped) AAdN, MAdN AAdA, MAdA AAdM, MAdM
M (Multiplicative) AMN, MMN AMA, MMA AMM, MMM
Md (Multiplicative Damped) AMdN, MMdN AMdA, MMdA AMdM, MMdM

Model Specification

See ADAM for more details.

Python Usage

from smooth import ES
import numpy as np

y = np.array([112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118])

# Simple Exponential Smoothing
model = ES(model="ANN")
model.fit(y)
forecasts = model.predict(h=6)

# Holt-Winters with automatic selection
model = ES(model="ZXZ", lags=[12])
model.fit(y)
print(f"Selected model: {model.model_type_dict['model']}")

# Damped trend model
model = ES(model="AAdN")
model.fit(y)
print(f"Damping parameter: {model.phi_:.3f}")

R Usage

library(smooth)

# Simple Exponential Smoothing
model <- es(y, model="ANN")

# Automatic model selection
model <- es(y, model="ZZZ", lags=12)

# Holt-Winters additive
model <- es(AirPassengers, model="AAA", h=18, holdout=TRUE)
forecast(model, h=18)

# With holdout for validation
model <- es(y, model="ZXZ", h=12, holdout=TRUE)

With External Regressors

Note: Not yet supported in Python

# ETSX model
es(y, model="ZXZ", xreg=X)

# ETSX with regressors selection
es(y, model="ZXZ", xreg=X, regressors="select")

Parameters

Parameter Type (R) Type (Python) Default Description
model character/vector str/List[str] "ZXZ" ETS model specification
lags numeric vector List[int]/None frequency(y) Seasonal period(s)
persistence list/vector Dict[str, float]/None NULL Fixed smoothing parameters
phi numeric float/None NULL Damping parameter
initial character/list str/Dict/None "backcasting" Initialization method
ic character str "AICc" Information criterion
loss character str "likelihood" Loss function
bounds character str "usual" Parameter bounds
h integer int/None 0 Forecast horizon
holdout logical bool FALSE Use holdout validation

Fitted Attributes

Element (R) Element (Python) Type (R) Type (Python) Description
model model_type_dict['model'] character str Name of the fitted model
persistence (alpha) persistence_level_ numeric float Level smoothing parameter (α)
persistence (beta) persistence_trend_ numeric float Trend smoothing parameter (β)
persistence (gamma) persistence_seasonal_ numeric List[float] Seasonal smoothing parameter(s) (γ)
phi phi_ numeric float Damping parameter (φ)
initial initial_states_ list NDArray Initial state values
- model_type_dict - Dict Complete model specification
- ic_selection - float Information criterion value
states adam_created['mat_vt'] matrix NDArray State matrix
fitted prepared_model['y_fitted'] vector NDArray Fitted values
residuals prepared_model['residuals'] vector NDArray Residuals
forecast predict() result vector NDArray Point forecasts

See ADAM for complete list of fitted attributes.

Relationship to ADAM

ES is a simplified interface to ADAM with:

  • No ARIMA components (orders=NULL)
  • Normal distribution for errors (distribution="dnorm")
  • Focus on pure ETS models

For models combining ETS and ARIMA, use ADAM directly.

References

  • Svetunkov, I. (2023). Forecasting and Analytics with the Augmented Dynamic Adaptive Model (ADAM). Online book: https://openforecast.org/adam/
  • Svetunkov, I. (2023). Smooth forecasting with the smooth package in R. arXiv:2301.01790
  • Hyndman, R.J., et al. (2008). Forecasting with Exponential Smoothing: The State Space Approach. Springer.

See Also

Related Functions

  • ADAM - Full ADAM model with ARIMA support
  • CES - Complex Exponential Smoothing
  • SMA - Simple Moving Average

Parameter Documentation

Clone this wiki locally