ARIMA
(S)ARIMA(X) forecaster, from pmdarima package.
Exposes pmdarima.arima.ARIMA [1] under the sktime interface. Seasonal ARIMA models and exogenous input is supported, hence this estimator is capable of fitting SARIMA, ARIMAX, and SARIMAX. To additionally fit (S)ARIMA(X) hyper-parameters, use the AutoARIMA estimator.
An ARIMA, or autoregressive integrated moving average model, is a generalization of an autoregressive moving average (ARMA) model, and is fitted to time-series data in an effort to forecast future points. ARIMA models can be especially efficacious in cases where data shows evidence of non-stationarity.
The “AR” part of ARIMA indicates that the evolving variable of interest is regressed on its own lagged (i.e., prior observed) values. The “MA” part indicates that the regression error is actually a linear combination of error terms whose values occurred contemporaneously and at various times in the past. The “I” (for “integrated”) indicates that the data values have been replaced with the difference between their values and the previous values (and this differencing process may have been performed more than once). The purpose of each of these features is to make the model fit the data as well as possible.
Non-seasonal ARIMA models are generally denoted ARIMA(p,d,q) where parameters p, d, and q are non-negative integers, p is the order (number of time lags) of the autoregressive model, d is the degree of differencing (the number of times the data have had past values subtracted), and q is the order of the moving-average model. Seasonal ARIMA models are usually denoted ARIMA(p,d,q)(P,D,Q)m, where m refers to the number of periods in each season, and the uppercase P, D, Q refer to the autoregressive, differencing, and moving average terms for the seasonal part of the ARIMA model.
When two out of the three terms are zeros, the model may be referred to based on the non-zero parameter, dropping “AR”, “I” or “MA” from the acronym describing the model. For example, ARIMA(1,0,0) is AR(1), ARIMA(0,1,0) is I(1), and ARIMA(0,0,1) is MA(1).
See notes for more practical information on the ARIMA class.
Quickstart
from sktime.forecasting.arima import ARIMA
estimator = ARIMA(order=(1, 0, 0), seasonal_order=(0, 0, 0, 0), start_params=None, method='lbfgs', maxiter=50, suppress_warnings=False, out_of_sample_size=0, scoring='mse', scoring_args=None, trend=None, with_intercept=True, time_varying_regression=False, enforce_stationarity=True, enforce_invertibility=True, simple_differencing=False, measurement_error=False, mle_regression=True, hamilton_representation=False, concentrate_scale=False)Parameters(18)
- orderiterable or array-like, shape=(3,), optional (default=(1, 0, 0))
The (p,d,q) order of the model for the number of AR parameters, differences, and MA parameters to use.
pis the order (number of time lags) of the auto-regressive model, and is a non-negative integer.dis the degree of differencing (the number of times the data have had past values subtracted), and is a non-negative integer.qis the order of the moving-average model, and is a non-negative integer. Default is an AR(1) model: (1,0,0).- seasonal_orderarray-like, shape=(4,), optional (default=(0, 0, 0, 0))
The (P,D,Q,s) order of the seasonal component of the model for the AR parameters, differences, MA parameters, and periodicity.
Dmust be an integer indicating the integration order of the process, whilePandQmay either be an integers indicating the AR and MA orders (so that all lags up to those orders are included) or else iterables giving specific AR and / or MA lags to include.Sis an integer giving the periodicity (number of periods in season), often it is 4 for quarterly data or 12 for monthly data. Default is no seasonal effect.- start_paramsarray-like, optional (default=None)
Starting parameters for
ARMA(p,q). If None, the default is given byARMA._fit_start_params.- methodstr, optional (default=’lbfgs’)
The
methoddetermines which solver fromscipy.optimizeis used, and it can be chosen from among the following strings:‘newton’ for Newton-Raphson
‘nm’ for Nelder-Mead
‘bfgs’ for Broyden-Fletcher-Goldfarb-Shanno (BFGS)
‘lbfgs’ for limited-memory BFGS with optional box constraints
‘powell’ for modified Powell’s method
‘cg’ for conjugate gradient
‘ncg’ for Newton-conjugate gradient
‘basinhopping’ for global basin-hopping solver
The explicit arguments in
fitare passed to the solver, with the exception of the basin-hopping solver. Each solver has several optional arguments that are not the same across solvers. These can be passed as **fit_kwargs- maxiterint, optional (default=50)
- The maximum number of function evaluations. Default is 50
- suppress_warningsbool, optional (default=False)
Many warnings might be thrown inside of statsmodels. If
suppress_warningsis True, all of these warnings will be squelched.- out_of_sample_sizeint, optional (default=0)
The number of examples from the tail of the time series to hold out and use as validation examples. The model will not be fit on these samples, but the observations will be added into the model’s
endogandexogarrays so that future forecast values originate from the end of the endogenous vector. Seeupdate. For instance:y = [0, 1, 2, 3, 4, 5, 6] out_of_sample_size = 2 > Fit on: [0, 1, 2, 3, 4] > Score on: [5, 6] > Append [5, 6] to end of self.arima_res_.data.endog values
- scoringstr or callable, optional (default=’mse’)
If performing validation (i.e., if
out_of_sample_size> 0), the metric to use for scoring the out-of-sample data:If a string, must be a valid metric name importable from
sklearn.metricsIf a callable, must adhere to the function signature:
def foo_loss(y_true, y_pred)
Note that models are selected by minimizing loss. If using a maximizing metric (such as
sklearn.metrics.r2_score), it is the user’s responsibility to wrap the function such that it returns a negative value for minimizing.- scoring_argsdict, optional (default=None)
A dictionary of key-word arguments to be passed to the
scoringmetric.- trendstr or None, optional (default=None)
The trend parameter. If
with_interceptis True,trendwill be used. Ifwith_interceptis False, the trend will be set to a no- intercept value. If None andwith_intercept, ‘c’ will be used as a default.- with_interceptbool, optional (default=True)
- Whether to include an intercept term. Default is True.
- time_varying_regressionboolean, optional (default=False)
- Whether or not coefficients on the exogenous regressors are allowed to vary over time.
- enforce_stationarityboolean, optional (default=True)
- Whether or not to transform the AR parameters to enforce stationarity in the auto-regressive component of the model. - enforce_invertibility: boolean, optional (default=True) Whether or not to transform the MA parameters to enforce invertibility in the moving average component of the model.
- simple_differencingboolean, optional (default=False)
Whether or not to use partially conditional maximum likelihood estimation for seasonal ARIMA models. If True, differencing is performed prior to estimation, which discards the first \(s D + d\) initial rows but results in a smaller state-space formulation. If False, the full SARIMAX model is put in state-space form so that all datapoints can be used in estimation. Default is False.
- measurement_error: boolean, optional (default=False)
- Whether or not to assume the endogenous observations endog were measured with error. Default is False.
- mle_regressionboolean, optional (default=True)
- Whether or not to use estimate the regression coefficients for the exogenous variables as part of maximum likelihood estimation or through the Kalman filter (i.e. recursive least squares). If time_varying_regression is True, this must be set to False. Default is True.
- hamilton_representationboolean, optional (default=False)
Whether or not to use the Hamilton representation of an ARMA process
if True, uses the Hamilton representation.
if False, uses the Harvey representation.
Default is False.
- concentrate_scaleboolean, optional (default=False)
- Whether or not to concentrate the scale out of the likelihood, scale = variance of the error term. This reduces the number of parameters estimated by maximum likelihood by one, but standard errors will then not be available for the scale parameter.
Examples
>>> from sktime.datasets import load_airline
>>> from sktime.forecasting.arima import ARIMA
>>> y = load_airline ()
>>> forecaster = ARIMA (
... order = (1, 1, 0),
... seasonal_order = (0, 1, 0, 12),
... suppress_warnings = True)
>>> forecaster. fit (y) ARIMA(
... )
>>> y_pred = forecaster. predict (fh = [1, 2, 3 ])