Time-based Resampling
These resampling functions are focused on various forms of time series resampling.
sliding_window()
uses the row number when computing the resampling
indices. It is independent of any time index, but is useful with
completely regular series.
sliding_index()
computes resampling indices relative to the index
column. This is often a Date or POSIXct column, but doesn't have to be.
This is useful when resampling irregular series, or for using irregular
lookback periods such as lookback = lubridate::years(1)
with daily
data (where the number of days in a year may vary).
sliding_period()
first breaks up the index
into less granular groups
based on period
, and then uses that to construct the resampling indices.
This is extremely useful for constructing rolling monthly or yearly
windows from daily data.
sliding_window( data, ..., lookback = 0L, assess_start = 1L, assess_stop = 1L, complete = TRUE, step = 1L, skip = 0L ) sliding_index( data, index, ..., lookback = 0L, assess_start = 1L, assess_stop = 1L, complete = TRUE, step = 1L, skip = 0L ) sliding_period( data, index, period, ..., lookback = 0L, assess_start = 1L, assess_stop = 1L, complete = TRUE, step = 1L, skip = 0L, every = 1L, origin = NULL )
data |
A data frame. |
... |
These dots are for future extensions and must be empty. |
lookback |
The number of elements to look back from the current element when computing the resampling indices of the analysis set. The current row is always included in the analysis set.
In all cases, |
assess_start, assess_stop |
This combination of arguments determines
how far into the future to look when constructing the assessment set.
Together they construct a range of
Generally,
|
complete |
A single logical. When using |
step |
A single positive integer. After computing the resampling
indices, |
skip |
A single positive integer, or zero. After computing the
resampling indices, the first |
index |
The index to compute resampling indices relative to, specified
as a bare column name. This must be an existing column in
The |
period |
The period to group the |
every |
A single positive integer. The number of periods to group together. For example, if the |
origin |
The reference date time value. The default when left
as This is generally used to define the anchor time to count from,
which is relevant when the |
slider::slide()
, slider::slide_index()
, and slider::slide_period()
,
which power these resamplers.
library(vctrs) library(tibble) library(modeldata) data("Chicago") index <- new_date(c(1, 3, 4, 7, 8, 9, 13, 15, 16, 17)) df <- tibble(x = 1:10, index = index) df # Look back two rows beyond the current row, for a total of three rows # in each analysis set. Each assessment set is composed of the two rows after # the current row. sliding_window(df, lookback = 2, assess_stop = 2) # Same as before, but step forward by 3 rows between each resampling slice, # rather than just by 1. rset <- sliding_window(df, lookback = 2, assess_stop = 2, step = 3) rset analysis(rset$splits[[1]]) analysis(rset$splits[[2]]) # Now slide relative to the `index` column in `df`. This time we look back # 2 days from the current row's `index` value, and 2 days forward from # it to construct the assessment set. Note that this series is irregular, # so it produces different results than `sliding_window()`. Additionally, # note that it is entirely possible for the assessment set to contain no # data if you have a highly irregular series and "look forward" into a # date range where no data points actually exist! sliding_index(df, index, lookback = 2, assess_stop = 2) # With `sliding_period()`, we can break up our date index into less granular # chunks, and slide over them instead of the index directly. Here we'll use # the Chicago data, which contains daily data spanning 16 years, and we'll # break it up into rolling yearly chunks. Three years worth of data will # be used for the analysis set, and one years worth of data will be held out # for performance assessment. sliding_period( Chicago, date, "year", lookback = 2, assess_stop = 1 ) # Because `lookback = 2`, three years are required to form a "complete" # window of data. To allow partial windows, set `complete = FALSE`. # Here that first constructs two expanding windows until a complete three # year window can be formed, at which point we switch to a sliding window. sliding_period( Chicago, date, "year", lookback = 2, assess_stop = 1, complete = FALSE ) # Alternatively, you could break the resamples up by month. Here we'll # use an expanding monthly window by setting `lookback = Inf`, and each # assessment set will contain two months of data. To ensure that we have # enough data to fit our models, we'll `skip` the first 4 expanding windows. # Finally, to thin out the results, we'll `step` forward by 2 between # each resample. sliding_period( Chicago, date, "month", lookback = Inf, assess_stop = 2, skip = 4, step = 2 )
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.