R: Box Cox Transformation

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. The `box_cox_inv_vec()` inverts the transformation. The `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 `auto_lambda()`.
`silent` | Whether or not to report the automated `lambda` selection as a message.
`method` | The method used for automatic `lambda` selection. Either "guerrero" or "loglik".
`lambda_lower` | A lower limit for automatic `lambda` selection
`lambda_upper` | An upper limit for automatic `lambda` selection

### 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:

1. "guerrero" - Minimizes the non-seasonal variance

2. "loglik" - Maximizes the log-likelihood of a linear model fit to `x`

### References

- Forecast R Package

- 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)
    library(timetk)

    d10_daily <- m4_daily %>% 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 %>%
        group_by(id) %>%
        mutate(value_bc = box_cox_vec(value))

[Package timetk version 2.5.0 Index]