`R/train_functions.R`

`ts_grid.Rd`

Tuning time series models with grid search approach using backtesting method. If set to "auto" (default), will use all available cores in the system minus 1

ts_grid(ts.obj, model, optim = "MAPE", periods, window_length = NULL, window_space, window_test, hyper_params, parallel = TRUE, n.cores = "auto")

ts.obj | A univariate time series object of a class "ts" |
---|---|

model | A string, defines the model c("HoltWinters"), currently support only Holt-Winters model |

optim | A string, set the optimization method - c("MAPE", "RMSE") |

periods | A string, set the number backtesting periods |

window_length | An integer, defines the length of the backtesting training window. If set to NULL (default) will use an expending window starting the from the first observation, otherwise will use a sliding window. |

window_space | An integer, set the space length between each of the backtesting training partition |

window_test | An integer, set the length of the backtesting testing partition |

hyper_params | A list, defines the tuning parameters and their range |

parallel | Logical, if TRUE use multiple cores in parallel |

n.cores | Set the number of cores to use if the parallel argument is set to TRUE. If set to "auto" (default), will use n-1 of the available cores |

A list

# NOT RUN { data(USgas) # Starting with a shallow search (sequence between 0 and 1 with jumps of 0.1) # To speed up the process, will set the parallel option to TRUE # to run the search in parallel using 8 cores hw_grid_shallow <- ts_grid(ts.obj = USgas, periods = 6, model = "HoltWinters", optim = "MAPE", window_space = 6, window_test = 12, hyper_params = list(alpha = seq(0.01, 1,0.1), beta = seq(0.01, 1,0.1), gamma = seq(0.01, 1,0.1)), parallel = TRUE, n.cores = 8) # Use the parameter range of the top 20 models # to set a narrow but more agressive search a_min <- min(hw_grid_shallow$grid_df$alpha[1:20]) a_max <- max(hw_grid_shallow$grid_df$alpha[1:20]) b_min <- min(hw_grid_shallow$grid_df$beta[1:20]) b_max <- max(hw_grid_shallow$grid_df$beta[1:20]) g_min <- min(hw_grid_shallow$grid_df$gamma[1:20]) g_max <- max(hw_grid_shallow$grid_df$gamma[1:20]) hw_grid_second <- ts_grid(ts.obj = USgas, periods = 6, model = "HoltWinters", optim = "MAPE", window_space = 6, window_test = 12, hyper_params = list(alpha = seq(a_min, a_max,0.05), beta = seq(b_min, b_max,0.05), gamma = seq(g_min, g_max,0.05)), parallel = TRUE, n.cores = 8) md <- HoltWinters(USgas, alpha = hw_grid_second$alpha, beta = hw_grid_second$beta, gamma = hw_grid_second$gamma) library(forecast) fc <- forecast(md, h = 60) plot_forecast(fc) # }