Time series cross-validation 3

December 12, 2011

(This article was first published on Modern Toolmaking, and kindly contributed to R-bloggers)

I’ve updated my time-series cross validation algorithm to fix some bugs and allow for a possible xreg term.     This allows for cross-validation of multivariate models, so long as they are specified as a function with the following paramters: x (the series to model), xreg (independent variables, optional), newxreg (xregs for the forecast), and h (the number of periods to forecast).  Note that h should equal the number of rows in the xreg matrix.  Also note that you need to forecast the xreg object BEFORE forecasting your x object.  For example, if you wish to forecast 12 months into the future, your xreg object should have 12 extra rows.

Here is the source code for the new function:

And here is an example, using a linear model with xregs:

I am particularly excited about this code because it will allow me to apply arbitrary machine learning algorithms to forecasting problems.  For example, I could create an xreg matrix of lags and use a support vector machine, neural network, or random forest to make 1-step forecasts.  I am planning to release this code as a package on CRAN, once I finish the documentation.  I’m also planning to re-work the function a bit to return an S3 class, containing:

  1. Predicted values at each forecast horizon, including beyond the length of the input time series.
  2. Actual values at each forecast horizon, for easy comparison to #1.
  3. Matrix of average error at each horizon.
  4. The final model.
  5. Forecasts using the final model, from the last observation of x to the “max horizon”.
  6. A print method that will show #3.
  7. A plot method that will plot #3.
Let me know if you have any suggestions or spot any bugs!

To leave a comment for the author, please follow the link and comment on their blog: Modern Toolmaking.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Search R-bloggers


Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)