VARMAX
VARMAX
- class VARMAX(order=(1, 0), trend='c', error_cov_type='unstructured', measurement_error=False, enforce_stationarity=True, enforce_invertibility=True, trend_offset=1, start_params=None, transformed=True, includes_fixed=False, cov_type=None, cov_kwds=None, method='lbfgs', maxiter=50, full_output=1, disp=False, callback=None, return_params=False, optim_score=None, optim_complex_step=None, optim_hessian=None, flags=None, low_memory=False, dynamic=False, information_set='predicted', signal_only=False, suppress_warnings=False)[source]
VARMAX forecasting model from statsmodels.
Direct interface to
VARMAXfromstatsmodels.tsa.statespace.varmax.Vector Autoregressive Moving Average with eXogenous regressors model (VARMAX)
- Parameters:
- orderiterable
The (p,q) order of the model for the number of AR and MA parameters to use.
- trendstr{‘n’,’c’,’t’,’ct’} or iterable, optional
Parameter controlling the deterministic trend polynomial \(A(t)\). Can be specified as a string where ‘c’ indicates a constant (i.e. a degree zero component of the trend polynomial), ‘t’ indicates a linear trend with time, and ‘ct’ is both. Can also be specified as an iterable defining the non-zero polynomial exponents to include, in increasing order. For example,
[1,1,0,1]denotes \(a + bt + ct^3\). Default is a constant trend component.- error_cov_type{‘diagonal’, ‘unstructured’}, optional
The structure of the covariance matrix of the error term, where “unstructured” puts no restrictions on the matrix and “diagonal” requires it to be a diagonal matrix (uncorrelated errors). Default is “unstructured”.
- measurement_errorbool, optional
Whether or not to assume the endogenous observations
endogwere measured with error. Default is False.- enforce_stationaritybool, optional
Whether or not to transform the AR parameters to enforce stationarity in the autoregressive component of the model. Default is True.
- enforce_invertibilitybool, optional
Whether or not to transform the MA parameters to enforce invertibility in the moving average component of the model. Default is True.
- trend_offsetint, optional
The offset at which to start time trend values. Default is 1, so that if
trend='t'the trend is equal to 1, 2, …, n_obs. Typically is only set when the model created by extending a previous dataset.- start_paramsarray_like, optional
Initial guess of the solution for the loglikelihood maximization. If None, the default is given by Model.start_params.
- transformedbool, optional
Whether or not start_params is already transformed. Default is True.
- includes_fixedbool, optional
If parameters were previously fixed with the fix_params method, this argument describes whether or not start_params also includes the fixed parameters, in addition to the free parameters. Default is False.
- cov_typestr, optional
The
cov_typekeyword governs the method for calculating the covariance matrix of parameter estimates. Can be one of:‘opg’ for the outer product of gradient estimator
- ‘oim’ for the observed information matrix estimator, calculated
using the method of Harvey (1989)
- ‘approx’ for the observed information matrix estimator,
calculated using a numerical approximation of the Hessian matrix.
- ‘robust’ for an approximate (quasi-maximum likelihood) covariance
matrix that may be valid even in the presence of some misspecifications. Intermediate calculations use the ‘oim’ method.
- ‘robust_approx’ is the same as ‘robust’ except that the
intermediate calculations use the ‘approx’ method.
‘none’ for no covariance matrix calculation.
Default is ‘opg’ unless memory conservation is used to avoid computing the loglikelihood values for each observation, in which case the default is ‘approx’.
- cov_kwdsdict or None, optional
A dictionary of arguments affecting covariance matrix computation. opg, oim, approx, robust, robust_approx
- ‘approx_complex_step’bool, optional - If True, numerical
approximations are computed using complex-step methods. If False, numerical approximations are computed using finite difference methods. Default is True.
- ‘approx_centered’bool, optional - If True, numerical
approximations computed using finite difference methods use a centered approximation. Default is False.
- methodstr, optional
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. See the notes section below (or scipy.optimize) for the available arguments and for the list of explicit arguments that the basin-hopping solver supports.- maxiterint, optional
The maximum number of iterations to perform.
- full_outputbool, optional
Set to True to have all available output in the Results object’s mle_retvals attribute. The output is dependent on the solver. See LikelihoodModelResults notes section for more information.
- dispbool, optional
Set to True to print convergence messages.
- callbackcallable callback(xk), optional
Called after each iteration, as callback(xk), where xk is the current parameter vector.
- return_paramsbool, optional
Whether or not to return only the array of maximizing parameters. Default is False.
- optim_score{‘harvey’, ‘approx’} or None, optional
The method by which the score vector is calculated. ‘harvey’ uses the method from Harvey (1989), ‘approx’ uses either finite difference or complex step differentiation depending upon the value of
optim_complex_step, and None uses the built-in gradient approximation of the optimizer. Default is None. This keyword is only relevant if the optimization method uses the score.- optim_complex_stepbool, optional
Whether or not to use complex step differentiation when approximating the score; if False, finite difference approximation is used. Default is True. This keyword is only relevant if
optim_scoreis set to ‘harvey’ or ‘approx’.- optim_hessian{‘opg’,’oim’,’approx’}, optional
The method by which the Hessian is numerically approximated. ‘opg’ uses outer product of gradients, ‘oim’ uses the information matrix formula from Harvey (1989), and ‘approx’ uses numerical approximation. This keyword is only relevant if the optimization method uses the Hessian matrix.
- low_memorybool, optional
If set to True, techniques are applied to substantially reduce memory usage. If used, some features of the results object will not be available (including smoothed results and in-sample prediction), although out-of-sample forecasting is possible. Default is False.
- dynamicbool, int, str, or datetime, optional
Integer offset relative to
startat which to begin dynamic prediction. Can also be an absolute date string to parse or a datetime type (these are not interpreted as offsets). Prior to this observation, true endogenous values will be used for prediction; starting with this observation and continuing through the end of prediction, forecasted endogenous values will be used instead.- information_setstr, optional
The information set to condition each prediction on. Default is “predicted”, which computes predictions of period t values conditional on observed data through period t-1; these are one-step-ahead predictions, and correspond with the typical
fittedvaluesresults attribute. Alternatives are “filtered”, which computes predictions of period t values conditional on observed data through period t, and “smoothed”, which computes predictions of period t values conditional on the entire dataset (including also future observations t+1, t+2, …).- signal_onlybool, optional
Whether to compute predictions of only the “signal” component of the observation equation. Default is False. For example, the observation equation of a time-invariant model is \(y_t = d + Z \alpha_t + \varepsilon_t\), and the “signal” component is then \(Z \alpha_t\). If this argument is set to True, then predictions of the “signal” \(Z \alpha_t\) will be returned. Otherwise, the default is for predictions of \(y_t\) to be returned.
- suppress_warningsbool, optional
Many warnings might be thrown inside of statsmodels. If
suppress_warningsis True, all of these warnings will be squelched. Default is False.
- Attributes:
cutoffCut-off = “present time” state of forecaster.
fhForecasting horizon that was passed.
is_fittedWhether
fithas been called.stateState of the estimator.
Notes
Generically, the VARMAX model is specified (see for example chapter 18 of [1]): .. math:
y_t = A(t) + A_1 y_{t-1} + \dots + A_p y_{t-p} + B x_t + \epsilon_t + M_1 \epsilon_{t-1} + \dots M_q \epsilon_{t-q}
where \(\epsilon_t \sim N(0, \Omega)\), and where \(y_t\) is a
k_endog x 1vector. Additionally, this model allows considering the case where the variables are measured with error. Note that in the full VARMA(p,q) case there is a fundamental identification problem in that the coefficient matrices \(\{A_i, M_j\}\) are not generally unique, meaning that for a given time series process there may be multiple sets of matrices that equivalently represent it. See Chapter 12 of [1] for more information. Although this class can be used to estimate VARMA(p,q) models, a warning is issued to remind users that no steps have been taken to ensure identification in this case.References
Examples
>>> from sktime.forecasting.varmax import VARMAX >>> from sktime.datasets import load_macroeconomic >>> from sktime.split import temporal_train_test_split >>> y = load_macroeconomic() >>> forecaster = VARMAX(suppress_warnings=True) >>> forecaster.fit(y[['realgdp', 'unemp']]) VARMAX(...) >>> y_pred = forecaster.predict(fh=[1,4,12])
Methods
check_is_fitted([method_name])Check if the estimator has been fitted.
clone()Obtain a clone of the object with same hyper-parameters and config.
clone_tags(estimator[, tag_names])Clone tags from another object as dynamic override.
create_test_instance([parameter_set])Construct an instance of the class, using first test parameter set.
create_test_instances_and_names([parameter_set])Create list of all test instances and a list of names for them.
fit(y[, X, fh])Fit forecaster to training data.
fit_predict(y[, X, fh, X_pred])Fit and forecast time series at future horizon.
get_class_tag(tag_name[, tag_value_default])Get class tag value from class, with tag level inheritance from parents.
get_class_tags()Get class tags from class, with tag level inheritance from parent classes.
get_config()Get config flags for self.
get_fitted_params([deep])Get fitted parameters.
get_param_defaults()Get object's parameter defaults.
get_param_names([sort])Get object's parameter names.
get_params([deep])Get a dict of parameters values for this object.
get_pretrained_params([deep])Get pretrained parameters of this estimator.
get_tag(tag_name[, tag_value_default, ...])Get tag value from instance, with tag level inheritance and overrides.
get_tags()Get tags from instance, with tag level inheritance and overrides.
get_test_params([parameter_set])Return testing parameter settings for the estimator.
is_composite()Check if the object is composed of other BaseObjects.
load_from_path(serial)Load object from file location.
load_from_serial(serial)Load object from serialized memory container.
predict([fh, X])Forecast time series at future horizon.
predict_interval([fh, X, coverage])Compute/return prediction interval forecasts.
predict_proba([fh, X, marginal])Compute/return fully probabilistic forecasts.
predict_quantiles([fh, X, alpha])Compute/return quantile forecasts.
predict_residuals([y, X])Return residuals of time series forecasts.
predict_var([fh, X, cov])Compute/return variance forecasts.
pretrain(y[, X, fh])Pre-train forecaster on panel (global) data.
reset()Reset the object to a clean post-init state.
save([path, serialization_format])Save serialized self to bytes-like object or to (.zip) file.
score(y[, X, fh])Scores forecast against ground truth, using MAPE (non-symmetric).
set_config(**config_dict)Set config flags to given values.
set_params(**params)Set the parameters of this object.
set_random_state([random_state, deep, ...])Set random_state pseudo-random seed parameters for self.
set_tags(**tag_dict)Set instance level tag overrides to given values.
update(y[, X, update_params])Update cutoff value and, optionally, fitted parameters.
update_predict(y[, cv, X, update_params, ...])Make predictions and update model iteratively over the test set.
update_predict_single([y, fh, X, update_params])Update model with new data and make forecasts.

