| diff_vec | R Documentation | 
diff_vec() applies a Differencing Transformation.
diff_inv_vec() inverts the differencing transformation.
diff_vec(
  x,
  lag = 1,
  difference = 1,
  log = FALSE,
  initial_values = NULL,
  silent = FALSE
)
diff_inv_vec(x, lag = 1, difference = 1, log = FALSE, initial_values = NULL)
x | 
 A numeric vector to be differenced or inverted.  | 
lag | 
 Which lag (how far back) to be included in the differencing calculation.  | 
difference | 
 The number of differences to perform. 
  | 
log | 
 If log differences should be calculated. Note that difference inversion of a log-difference is approximate.  | 
initial_values | 
 Only used in the   | 
silent | 
 Whether or not to report the initial values used to invert the difference as a message.  | 
Benefits:
This function is NA padded by default so it works well with dplyr::mutate() operations.
Difference Calculation
Single differencing, diff_vec(x_t) is equivalent to: x_t - x_t1,
where the subscript _t1 indicates the first lag.
This transformation can be interpereted as change.
Double Differencing Calculation
Double differencing, diff_vec(x_t, difference = 2) is equivalent to:
(x_t - x_t1) - (x_t - x_t1)_t1, where the subscript _t1 indicates the first lag.
This transformation can be interpereted as acceleration.
Log Difference Calculation
Log differencing, diff_vec(x_t, log = TRUE) is equivalent to:
log(x_t) - log(x_t1) = log(x_t / x_t1), where x_t is the series and x_t1 is the first lag.
The 1st difference diff_vec(difference = 1, log = TRUE) has an interesting property
where diff_vec(difference = 1, log = TRUE) %>% exp() is approximately 1 + rate of change.
A numeric vector
Advanced Differencing and Modeling:
step_diff() - Recipe for tidymodels workflow
tk_augment_differences() - Adds many differences to a data.frame (tibble)
Additional Vector Functions:
 Box Cox Transformation: box_cox_vec()
 Lag Transformation: lag_vec()
 Differencing Transformation: diff_vec()
 Rolling Window Transformation: slidify_vec()
 Loess Smoothing Transformation: smooth_vec()
 Fourier Series: fourier_vec()
 Missing Value Imputation for Time Series: ts_impute_vec(), ts_clean_vec()
library(dplyr)
# --- USAGE ----
diff_vec(1:10, lag = 2, difference = 2) %>%
    diff_inv_vec(lag = 2, difference = 2, initial_values = 1:4)
# --- VECTOR ----
# Get Change
1:10 %>% diff_vec()
# Get Acceleration
1:10 %>% diff_vec(difference = 2)
# Get approximate rate of change
1:10 %>% diff_vec(log = TRUE) %>% exp() - 1
# --- MUTATE ----
m4_daily %>%
    group_by(id) %>%
    mutate(difference = diff_vec(value, lag = 1)) %>%
    mutate(
        difference_inv = diff_inv_vec(
            difference,
            lag = 1,
            # Add initial value to calculate the inverse difference
            initial_values = value[1]
        )
    )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.