--- title: "crossval_ts" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{crossval_ts} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r} library(crossvalidation) ``` ```{r} require(forecast) data("AirPassengers") # Example 1 ----- (res1 <- crossval_ts(y=AirPassengers, initial_window = 10, horizon = 3, fcast_func = forecast::thetaf)) print(colMeans(res1)) (res1_parallel <- crossval_ts(y=AirPassengers, initial_window = 10, horizon = 3, fcast_func = forecast::thetaf, cl=2L)) print(colMeans(res1_parallel)) # Example 2 ----- fcast_func <- function (y, h, ...) { forecast::forecast(forecast::auto.arima(y, ...), h=h, ...) } (res2 <- crossval_ts(y=AirPassengers, initial_window = 10, horizon = 3, fcast_func = fcast_func)) print(res2) print(colMeans(res2)) (res2_parallel <- crossval_ts(y=AirPassengers, initial_window = 10, horizon = 3, fcast_func = fcast_func, cl=2L)) print(res2_parallel) print(colMeans(res2_parallel)) # Example 3 ----- fcast_func <- function (y, h, ...) { forecast::forecast(forecast::ets(y, ...), h=h, ...) } (res3 <- crossval_ts(y=AirPassengers, initial_window = 10, horizon = 3, fcast_func = fcast_func)) print(colMeans(res3)) (res3_parallel <- crossval_ts(y=AirPassengers, initial_window = 10, horizon = 3, fcast_func = fcast_func, cl=2L)) print(colMeans(res3_parallel)) # Example 4 ----- (res4 <- crossval_ts(y=AirPassengers, fcast_func = forecast::thetaf, initial_window = 10, horizon = 3, fixed_window = TRUE)) print(colMeans(res4)) (res4_parallel <- crossval_ts(y=AirPassengers, fcast_func = forecast::thetaf, initial_window = 10, horizon = 3, fixed_window = TRUE, cl=2L)) print(colMeans(res4_parallel)) # Example 5 ----- x <- ts(matrix(rnorm(50), nrow = 25)) fcast_func <- function(y, h = 5, type_forecast=c("mean", "median")) { type_forecast <- match.arg(type_forecast) if (type_forecast == "mean") { means <- colMeans(y) return(list(mean = t(replicate(n = h, expr = means)))) } else { medians <- apply(y, 2, median) return(list(mean = t(replicate(n = h, expr = medians)))) } } print(fcast_func(x)) (res5 <- crossval_ts(y = x, fcast_func = fcast_func, fit_params = list(type_forecast = "median"))) colMeans(res5) (res6 <- crossval_ts(y = x, fcast_func = fcast_func, fit_params = list(type_forecast = "mean"))) colMeans(res6) # Example 6 ----- eval_metric <- function(predicted, observed) { error <- observed - predicted$mean res7 <- apply(error, 2, function(x) sqrt(mean(x ^ 2, na.rm = FALSE))) return(res7) } (res8 <- crossval_ts(y = x, fcast_func = fcast_func, fit_params = list(type_forecast = "mean"), eval_metric = eval_metric)) colMeans(res8) ```