R: Group-wise STL Decomposition (Season, Trend, Remainder)

tk_stl_diagnostics {timetk} | R Documentation

## Group-wise STL Decomposition (Season, Trend, Remainder)

### Description

`tk_stl_diagnostics()` is the preprocessor for `plot_stl_diagnostics()`. It helps by automating frequency and trend selection.

### Usage

    tk_stl_diagnostics(
      .data,
      .date_var,
      .value,
      .frequency = "auto",
      .trend = "auto",
      .message = TRUE
    )

### Arguments

`.data` | A `tibble` or `data.frame` with a time-based column
`.date_var` | A column containing either date or date-time values
`.value` | A column containing numeric values
`.frequency` | Controls the seasonal adjustment (removal of seasonality). Input can be either "auto", a time-based definition (e.g. "2 weeks"), or a numeric number of observations per frequency (e.g. 10). Refer to `tk_get_frequency()`.
`.trend` | Controls the trend component. For STL, trend controls the sensitivity of the lowess smoother, which is used to remove the remainder.
`.message` | A boolean. If `TRUE`, will output information related to automatic frequency and trend selection (if applicable).

### Details

The `tk_stl_diagnostics()` function generates a Seasonal-Trend-Loess decomposition. The function is "tidy" in the sense that it works on data frames and is designed to work with `dplyr` groups.

STL method:

The STL method implements time series decomposition using the underlying `stats::stl()`. The decomposition separates the "season" and "trend" components from the "observed" values leaving the "remainder".

Frequency & Trend Selection

The user can control two parameters: `.frequency` and `.trend`.

1. The `.frequency` parameter adjusts the "season" component that is removed from the "observed" values.

2. The `.trend` parameter adjusts the trend window (`t.window` parameter from `stl()`) that is used.

The user may supply both `.frequency` and `.trend` as time-based durations (e.g. "6 weeks") or numeric values (e.g. 180) or "auto", which automatically selects the frequency and/or trend based on the scale of the time series.

### Value

A `tibble` or `data.frame` with Observed, Season, Trend, Remainder, and Seasonally-Adjusted features

### Examples

    library(dplyr)
    library(timetk)

    # ---- GROUPS & TRANSFORMATION ----
    m4_daily %>%
        group_by(id) %>%
        tk_stl_diagnostics(date, box_cox_vec(value))

    # ---- CUSTOM TREND ----
    m4_weekly %>%
        group_by(id) %>%
        tk_stl_diagnostics(date, box_cox_vec(value), .trend = "2 quarters")

[Package timetk version 2.4.0 Index]