| break_ts | R Documentation | 
This function 'breaks' a time series by introducing gaps either around (a) n randomly chosen positions or (b) user-defined positions. The width of each gap is determined by user-supplied functions which define the amount of time around each position to be removed. Datasets comprising multiple, independent time series can be broken by different amounts and/or at different positions. This can be useful to explore the effects of gaps in real-world data for model inferences (e.g. a model's ability to correctly infer the effects of covariates acting at different scales for different individuals with different amounts of missing data).
break_ts(
  dat,
  timestamp,
  ind = NULL,
  n = 1,
  pos = list(),
  before = list(function(break_t) {
     break_t - 43200
 }),
  after = list(function(break_t) {
     break_t + 43200
 }),
  output = 1
)
dat | 
 A dataframe to be broken. As a minimum, the dataframe should include a column which defines time stamps (see below).  | 
timestamp | 
 A character string defining the column name in   | 
ind | 
 A character string defining the column name in   | 
n | 
 A number or a numeric vector defining the number of breaks in each unique time series. Alternatively,   | 
pos | 
 A list of positions at which to break each unique time series. This can be provided instead of   | 
before | 
 A list containing a function/functions which define(s) the number of time steps before each break position to be included in the break.  | 
after | 
 As above, but after the break position.  | 
output | 
 A numeric value defining the output type. If   | 
The function returns a list or a dataframe, depending on the input to output (see above).
Edward Lavender
#### Simulate some data
# First, we will consider a single, continuous, regular time series:
# Define a sequence of time stamps
t <- seq.POSIXt(as.POSIXct("2016-01-01"), as.POSIXct("2016-01-10"), by = "2 mins")
# Define a dataframe
dat <- data.frame(timestamp = t)
#### Example (1): Break a time series at one position using default options
break_ts_ls <-
  break_ts(dat = dat,
           timestamp = "timestamp",
           n = 1)
# By default, the function returns a list:
utils::str(break_ts_ls)
# We have broken the time series around n = 1 randomly chosen position(s),
# ... removing 721 rows
# ... based on the default before() and after() functions
length(which(break_ts_ls$breaks))
length(break_ts_ls$pos_breaks)
nrow(dat) - length(break_ts_ls$dat_broken)
#### Example (2) Break a time series at multiple randomly chosen positions
break_ts_ls <-
  break_ts(dat = dat,
           timestamp = "timestamp",
           n = 2)
utils::str(break_ts_ls)
#### Example (3) The function can handle dat comprising multiple independent time series
# Simulate data and a unique flag for each independent time series
dat <- data.frame(timestamp = rep(t, 2))
dat$ind <- c(rep(1, length(t)), rep(2, length(t)))
# Break each independent time series around n = 1 randomly chosen position(s)
break_ts_ls <-
  break_ts(dat = dat,
           timestamp = "timestamp",
           ind = "ind",
           n = 1)
utils::str(break_ts_ls)
#### Example (4) Break each time series by different amounts by supplying a vector to n
break_ts_ls <-
  break_ts(dat = dat,
           timestamp = "timestamp",
           ind = "ind",
           n = c(1, 20))
utils::str(break_ts_ls)
#### Example (5) Break each time series at custom positions by supplying a list of positions
# In this case, we'll break the time series at the same positions
break_ts_ls <-
  break_ts(dat = dat,
           timestamp = "timestamp",
           ind = "ind",
           pos = lapply(1:length(unique(dat$ind)), function(i){ c(50, 100, 1000) }))
utils::str(break_ts_ls)
#### Example (6) Break each time series by different amounts
before_funs <- list(function(break_t){ break_t - 10 }, function(break_t){ break_t - 100 })
after_funs <- list(function(break_t){ break_t +10 }, function(break_t){ break_t +100 })
break_ts_ls <-
  break_ts(dat = dat,
           timestamp = "timestamp",
           ind = "ind",
           n = 1,
           before = before_funs,
           after = after_funs)
utils::str(break_ts_ls)
#### Example (7) Change output format to return the broken dataframe
dat_broken <-
  break_ts(dat = dat,
           timestamp = "timestamp",
           ind = "ind",
           n = 2,
           output = 2)
utils::str(dat_broken)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.