TBATSModel#

class TBATSModel(use_box_cox: bool | None = None, box_cox_bounds: Tuple[int, int] = (0, 1), use_trend: bool | None = None, use_damped_trend: bool | None = None, seasonal_periods: Iterable[int] | None = None, use_arma_errors: bool = True, show_warnings: bool = True, n_jobs: int | None = None, multiprocessing_start_method: str = 'spawn', context: ContextInterface | None = None)[source]#

Bases: PerSegmentModelMixin, PredictionIntervalContextIgnorantModelMixin, PredictionIntervalContextIgnorantAbstractModel

Class for holding segment interval TBATS model.

Notes

This model supports in-sample and out-of-sample prediction decomposition. Prediction components for TBATS model are: local level, trend, seasonality and ARMA component. In-sample and out-of-sample decompositions components are estimated directly from the fitted model parameters. Box-Cox transform supported with components proportional rescaling.

Create TBATSModel with given parameters.

Parameters:
  • use_box_cox (bool or None, optional (default=None)) – If Box-Cox transformation of original series should be applied. When None both cases shall be considered and better is selected by AIC.

  • box_cox_bounds (tuple, shape=(2,), optional (default=(0, 1))) – Minimal and maximal Box-Cox parameter values.

  • use_trend (bool or None, optional (default=None)) – Indicates whether to include a trend or not. When None both cases shall be considered and better is selected by AIC.

  • use_damped_trend (bool or None, optional (default=None)) – Indicates whether to include a damping parameter in the trend or not. Applies only when trend is used. When None both cases shall be considered and better is selected by AIC.

  • seasonal_periods (iterable or array-like of floats, optional (default=None)) – Length of each of the periods (amount of observations in each period). TBATS accepts int and float values here. When None or empty array, non-seasonal model shall be fitted.

  • use_arma_errors (bool, optional (default=True)) – When True BATS will try to improve the model by modelling residuals with ARMA. Best model will be selected by AIC. If False, ARMA residuals modeling will not be considered.

  • show_warnings (bool, optional (default=True)) – If warnings should be shown or not. Also see Model.warnings variable that contains all model related warnings.

  • n_jobs (int, optional (default=None)) – How many jobs to run in parallel when fitting BATS model. When not provided BATS shall try to utilize all available cpu cores.

  • multiprocessing_start_method (str, optional (default='spawn')) – How threads should be started. See https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods

  • context (abstract.ContextInterface, optional (default=None)) – For advanced users only. Provide this to override default behaviors

Methods

fit(ts)

Fit model.

forecast(ts[, prediction_interval, ...])

Make predictions.

get_model()

Get internal models that are used inside etna class.

load(path)

Load an object.

params_to_tune()

Get grid for tuning hyperparameters.

predict(ts[, prediction_interval, ...])

Make predictions with using true values as autoregression context if possible (teacher forcing).

save(path)

Save the object.

set_params(**params)

Return new object instance with modified parameters.

to_dict()

Collect all information about etna object in dict.

Attributes

This class stores its __init__ parameters as attributes.

context_size

Context size of the model.

fit(ts: TSDataset) PerSegmentModelMixin[source]#

Fit model.

Parameters:

ts (TSDataset) – Dataset with features

Returns:

Model after fit

Return type:

PerSegmentModelMixin

forecast(ts: TSDataset, prediction_interval: bool = False, quantiles: Sequence[float] = (0.025, 0.975), return_components: bool = False) TSDataset[source]#

Make predictions.

Parameters:
  • ts (TSDataset) – Dataset with features

  • prediction_interval (bool) – If True returns prediction interval for forecast

  • quantiles (Sequence[float]) – Levels of prediction distribution. By default 2.5% and 97.5% are taken to form a 95% prediction interval

  • return_components (bool) – If True additionally returns forecast components

Returns:

Dataset with predictions

Return type:

TSDataset

get_model() Dict[str, Any][source]#

Get internal models that are used inside etna class.

Internal model is a model that is used inside etna to forecast segments, e.g. catboost.CatBoostRegressor or sklearn.linear_model.Ridge.

Returns:

dictionary where key is segment and value is internal model

Return type:

Dict[str, Any]

classmethod load(path: Path) Self[source]#

Load an object.

Parameters:

path (Path) – Path to load object from.

Returns:

Loaded object.

Return type:

Self

params_to_tune() Dict[str, BaseDistribution][source]#

Get grid for tuning hyperparameters.

This is default implementation with empty grid.

Returns:

Empty grid.

Return type:

Dict[str, BaseDistribution]

predict(ts: TSDataset, prediction_interval: bool = False, quantiles: Sequence[float] = (0.025, 0.975), return_components: bool = False) TSDataset[source]#

Make predictions with using true values as autoregression context if possible (teacher forcing).

Parameters:
  • ts (TSDataset) – Dataset with features

  • prediction_interval (bool) – If True returns prediction interval for forecast

  • quantiles (Sequence[float]) – Levels of prediction distribution. By default 2.5% and 97.5% are taken to form a 95% prediction interval

  • return_components (bool) – If True additionally returns prediction components

Returns:

Dataset with predictions

Return type:

TSDataset

save(path: Path)[source]#

Save the object.

Parameters:

path (Path) – Path to save object to.

set_params(**params: dict) Self[source]#

Return new object instance with modified parameters.

Method also allows to change parameters of nested objects within the current object. For example, it is possible to change parameters of a model in a Pipeline.

Nested parameters are expected to be in a <component_1>.<...>.<parameter> form, where components are separated by a dot.

Parameters:

**params (dict) – Estimator parameters

Returns:

New instance with changed parameters

Return type:

Self

Examples

>>> from etna.pipeline import Pipeline
>>> from etna.models import NaiveModel
>>> from etna.transforms import AddConstTransform
>>> model = model=NaiveModel(lag=1)
>>> transforms = [AddConstTransform(in_column="target", value=1)]
>>> pipeline = Pipeline(model, transforms=transforms, horizon=3)
>>> pipeline.set_params(**{"model.lag": 3, "transforms.0.value": 2})
Pipeline(model = NaiveModel(lag = 3, ), transforms = [AddConstTransform(in_column = 'target', value = 2, inplace = True, out_column = None, )], horizon = 3, )
to_dict()[source]#

Collect all information about etna object in dict.

property context_size: int[source]#

Context size of the model. Determines how many history points do we ask to pass to the model.

Zero for this model.