Componentes

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.4.4     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.0
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(fpp3)
── Attaching packages ────────────────────────────────────────────── fpp3 0.5 ──
✔ tsibble     1.1.3     ✔ fable       0.3.3
✔ tsibbledata 0.4.1     ✔ fabletools  0.3.4
✔ feasts      0.3.1     
── 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()
empleo_tsbl <- us_employment |> 
  filter(year(Month)>=1990, Title=="Retail Trade") |> 
  select(-Series_ID)

#Download to csv
# Para crear una carpeta
#dir.create("datos")
#us_retail_employment |> 
#  write_csv("datos/empleo_eeuu.csv")
autoplot(empleo_tsbl)
Plot variable not specified, automatically selected `.vars = Employed`

Classical decomposition

empleo_decomp <- empleo_tsbl |> 
  model(
    clasica=classical_decomposition(Employed,
                                    type="additive")
  )

empleo_decomp
# A mable: 1 x 1
          clasica
          <model>
1 <DECOMPOSITION>

Components

empleo_components <- empleo_decomp |> 
  components()
empleo_components
# A dable: 357 x 7 [1M]
# Key:     .model [1]
# :        Employed = trend + seasonal + random
   .model      Month Employed  trend seasonal random season_adjust
   <chr>       <mth>    <dbl>  <dbl>    <dbl>  <dbl>         <dbl>
 1 clasica 1990 ene.   13256.    NA    -75.5   NA           13331.
 2 clasica 1990 feb.   12966.    NA   -273.    NA           13239.
 3 clasica 1990 mar.   12938.    NA   -253.    NA           13191.
 4 clasica 1990 abr.   13012.    NA   -190.    NA           13203.
 5 clasica 1990 may.   13108.    NA    -88.9   NA           13197.
 6 clasica 1990 jun.   13183.    NA    -10.4   NA           13193.
 7 clasica 1990 jul.   13170. 13178.   -13.3    5.65        13183.
 8 clasica 1990 ago.   13160. 13161.    -9.99   8.80        13169.
 9 clasica 1990 sep.   13113. 13141.   -87.4   59.9         13201.
10 clasica 1990 oct.   13185. 13117.    34.6   33.8         13151.
# ℹ 347 more rows
empleo_components |> 
  autoplot()
Warning: Removed 6 rows containing missing values (`geom_line()`).

Con descomposicón simple la tendencia a veces suaviza más d elo que debería. Como la estacionalidad es un promedio por lo que se mantiene fija, lo cual puede causar problemas.

empleo_tsbl |> 
  model(STL(Employed ~ trend(window=7) + season(window='periodic'),
    robust = TRUE)) |> 
  components() |> 
  autoplot()