predict_rolling | R Documentation |
Forecasts a VAR or VECM by discarding a part of the sample, and recursively generating a series of updated forecasts.
predict_rolling(object, ...)
## S3 method for class 'nlVar'
predict_rolling(object, nroll = 10, n.ahead = 1, refit.every, newdata, ...)
object |
A linear object of class ‘ |
... |
Currently not used. |
nroll |
The number of rolling forecasts |
n.ahead |
An integer specifying the number of forecast steps. |
refit.every |
Determines every how many periods the model is re-estimated. |
newdata |
In case the given model is already estimated on the sub-sample, the out-of-sample data can be provided with this argument. Note it should contain observations to predict the first values, that are also contained in the in-sample. |
This function allows to check the out-of sample forecasting accuracy by
estimating the model on a sub-sample of the original, then making
nroll
forecasts of horizon n.ahead
, each time by updating the
sample. In other words, with a given model estimated on 100 observations, the
function will estimate it on say 90 first obs (nroll=10
), generate a
say 1 step-ahead (n.ahead=1
) from obs 90, then using true value 91 for
to predict value at 92, etc, till the full sample is used.
Unlike with usual predict()
methods, specifiying n.ahead=2
will
not generate a 1 step-ahead and a 2 step-ahead forecasts, but only
nroll
2 step-ahead forecasts.
Note that while the forecasts are updated with new values, the model
estimation is (by default) not updated. This can however be done with the
argument fit.every
, specifiying at which frequency the model should be
re-estimated. By setting it to 1 for example, each time a new observation is
taken, the model is reestimated. This is similar to the
ugarchroll
in package rugarch.
A matrix containing the forecasts.
Matthieu Stigler
predict.nlar
for the standard predict function.
data(barry)
## model estimated on full sample:
mod_vec <- VECM(barry, lag=2)
## generate 10 1-step-ahead forecasts:
preds_roll <- predict_rolling(mod_vec, nroll=10)
## plot the results:
plot(window(barry[,"dolcan"],start=1998), type="l", ylab="barry: dolcan")
preds_roll_ts <- ts(preds_roll$pred, start=time(barry)[nrow(barry)-10], freq=12)
lines(preds_roll_ts[,"dolcan"], col=2, lty=2)
legend("bottomright", lty=c(1,2), col=1:2, leg=c("True", "Fitted"))
title("Comparison of true and rolling 1-ahead forecasts\n")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.