ForecastX
Forecaster that forecasts exogenous data for use in an endogeneous forecast.
Quickstart
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 asforecaster_y- fh_XNone, ForecastingHorizon, or valid input to construct ForecastingHorizon
optional, default = None = same as used for
yin any instance. valid inputs to constructForecastingHorizonare: int, list of int, 1D np.ndarray, pandas.Index (see ForecastingHorizon)- behaviourstr, one of “update” or “refit”, optional, default = “update”
if “update”,
forecaster_Xis fit to the data batch seen infit,
and updated with any
Xseen in calls ofupdate. Forecast added toXinpredictis obtained from this state.if “refit”, then
forecaster_Xis fit toXinpredictonly,
Forecast added to
Xinpredictis obtained from this state.- columnsNone, or pandas compatible index iterator (e.g., list of str), optional
default = None = all columns in
Xare used for forecast columns to whichforecaster_Xis applied. If notNone, must be a non-empty list of valid column names. Note that[]andNonedo not imply the same.- fit_behaviourstr, one of “use_actual” (default), “use_forecast”, optional,
if “use_actual”, then
forecaster_yuses the actualXas
exogenous features in
fit* if “use_forecast”, thenforecaster_yuses theXpredicted byforecaster_Xas exogenous features infit- forecaster_X_exogeneousoptional, str, one of “None” (default), or “complement”,
or
pandas.Indexcoercibleif “None”, then
forecaster_Xuses no exogenous dataif “complement”, then
forecaster_Xuses the complement of the
columnsas exogenous data to forecast. This is typically useful if the complement ofcolumnsis known to be available in the future. * if apandas.Indexcoercible, then uses columns indexed by the index after coercion, inXpassed (converted to pandas)- predict_behaviourstr, optional (default = “use_forecasts”)
- if “use_forecasts”, then
forecaster_Xpredictions are always used asinputs in
forecaster_y, even if passedXhas future values
- if “use_forecasts”, then
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))