get_models() recursively estimates time-series models by using rolling and expanding time windows.

get_models(.tbl, .group, .col, .initial, .assess, .cumulative, .fun, ...)

# S3 method for default
get_models(.tbl, .group, .col, .initial, .assess, .cumulative, .fun, ...)

# S3 method for tbl_df
get_models(.tbl, .group, .col, .initial, .assess, .cumulative, .fun, ...)

Arguments

.tbl

A tidy tibble or an object of the tbl_time class.

.group

The column in which the data should be grouped. This will often be a column with stock tickers or stocks names.

.col

The reference column in which the operations should be based on.

.initial

The number of periods used to train the model in each split.

.assess

The forecast horizon.

.cumulative

If TRUE forecasts accumulate from the origin of each split. If FALSE forecasts are evaluated in a rolling windown. The default is TRUE.

.fun

Currently supports only a forecasting function from the forecast package.

...

Additional parameters to be passed to .fun.

Value

A tidy tibble contaning the following in-sample statistics for each period:

  • term: The parameters estimated by .fun

  • estimate: The values of the estimated parameters

  • model.desc: A description of the model including the three integer components (p, d, q) are the AR order, the degree of differencing, and the MA order.

  • sigma: The square root of the estimated residual variance

  • logLik: The data's log-likelihood under the model

  • AIC: The Akaike Information Criterion

  • BIC: The Bayesian Information Criterion

  • ME: Mean error

  • RMSE: Root mean squared error

  • MAE: Mean absolute error

  • MPE: Mean percentage error

  • MAPE: Mean absolute percentage error

  • MASE: Mean absolute scaled error

  • ACF1: Autocorrelation of errors at lag 1

Details

Under the hood, get_forecasts uses rsample infrastructure to sequentially access the model passed to .fun. The data y1, y2, ..., yt is fitted and the process repeats itself for each stock in the .group column.

See also

Examples

library(YahooTickers)
library(dplyr)
library(forecast)
# Download and forecast time series using the "auto.arima" function
# from the forecast package
get_tickers(dow) %>%
  slice(1:2) %>%
  get_stocks(., periodicity = "monthly") %>%
  get_returns(., tickers, arithmetic, TRUE, ret_adj = adjusted) %>%
  get_models(., tickers, ret_adj, 60, 1, FALSE, auto.arima,
             seasonal = FALSE, stationary = TRUE,
             max.p = 1, max.q = 1)
#> # A tibble: 176 × 17
#>    date       tickers data   term  estimate model.desc  sigma logLik   AIC   BIC
#>    <date>     <fct>   <list> <fct>    <dbl> <fct>       <dbl>  <dbl> <dbl> <dbl>
#>  1 2015-02-01 MMM     <tibb… ar1    -0.217  ARIMA(1,0… 0.0489   97.0 -188. -182.
#>  2 2015-02-01 MMM     <tibb… inte…   0.0152 ARIMA(1,0… 0.0489   97.0 -188. -182.
#>  3 2015-03-01 MMM     <tibb… ar1    -0.218  ARIMA(1,0… 0.0489   96.9 -188. -182.
#>  4 2015-03-01 MMM     <tibb… inte…   0.0156 ARIMA(1,0… 0.0489   96.9 -188. -182.
#>  5 2015-04-01 MMM     <tibb… ar1    -0.236  ARIMA(1,0… 0.0487   97.2 -188. -182.
#>  6 2015-04-01 MMM     <tibb… inte…   0.0147 ARIMA(1,0… 0.0487   97.2 -188. -182.
#>  7 2015-05-01 MMM     <tibb… inte…   0.0128 ARIMA(0,0… 0.0500   95.1 -186. -182.
#>  8 2015-06-01 MMM     <tibb… ar1    -0.209  ARIMA(1,0… 0.0469   99.5 -193. -187.
#>  9 2015-06-01 MMM     <tibb… inte…   0.0149 ARIMA(1,0… 0.0469   99.5 -193. -187.
#> 10 2015-07-01 MMM     <tibb… ar1    -0.211  ARIMA(1,0… 0.0471   99.2 -192. -186.
#> # … with 166 more rows, and 7 more variables: ME <dbl>, RMSE <dbl>, MAE <dbl>,
#> #   MPE <dbl>, MAPE <dbl>, MASE <dbl>, ACF1 <dbl>