exponential_smoothing() is a way to generate a specification of an ETS model before fitting and allows the model to be created using different packages. Currently the only package is Rlgt.

exponential_smoothing(
  mode = "regression",
  seasonality = NULL,
  second_seasonality = NULL,
  seasonality_type = NULL,
  method = NULL,
  error_method = NULL
)

Arguments

mode

A single character string for the type of model. The only possible value for this model is "regression".

seasonality

This specification of seasonality will be overridden by frequency of y, if y is of ts or msts class. 1 by default, i.e. no seasonality.

second_seasonality

Second seasonality.

seasonality_type

Either "multiplicative" (default) or "generalized". The latter seasonality generalizes additive and multiplicative seasonality types.

method

"HW", "seasAvg", "HW_sAvg". Here, "HW" follows Holt-Winters approach. "seasAvg" calculates level as a smoothed average of the last seasonality number of points (or seasonality2 of them for the dual seasonality model), and HW_sAvg is an weighted average of HW and seasAvg methods.

error_method

Function providing size of the error. Either "std" (monotonically, but slower than proportionally, growing with the series values) or "innov" (proportional to a smoothed abs size of innovations, i.e. surprises)

Value

A model spec

Details

The data given to the function are not saved and are only used to determine the mode of the model. For exponential_smoothing(), the mode will always be "regression".

The model can be created using the fit() function using the following engines:

Main Arguments

The main arguments (tuning parameters) for the model are:

  • seasonality: Seasonality.

  • second_seasonality: Second seasonality.

  • seasonality_type: Either "multiplicative" (default) or "generalized".

  • method: "HW", "seasAvg", "HW_sAvg"

  • error_method: Either "std" or "innov"

These arguments are converted to their specific names at the time that the model is fit.

Other options and argument can be set using set_engine().

If parameters need to be modified, update() can be used in lieu of recreating the object from scratch.

stan (default engine)

The engine uses Rlgt::rlgt().

Parameter Notes:

  • xreg - This is supplied via the parsnip / bayesmodels fit() interface (so don't provide this manually). See Fit Details (below).

Fit Details

Date and Date-Time Variable

It's a requirement to have a date or date-time variable as a predictor. The fit() interface accepts date and date-time features and handles them internally.

Univariate (No xregs, Exogenous Regressors):

For univariate analysis, you must include a date or date-time feature. Simply use:

Multivariate (xregs, Exogenous Regressors)

The xreg parameter is populated using the fit() function:

  • Only factor, ordered factor, and numeric data will be used as xregs.

  • Date and Date-time variables are not used as xregs

  • character data should be converted to factor.

Xreg Example: Suppose you have 3 features:

  1. y (target)

  2. date (time stamp),

  3. month.lbl (labeled month as a ordered factor).

The month.lbl is an exogenous regressor that can be passed to the expotential_smoothing() using fit():

Note that date or date-time class values are excluded from xreg.

See also

Examples

if (FALSE) { library(dplyr) library(parsnip) library(rsample) library(timetk) library(modeltime) library(bayesmodels) # Data m750 <- m4_monthly %>% filter(id == "M750") m750 # Split Data 80/20 splits <- rsample::initial_time_split(m750, prop = 0.8) # ---- ARIMA ---- # Model Spec model_spec <- exponential_smoothing() %>% set_engine("stan") # Fit Spec model_fit <- model_spec %>% fit(log(value) ~ date + month(date), data = training(splits)) model_fit }