Back to models
Forecaster

ExponentialSmoothing

Categorical in XInsamplePred int insample

Holt-Winters exponential smoothing forecaster.

Quickstart

python
from sktime.forecasting.exp_smoothing import ExponentialSmoothing

estimator = ExponentialSmoothing(trend=None, damped_trend=False, seasonal=None, sp=None, initial_level=None, initial_trend=None, initial_seasonal=None, use_boxcox=None, initialization_method='estimated', smoothing_level=None, smoothing_trend=None, smoothing_seasonal=None, damping_trend=None, optimized=True, remove_bias=False, start_params=None, method=None, minimize_kwargs=None, use_brute=True, random_state=None)

Parameters(20)

trend{“add”, “mul”, “additive”, “multiplicative”, None}, default=None
Type of trend component.
damped_trendbool, default=False
Should the trend component be damped.
seasonal{“add”, “mul”, “additive”, “multiplicative”, None}, default=None
Type of seasonal component.Takes one of
spint or None, default=None
The number of seasonal periods to consider.
initial_levelfloat or None, default=None
The alpha value of the simple exponential smoothing, if the value is set then this value will be used as the value.
initial_trendfloat or None, default=None
The beta value of the Holt’s trend method, if the value is set then this value will be used as the value.
initial_seasonalfloat or None, default=None
The gamma value of the holt winters seasonal method, if the value is set then this value will be used as the value.
use_boxcox{True, False, ‘log’, float}, default=None
Should the Box-Cox transform be applied to the data first? If ‘log’ then apply the log. If float then use lambda equal to float.
initialization_method:{‘estimated’,’heuristic’,’legacy-heuristic’,’known’,None},

default=’estimated’ Method for initialize the recursions. If ‘known’ initialization is used, then initial_level must be passed, as well as initial_trend and initial_seasonal if applicable. ‘heuristic’ uses a heuristic based on the data to estimate initial level, trend, and seasonal state. ‘estimated’ uses the same heuristic as initial guesses, but then estimates the initial states as part of the fitting process.

smoothing_levelfloat, optional
The alpha value of the simple exponential smoothing, if the value is set then this value will be used as the value.
smoothing_trendfloat, optional
The beta value of the Holt’s trend method, if the value is set then this value will be used as the value.
smoothing_seasonalfloat, optional
The gamma value of the holt winters seasonal method, if the value is set then this value will be used as the value.
damping_trendfloat, optional
The phi value of the damped method, if the value is set then this value will be used as the value.
optimizedbool, optional
Estimate model parameters by maximizing the log-likelihood.
remove_biasbool, optional
Remove bias from forecast values and fitted values by enforcing that the average residual is equal to zero.
start_paramsarray_like, optional
Starting values to used when optimizing the fit. If not provided, starting values are determined using a combination of grid search and reasonable values based on the initial values of the data. See the notes for the structure of the model parameters.
methodstr, default “SLSQP”
The minimizer used. Valid options are “L-BFGS-B”, “TNC”, “SLSQP” (default), “Powell”, “trust-constr”, “basinhopping” (also “bh”) and “least_squares” (also “ls”). basinhopping tries multiple starting values in an attempt to find a global minimizer in non-convex problems, and so is slower than the others.
minimize_kwargsdict[str, Any]
A dictionary of keyword arguments passed to SciPy’s minimize function if method is one of “L-BFGS-B”, “TNC”, “SLSQP”, “Powell”, or “trust-constr”, or SciPy’s basinhopping or least_squares functions. The valid keywords are optimizer specific. Consult SciPy’s documentation for the full set of options.
use_brutebool, optional
Search for good starting values using a brute force (grid) optimizer. If False, a naive set of starting values is used.
random_stateint, RandomState instance or None, optional,
default=None - If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.

Examples

>>> from sktime.datasets import load_airline
>>> from sktime.forecasting.exp_smoothing import ExponentialSmoothing
>>> y = load_airline ()
>>> forecaster = ExponentialSmoothing (
... trend = 'add', seasonal = 'multiplicative', sp = 12
... )
>>> forecaster. fit (y) ExponentialSmoothing(
... )
>>> y_pred = forecaster. predict (fh = [1, 2, 3 ])

References

  1. [1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles and practice. OTexts, 2014.