R: Time Series Cross Validation

time_series_cv {timetk} | R Documentation

## Time Series Cross Validation

### Description

Create `rsample` cross validation sets for time series. This function produces a sampling plan starting with the most recent time series observations, rolling backwards. The sampling procedure is similar to `rsample::rolling_origin()`, but places the focus of the cross validation on the most recent time series data.

### Usage

    time_series_cv(
      data,
      date_var = NULL,
      initial = 5,
      assess = 1,
      skip = 1,
      lag = 0,
      cumulative = FALSE,
      slice_limit = n(),
      ...
    )

### Arguments

`data` | A data frame.
`date_var` | A date or date-time variable.
`initial` | The number of samples used for analysis/modeling in the initial resample.
`assess` | The number of samples used for each assessment resample.
`skip` | A integer indicating how many (if any) additional resamples to skip to thin the total amount of data points in the analysis resample. See the example below.
`lag` | A value to include an lag between the assessment and analysis set. This is useful if lagged predictors will be used during training and testing.
`cumulative` | A logical. Should the analysis resample grow beyond the size specified by `initial` at each resample?.
`slice_limit` | The number of slices to return. Set to `dplyr::n()`, which returns the maximum number of slices.
`...` | Not currently used.

### Details

Time-Based Specification

the `initial`, `assess`, `skip`, and `lag` variables can be specified as:

- Numeric: `initial = 24`

- Time-Based Phrases: `initial = "2 years"`, if the `data` contains a `date_var` (date or datetime)

Initial (Training Set) and Assess (Testing Set)

The main options, `initial` and `assess`, control the number of data points from the original data that are in the analysis (training set) and the assessment (testing set), respectively.

Skip

`skip` enables the function to not use every data point in the resamples. When `skip = 1`, the resampling data sets will increment by one position.

Example: Suppose that the rows of a data set are consecutive days. Using `skip = 7` will make the analysis data set operate on weeks instead of days. The assessment set size is not affected by this option.

Lag

The Lag parameter creates an overlap between the Testing set. This is needed when lagged predictors are used.

Cumulative vs Sliding Window

When `cumulative = TRUE`, the `initial` parameter is ignored and the analysis (training) set will grow as resampling continues while the assessment (testing) set size will always remain static.

When `cumulative = FALSE`, the `initial` parameter fixes the analysis (training) set and resampling occurs over a fixed window.

Slice Limit

This controls the number of slices. If `slice_limit = 5`, only the most recent 5 slices will be returned.

### Value

An tibble with classes `time_series_cv`, `rset`, `tbl_df`, `tbl`, and `data.frame`. The results include a column for the data split objects and a column called `id` that has a character string with the resample identifier.

### See Also

- `time_series_cv()` and `rsample::rolling_origin()` - Functions used to create time series resample specfications.

- `plot_time_series_cv_plan()` - The plotting function used for visualizing the time series resample plan.

### Examples

    library(tidyverse)
    library(timetk)

    # DATA ----
    m750 <- m4_monthly %>% filter(id == "M750")

    m750 %>% plot_time_series(date, value)

    # RESAMPLE SPEC ----
    resample_spec <- time_series_cv(data = m750,
                                    initial     = "6 years",
                                    assess      = "24 months",
                                    skip        = "24 months",
                                    cumulative  = FALSE,
                                    slice_limit = 3)

    resample_spec

    # VISUALIZE CV PLAN ----

    # Select date and value columns from the tscv diagnostic tool
    resample_spec %>% tk_time_series_cv_plan()

    # Plot the date and value columns to see the CV Plan
    resample_spec %>% plot_time_series_cv_plan(date, value, .interactive = FALSE)

[Package timetk version 2.0.0 Index]