SquaringResiduals
Compute the prediction variance based on a separate forecaster.
Wraps a forecaster with another residual_forecaster object that allows for quantile and interval estimation by fitting the residual_forecaster to the rolling residuals.
Fitting proceeds as follows: Let \(t_1, \dots, t_N\) be the train set. Let steps_ahead be a positive integer indicating the steps ahead we want to forecast the residuals. Let initial_window be the minimal number of observations to which the forecaster is fitted.
For \(i = initial\_window, \dots, N - steps\_ahead\)
Train/Update forecaster A on \(y(t_1), \dots, y(t_i)\)
Make point prediction for \(t_{i+steps\_ahead}\) to get \(\hat{y}(t_{i+steps\_ahead})\)
Compute the residual for \(t_{i+steps\_ahead}\) as \(r(t_{i+steps\_ahead}):= y(t_{i+steps\_ahead}) - \hat{y}(t_{i+steps\_ahead})\)
Compute \(e(t_{i+steps\_ahead}):= h(r(t_{i+steps\_ahead}))\) where \(h(x)\) is given by \(strategy\)
Train
residual_forecasteron \(e(t_{initial\_window+steps\_ahead}), \dots, e(t_{N})\)
Prediction for \(t_{N+steps\_ahead}\) is done as follows:
Use
forecasterto predict location param \(\hat{y}(t_{N+steps\_ahead})\)Use
residual_forecasterto predict scale param \(e(t_{N+steps\_ahead})\)Calculate prediction intervals based on e.g. normal assumption \(N(\hat{y}(t_{N+steps\_ahead}), e(t_{N+steps\_ahead}))\)
Quickstart
from sktime.forecasting.squaring_residuals import SquaringResiduals
estimator = SquaringResiduals(forecaster=None, residual_forecaster=None, initial_window=5, strategy='square', distr='norm', distr_kwargs=None)Parameters(7)
- forecastersktime forecaster, BaseForecaster descendant, optional
- Estimator to which probabilistic forecasts are being added Default = NaiveForecaster()
- residual_forecastersktime forecaster, BaseForecaster descendant, optional
- Estimator which is fitted to the residuals of forecaster Default = NaiveForecaster()
- initial_windowint, optional, default=2
- Size of initial_window to which forecaster is fitted
- steps_aheadint, optional, default=1
- Steps ahead for which we predict the residuals
- strategystr, optional, default=’square’
- Function applied to the residuals
- distrstr, optional, default=’norm’
- Distributional assumption ([“norm”, “laplace”, “t”, “cauchy”])
- distr_kwargsdict, optional
- Additional arguments required by the distribution
Examples
>>> from sktime.datasets import load_macroeconomic
>>> from sktime.forecasting.base import ForecastingHorizon
>>> from sktime.forecasting.naive import NaiveForecaster
>>> from sktime.forecasting.theta import ThetaForecaster
>>> from sktime.forecasting.squaring_residuals import SquaringResiduals
>>> fc = NaiveForecaster ()
>>> var_fc = ThetaForecaster ()
>>> y = load_macroeconomic (). realgdp
>>> sqr = SquaringResiduals (forecaster = fc, residual_forecaster = var_fc)
... >>> fh = ForecastingHorizon (values = [1, 2, 3 ])
>>> sqr = sqr. fit (y, fh = fh)
>>> pred_interval = sqr. predict_interval (coverage = 0.95)