Beginning on page 27 of the X13-ARIMA-SEATS Reference Manual you can find the definitive description of the algorithm.
reprex below, it is possible to see that the plots contain four panels: data, trend, seasonal component and remainder. Data and trend are identical and on the same scale. Remainders are the difference between data and trend + seasonal. Classical decomposition differs from the other three in that the seasonal component is a constant repeating pattern.
In classical decomposition, we assume that the seasonal component is constant from year to year.
The other three methods relieve that assumption. In X11, the seasonal component is allowed slowly to vary. In X13 an iterative algorithm is used to derive the seasonal components. In STL, the rate of change and also the trend smoothness can be set by the user.
The apparent "inconsistency" is due to the scale effect; compare the y-axis of the top two panels to the bottom two.
#> ── Attaching packages ────────────────────────────────────────────── fpp3 0.5 ──
#> ✔ tibble 3.2.1 ✔ tsibble 1.1.3
#> ✔ dplyr 1.1.2 ✔ tsibbledata 0.4.1
#> ✔ tidyr 1.3.0 ✔ feasts 0.3.1
#> ✔ lubridate 1.9.2 ✔ fable 0.3.3
#> ✔ ggplot2 3.4.2 ✔ fabletools 0.3.3
#> ── Conflicts ───────────────────────────────────────────────── fpp3_conflicts ──
#> ✖ lubridate::date() masks base::date()
#> ✖ dplyr::filter() masks stats::filter()
#> ✖ tsibble::intersect() masks base::intersect()
#> ✖ tsibble::interval() masks lubridate::interval()
#> ✖ dplyr::lag() masks stats::lag()
#> ✖ tsibble::setdiff() masks base::setdiff()
#> ✖ tsibble::union() masks base::union()
# STL decomposition, Fig 3.7
us_retail_employment <- us_employment |>
filter(year(Month) >= 1990, Title == "Retail Trade") |>
dcmp <- us_retail_employment |> model(stl = STL(Employed))
components(dcmp) |> autoplot()
# Classical decomposition Fig. 3.13
classical_decomposition(Employed, type = "additive")
labs(title = "Classical additive decomposition of total
US retail employment")
#> Warning: Removed 6 rows containing missing values (`geom_line()`).
# X-11 decomposition Fig. 3.14
x11_dcmp <- us_retail_employment |>
model(x11 = X_13ARIMA_SEATS(Employed ~ x11())) |>
"Decomposition of total US retail employment using X-11.")
# SEATS Fig. 3.17
seats_dcmp <- us_retail_employment |>
model(seats = X_13ARIMA_SEATS(Employed ~ seats())) |>
"Decomposition of total US retail employment using SEATS")
Created on 2023-08-06 with reprex v2.0.2