Skip to main content

ARIMA

Model
DashAI.back.models.forecasting.ARIMA

Model a series as its own past values plus its own past errors.

ARIMA combines three ideas, one per order. The autoregressive part (p) makes the forecast a weighted sum of recent values. The differencing part (d) subtracts consecutive observations until what is left has no trend, which is what lets the other two parts assume a stable level. The moving average part (q) lets recent forecast errors feed back in.

A seasonal part repeats the same three ideas a season apart: P, D and Q, counted in seasons of season_length steps. It is off by default (all three at 0), which is the plain ARIMA.

The orders are not chosen automatically. d = 1 suits a series that trends, d = 0 one that hovers around a level, and the DashAI optimizer can search them when told to.

statsmodels' ARIMA is already a state space SARIMAX: it takes the seasonal orders and exogenous variables, and its forecasts come with prediction intervals. Nothing is reimplemented.

References​

Parameters​

p : integer, default=1
How many past values the forecast is a weighted sum of, the autoregressive order.
d : integer, default=1
How many times to difference the series before modelling it. 1 removes a straight trend, 0 suits a series that already hovers around a fixed level.
q : integer, default=0
How many past forecast errors feed into the next forecast, the moving average order.
seasonal_p : integer, default=0
The autoregressive order of the seasonal part: how many past seasons the forecast is a weighted sum of. 0 leaves it out.
seasonal_d : integer, default=0
How many times to difference the series a season apart. 1 removes a pattern that repeats every season.
seasonal_q : integer, default=0
The moving average order of the seasonal part: how many past seasonal errors feed into the next forecast.
season_length : integer, default=1
How many steps make up one season, which the seasonal orders count in: 12 for monthly data repeating yearly, 7 for daily data repeating weekly. It has to be at least 2 when a seasonal order is above 0.
use_exogenous : boolean, default=True
Read the session's exogenous variables. Turn it off to compare the same model without them.

Methods​

calculate_metrics(self, split: DashAI.back.core.enums.metrics.SplitEnum = <SplitEnum.VALIDATION: 'validation'>, level: DashAI.back.core.enums.metrics.LevelEnum = <LevelEnum.LAST: 'last'>, log_index: int = None, x_data: 'DashAIDataset' = None, y_data: 'DashAIDataset' = None, fold_index: int = None, inner_fold_index: int = None)

Defined on BaseModel

Calculate metrics for a data split and save them to the database.

Parameters

split : SplitEnum
The data split to evaluate (TRAIN, VALIDATION, or TEST). Defaults to SplitEnum.VALIDATION.
level : LevelEnum
The metric granularity level (LAST, TRIAL, STEP, or BATCH). Defaults to LevelEnum.LAST.
log_index : int, optional
Explicit step index for the metric entry. If None, the next step index is computed automatically. Defaults to None.
x_data : DashAIDataset, optional
Input features. If None, the dataset stored in the model for the given split is used. Defaults to None.
y_data : DashAIDataset, optional
Target labels. If None, the labels stored in the model for the given split are used. Defaults to None.

Returns

Dict[str, float] or None
What was written, so a caller that also wants the numbers does not have to score the same split twice. None when nothing was written: no run to write against, or nothing to score.

compute_metrics(self, split: DashAI.back.core.enums.metrics.SplitEnum = <SplitEnum.VALIDATION: 'validation'>, x_data: 'DashAIDataset' = None, y_data: 'DashAIDataset' = None) -> Optional[Dict[str, float]]

Defined on BaseModel

Score a data split with this model's metrics, without persisting.

Parameters

split : SplitEnum
The data split to evaluate. Defaults to SplitEnum.VALIDATION.
x_data : DashAIDataset, optional
Input features. Defaults to the split stored on the model.
y_data : DashAIDataset, optional
Target labels. Defaults to the split stored on the model.

Returns

Dict[str, float] or None
Metric name to score. A metric that scored a non-finite value is absent from the mapping rather than present with a NaN, so the mapping is empty when every metric returned one. None when there is nothing to score at all: no metrics configured, or no data for this split. Callers that need a particular metric must therefore check that it is there. A metric with no value on the data (UndefinedMetricError) is absent the same way.

fit(self, y: Sequence[float], x: Optional[Any] = None) -> 'SingleSeriesForecastingModel'

Defined on SingleSeriesForecastingModel

Fit the model on the series, in time order.

Parameters

y : sequence of float
The series, one value per step of its grid.
x : array-like, optional
Exogenous variables, one row per step. Refused by a model that declares EXOGENOUS = "none", and required by one that declares "required".

Returns

SingleSeriesForecastingModel
The fitted model.

get_credential(self, name: str)

Defined on ConfigObject

Resolve a registered credential component by name.

Parameters

name : str
Credential component class name (e.g. "HuggingFaceCredential").

Returns

BaseCredential
An instance of the requested credential component.

get_metadata(cls) -> Dict[str, Any]

Defined on SingleSeriesForecastingModel

The model's metadata, with what it does with exogenous variables.

get_schema(cls) -> dict

Defined on ConfigObject

Generates the component related Json Schema.

Returns

dict
Dictionary representing the Json Schema of the component.

load(filename: str) -> Any

Defined on SingleSeriesForecastingModel

Deserialise a model from disk using joblib.

Parameters

filename : str
Path to the file previously written by :meth:save.

Returns

SingleSeriesForecastingModel
The loaded model instance.

predict(self, h: int, x_future: Optional[Any] = None, levels: Optional[Sequence[int]] = None) -> DashAI.back.models.forecasting.single_series_forecasting_model.Forecast

Defined on SingleSeriesForecastingModel

Forecast the h steps that follow the fitted series.

Parameters

h : int
How many steps to forecast, at least 1.
x_future : array-like, optional
Exogenous variables for the forecast steps, one row per step.
levels : sequence of int, optional
Prediction interval levels, in percent, each between 0 and 100.

Returns

Forecast
The point forecast and, if levels were asked for, the intervals.

predict_prepared(self, features: Any) -> Any

Defined on BaseModel

Predict from data that is already in this model's feature space.

Parameters

features : pandas.DataFrame or numpy.ndarray
Feature matrix as returned by prepare_dataset(..., is_fit=False). No further preparation is applied to it.

Returns

Any
The same kind of output as predict: predicted values for regressors, class probabilities for DashAI classifiers.

predict_proba_prepared(self, features: Any) -> Any

Defined on BaseModel

Return class probabilities for data already in the feature space.

Parameters

features : pandas.DataFrame or numpy.ndarray
Feature matrix as returned by prepare_dataset(..., is_fit=False).

Returns

numpy.ndarray
Array of shape (n_samples, n_classes) with class probabilities.

prepare_dataset(self, dataset: 'DashAIDataset', is_fit: bool = False) -> 'DashAIDataset'

Defined on BaseModel

Hook for model specific preprocessing of input features.

Parameters

dataset : DashAIDataset
The input dataset to preprocess.
is_fit : bool
Whether the call is part of a fitting phase. Defaults to False.

Returns

DashAIDataset
The preprocessed dataset ready to be fed into the model.

prepare_output(self, dataset: 'DashAIDataset', is_fit: bool = False) -> 'DashAIDataset'

Defined on BaseModel

Hook for model-specific preprocessing of output targets.

Parameters

dataset : DashAIDataset
The output dataset (target labels) to preprocess.
is_fit : bool
Whether the call is part of a fitting phase. Defaults to False.

Returns

DashAIDataset
The preprocessed output dataset.

save(self, filename: str) -> None

Defined on SingleSeriesForecastingModel

Serialise the model to disk using joblib.

Parameters

filename : str
Destination file path where the model will be written.

train(self, x_train: 'DashAIDataset', y_train: 'DashAIDataset', x_validation: 'DashAIDataset' = None, y_validation: 'DashAIDataset' = None) -> 'SingleSeriesForecastingModel'

Defined on SingleSeriesForecastingModel

Fit on the series held by y_train, ignoring every other input.

Parameters

x_train : DashAIDataset
Ignored: the model never sees dates.
y_train : DashAIDataset
One column holding the series, in time order.
x_validation, y_validation : DashAIDataset, optional
Ignored.

Returns

SingleSeriesForecastingModel
The fitted model.

validate_and_transform(self, raw_data: dict) -> dict

Defined on ConfigObject

It takes the data given by the user to initialize the model and returns it with all the objects that the model needs to work.

Parameters

raw_data : dict
A dictionary with the data provided by the user to initialize the model.

Returns

dict
A validated dictionary with the necessary objects.

Compatible with​