decompose

0th

Percentile

Classical Seasonal Decomposition by Moving Averages

Decompose a time series into seasonal, trend and irregular components using moving averages. Deals with additive or multiplicative seasonal component.

Keywords
ts
Usage
decompose(x, type = c("additive", "multiplicative"), filter = NULL)
Arguments
x
A time series.
type
The type of seasonal component. Can be abbreviated.
filter
A vector of filter coefficients in reverse time order (as for AR or MA coefficients), used for filtering out the seasonal component. If NULL, a moving average with symmetric window is performed.
Details

The additive model used is: $$Y_t = T_t + S_t + e_t$$ The multiplicative model used is: $$Y_t = T_t\,S_t\, e_t$$

The function first determines the trend component using a moving average (if filter is NULL, a symmetric window with equal weights is used), and removes it from the time series. Then, the seasonal figure is computed by averaging, for each time unit, over all periods. The seasonal figure is then centered. Finally, the error component is determined by removing trend and seasonal figure (recycled as needed) from the original time series.

This only works well if x covers an integer number of complete periods.

Value

An object of class "decomposed.ts" with following components:
x
The original series. (Only since R 2.14.0.)
seasonal
The seasonal component (i.e., the repeated seasonal figure).
figure
The estimated seasonal figure only.
trend
The trend component.
random
The remainder part.
type
The value of type.

Note

The function stl provides a much more sophisticated decomposition.

References

M. Kendall and A. Stuart (1983) The Advanced Theory of Statistics, Vol.3, Griffin. pp.\ifelse{latex}{\out{~}}{ } 410--414.

See Also

stl

Aliases
  • decompose
  • plot.decomposed.ts
Examples
library(stats) require(graphics) m <- decompose(co2) m$figure plot(m) ## example taken from Kendall/Stuart x <- c(-50, 175, 149, 214, 247, 237, 225, 329, 729, 809, 530, 489, 540, 457, 195, 176, 337, 239, 128, 102, 232, 429, 3, 98, 43, -141, -77, -13, 125, 361, -45, 184) x <- ts(x, start = c(1951, 1), end = c(1958, 4), frequency = 4) m <- decompose(x) ## seasonal figure: 6.25, 8.62, -8.84, -6.03 round(decompose(x)$figure / 10, 2)
Documentation reproduced from package stats, version 3.2.1, License: Part of R 3.2.1

Community examples

Looks like there are no examples yet.