# diff_vec: Differencing Transformation In timetk: A Tool Kit for Working with Time Series in R

## Description

`diff_vec()` applies a Differencing Transformation. `diff_inv_vec()` inverts the differencing transformation.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10``` ```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) ```

## Arguments

 `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. 1 Difference is equivalent to measuring period change. 2 Differences is equivalent to measuring period acceleration. `log` If log differences should be calculated. Note that difference inversion of a log-difference is approximate. `initial_values` Only used in the `diff_vec_inv()` operation. A numeric vector of the initial values, which are used to invert differences. This vector is the original values that are the length of the `NA` missing differences. `silent` Whether or not to report the initial values used to invert the difference as a message.

## Details

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.

## Value

A numeric vector

• `step_diff()` - Recipe for `tidymodels` workflow

• `tk_augment_differences()` - Adds many differences to a `data.frame` (`tibble`)

• 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()`

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33``` ```library(dplyr) library(timetk) # --- 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 ) ) ```

timetk documentation built on Jan. 19, 2021, 1:06 a.m.