Back to models
Forecaster

ForecastX

Forecaster that forecasts exogenous data for use in an endogeneous forecast.

Quickstart

python
from sktime.forecasting.compose import ForecastX

estimator = ForecastX(forecaster_y, forecaster_X=None, fh_X=None, behaviour='update', columns=None, fit_behaviour='use_actual', forecaster_X_exogeneous='None', predict_behaviour='use_forecasts')

Parameters(8)

forecaster_yBaseForecaster

sktime forecaster to use for endogeneous data y

forecaster_XBaseForecaster, optional

sktime forecaster to use for exogenous data X, default = None = same as forecaster_y

fh_XNone, ForecastingHorizon, or valid input to construct ForecastingHorizon

optional, default = None = same as used for y in any instance. valid inputs to construct ForecastingHorizon are: int, list of int, 1D np.ndarray, pandas.Index (see ForecastingHorizon)

behaviourstr, one of “update” or “refit”, optional, default = “update”
  • if “update”, forecaster_X is fit to the data batch seen in fit,

and updated with any X seen in calls of update. Forecast added to X in predict is obtained from this state.

  • if “refit”, then forecaster_X is fit to X in predict only,

Forecast added to X in predict is obtained from this state.

columnsNone, or pandas compatible index iterator (e.g., list of str), optional

default = None = all columns in X are used for forecast columns to which forecaster_X is applied. If not None, must be a non-empty list of valid column names. Note that [] and None do not imply the same.

fit_behaviourstr, one of “use_actual” (default), “use_forecast”, optional,
  • if “use_actual”, then forecaster_y uses the actual X as

exogenous features in fit * if “use_forecast”, then forecaster_y uses the X predicted by forecaster_X as exogenous features in fit

forecaster_X_exogeneousoptional, str, one of “None” (default), or “complement”,

or pandas.Index coercible

  • if “None”, then forecaster_X uses no exogenous data

  • if “complement”, then forecaster_X uses the complement of the

columns as exogenous data to forecast. This is typically useful if the complement of columns is known to be available in the future. * if a pandas.Index coercible, then uses columns indexed by the index after coercion, in X passed (converted to pandas)

predict_behaviourstr, optional (default = “use_forecasts”)
  • if “use_forecasts”, then forecaster_X predictions are always used as

    inputs in forecaster_y, even if passed X has future values

Examples

>>> from sktime.datasets import load_longley
>>> from sktime.forecasting.arima import ARIMA
>>> from sktime.forecasting.base import ForecastingHorizon
>>> from sktime.forecasting.compose import ForecastX
>>> from sktime.forecasting.var import VAR
>>> y, X = load_longley ()
>>> fh = ForecastingHorizon ([1, 2, 3 ])
>>> pipe = ForecastX (
... forecaster_X = VAR (),
... forecaster_y = ARIMA (),
... )
>>> pipe = pipe. fit (y, X = X, fh = fh)
>>> # this now works without X from the future of y!
>>> y_pred = pipe. predict (fh = fh) to forecast only some columns, use the columns arg, and pass known columns to predict:
>>> columns = ["ARMED", "POP" ]
>>> pipe = ForecastX (
... forecaster_X = VAR (),
... forecaster_y = SARIMAX (),
... columns = columns,
... )
>>> pipe = pipe. fit (y_train, X = X_train, fh = fh)
>>> # dropping ["ARMED", "POP"] = columns where we expect not to have future values
>>> y_pred = pipe. predict (fh = fh, X = X_test. drop (columns = columns))