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.