box_cox_vec {timetk} | R Documentation |
Box Cox Transformation
Description
This is mainly a wrapper for the BoxCox transformation from the forecast
R package. The box_cox_vec()
function performs the transformation.
box_cox_inv_vec()
inverts the transformation.
auto_lambda()
helps in selecting the optimal lambda
value.
Usage
box_cox_vec(x, lambda = "auto", silent = FALSE)
box_cox_inv_vec(x, lambda)
auto_lambda(
x,
method = c("guerrero", "loglik"),
lambda_lower = -1,
lambda_upper = 2
)
Arguments
x |
A numeric vector. |
lambda |
The box cox transformation parameter.
If set to "auto", performs automated lambda selection using |
silent |
Whether or not to report the automated |
method |
The method used for automatic |
lambda_lower |
A lower limit for automatic |
lambda_upper |
An upper limit for automatic |
Details
The Box Cox transformation is a power transformation that is commonly used to reduce variance of a time series.
Automatic Lambda Selection
If desired, the lambda
argument can be selected using auto_lambda()
,
a wrapper for the Forecast R Package's forecast::BoxCox.lambda()
function.
Use either of 2 methods:
"guerrero" - Minimizes the non-seasonal variance
"loglik" - Maximizes the log-likelihood of a linear model fit to
x
Value
Returns a numeric
vector that has been transformed.
References
-
Forecasting: Principles & Practices: Transformations & Adjustments
Guerrero, V.M. (1993) Time-series analysis supported by power transformations. Journal of Forecasting, 12, 37–48.
See Also
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()
Other common transformations to reduce variance: log()
, log1p()
and sqrt()
Examples
library(dplyr)
d10_daily <- m4_daily %>% dplyr::filter(id == "D10")
# --- VECTOR ----
value_bc <- box_cox_vec(d10_daily$value)
value <- box_cox_inv_vec(value_bc, lambda = 1.25119350454964)
# --- MUTATE ----
m4_daily %>%
dplyr::group_by(id) %>%
dplyr::mutate(value_bc = box_cox_vec(value))