R: Tidying methods for seasonal decompositions

decompose_tidiers {broom} | R Documentation

## Tidying methods for seasonal decompositions

### Description

These tidiers provide an `augment` method for the results of a seasonal decomposition with `decompose` or `stl`.

### Usage

    ## S3 method for class 'decomposed.ts'
    augment(x, ...)

    ## S3 method for class 'stl'
    augment(x, weights = TRUE, ...)

### Arguments

`x` | An object of class `"stl"` or `"decomposed.ts"`, resulting from a call to `decompose` or `stl`.
`...` | Extra arguments. Unused.
`weights` | Whether to include the robust weights in the output.

### Details

The `augment` method returns the computed seasonal and trend components, as well as the "remainder" term and the seasonally adjusted (or "deseasonalised") series.

### Value

The `augment` method returns a tidy data frame with the following columns:

`.seasonal`

  The seasonal component of the decomposition.

`.trend`

  The trend component of the decomposition.

`.remainder`

  The remainder, or "random" component of the decomposition.

`.weight`

  The final robust weights (`stl` only).

`.seasadj`

  The seasonally adjusted (or "deseasonalised") series.

### Author(s)

Aaron Jacobs

### See Also

`decompose`, `stl`

### Examples

    # Time series of temperatures in Nottingham, 1920-1939:
    nottem

    # Perform seasonal decomposition on the data with both decompose
    # and stl:
    d1 <- stats::decompose(nottem)
    d2 <- stats::stl(nottem, s.window = "periodic", robust = TRUE)

    # Compare the original series to its decompositions.

    cbind(broom::tidy(nottem), broom::augment(d1),
          broom::augment(d2))

    # Visually compare seasonal decompositions in tidy data frames.

    library(tibble)
    library(dplyr)
    library(tidyr)
    library(ggplot2)

    decomps <- tibble(
        # Turn the ts objects into data frames.
        series = list(broom::tidy(nottem), broom::tidy(nottem)),
        # Add the models in, one for each row.
        decomp = c("decompose", "stl"),
        model = list(d1, d2)
    ) %>%
        rowwise() %>%
        # Pull out the fitted data using broom::augment.
        mutate(augment = list(broom::augment(model))) %>%
        ungroup() %>%
        # Unnest the data frames into a tidy arrangement of
        # the series next to its seasonal decomposition, grouped
        # by the method (stl or decompose).
        group_by(decomp) %>%
        unnest(series, augment) %>%
        mutate(index = 1:n()) %>%
        ungroup() %>%
        select(decomp, index, x, adjusted = .seasadj)

    ggplot(decomps) +
        geom_line(aes(x = index, y = x), colour = "black") +
        geom_line(aes(x = index, y = adjusted, colour = decomp,
                      group = decomp))

[Package broom version 0.4.4 Index]