Descomposición de Series Temporales (Enfoque Tradicional)

library(readxl)
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
serie.ivae <-
  read_excel("C:/Users/liizm/Downloads/IVAE1.xlsx",
             col_types = c("skip", "numeric"),
             skip = 5)

serie.ivae.ts <- ts(data = serie.ivae,
                    start = c(2009, 1),
                    frequency = 12)
serie.ivae.ts %>% 
  autoplot(main = "IVAE, El Salvador 2009-2021[marzo]",
                           xlab = "Años/Meses",
                           ylab = "Indice")

Componente de Tendencia TtTt

ma2_12 <- ma(serie.ivae.ts, 12, centre = TRUE)
autoplot(serie.ivae.ts,main = "IVAE, El Salvador 2009-2021[marzo]",
           xlab = "Años/Meses",
           ylab = "Indice")+
  autolayer(ma2_12,series = "Tt")
## Warning: Removed 12 row(s) containing missing values (geom_path).

Cálculo de los Factores Estacionales [Componente StSt]

library(magrittr)
Yt <- serie.ivae.ts #Serie original
Tt <- ma2_12 #Media móvil centrada (2x12-MA) como componente de Tendencia Ciclo
SI <- Yt - Tt #Diferencia que contiene componentes Estacional e Irregular

St <- tapply(SI, cycle(SI), mean, na.rm = TRUE) #Promediando los resultados de cada mes

#Los factores estacionales deben sumar "0" en el modelo aditivo
St <- St - sum(St) / 12 

#Generar la serie de factores para cada valor de la serie original
St <-
  rep(St, len = length(Yt)) %>% ts(start = c(2009, 1), frequency = 12) 
autoplot(St,
         main = "Factores Estacionales",
         xlab = "Años/Meses",
         ylab = "Factor Estacional") 

Cálculo del Componente Irregular ItIt

It<-Yt-Tt-St
autoplot(It,
         main = "Componente Irregular",
         xlab = "Aos/Meses",
         ylab = "It")

Descomposición Aditiva (usando la libreria stats)

descomposicion_aditiva<-decompose(serie.ivae.ts,type = "additive")
autoplot(descomposicion_aditiva,main="Descomposición Aditiva",xlab="Años/Meses")

Descomposición Aditiva usando libreria feasts

library(tsibble)
## 
## Attaching package: 'tsibble'
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, union
library(feasts)
## Loading required package: fabletools
## 
## Attaching package: 'fabletools'
## The following objects are masked from 'package:forecast':
## 
##     accuracy, forecast
library(ggplot2)
Yt %>% as_tsibble() %>%
  model(
    classical_decomposition(value, type = "additive")
  ) %>%
  components() %>%
  autoplot() +
  labs(title = "Descomposición Clásica Aditiva, IVAE")+xlab("Años/Meses")
## Warning: Removed 6 row(s) containing missing values (geom_path).

Componente Tendencia Ciclo [Tt=TCtTt=TCt]

Tt<- ma(serie.ivae.ts, 12, centre = TRUE)
autoplot(Tt,main = "Componente Tendencia [Ciclo]", xlab = "Años/Meses",ylab = "Tt")

Cálculo de Factores Estacionales [StSt]

SI<-Yt/Tt #Serie sin tendencia.
St <- tapply(SI, cycle(SI), mean, na.rm = TRUE) #Promediando los resultados de cada mes
#Los factores estacionales deben promediar "1" en el modelo multiplicativo
St <- St*12/sum(St) 
#Generar la serie de factores para cada valor de la serie original
St <-
  rep(St, len = length(Yt)) %>% ts(start = c(2009, 1), frequency = 12) 
autoplot(St,
         main = "Factores Estacionales",
         xlab = "Años/Meses",
         ylab = "Factor Estacional") 

Cálculo del Componente Irregular [ItIt]

It<-Yt/(Tt*St)
autoplot(It,
         main = "Componente Irregular",
         xlab = "Años/Meses",
         ylab = "It")

Descomposición Multiplicativa (usando la libreria stats)

descomposicion_multiplicatica<-decompose(serie.ivae.ts,type = "multiplicative")
autoplot(descomposicion_multiplicatica,main="Descomposición Multiplicativa",xlab="Años/Meses")

Descomposición Multiplicativa usando libreria feasts

library(tsibble)
library(feasts)
library(ggplot2)
Yt %>% as_tsibble() %>%
  model(classical_decomposition(value, type = "multiplicative")) %>%
  components() %>%
  autoplot() +
  labs(title = "Descomposición Clásica Multiplicativa, IVAE") + xlab("Años/Meses")
## Warning: Removed 6 row(s) containing missing values (geom_path).

Descomposición usando la libreria TSstudio

library(TSstudio)
ts_decompose(Yt, type = "additive", showline = TRUE)
ts_seasonal(Yt,type = "box",title = "Análisis de Valores Estacionales")

Pronóstico Modelo de Holt Winters (Usando stats y forecast)

library(forecast)

#Estimar el modelo
ModeloHW<-HoltWinters(x = Yt,
                      seasonal = "multiplicative",
                      optim.start = c(0.9,0.9,0.9))
ModeloHW
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component.
## 
## Call:
## HoltWinters(x = Yt, seasonal = "multiplicative", optim.start = c(0.9,     0.9, 0.9))
## 
## Smoothing parameters:
##  alpha: 0.8408163
##  beta : 0
##  gamma: 1
## 
## Coefficients:
##            [,1]
## a   117.0799442
## b     0.1600306
## s1    0.9502255
## s2    1.0233274
## s3    1.0518154
## s4    0.9900276
## s5    1.0007537
## s6    0.9807088
## s7    0.9600206
## s8    1.0149628
## s9    1.0915423
## s10   0.9796752
## s11   0.9584676
## s12   0.9994880
#Generar el pronóstico:
PronosticosHW<-forecast(object = ModeloHW,h = 12,level = c(0.99))
PronosticosHW
##          Point Forecast     Lo 99    Hi 99
## Apr 2021       111.4044 104.23546 118.5734
## May 2021       120.1386 110.46737 129.8099
## Jun 2021       123.6515 112.06278 135.2401
## Jul 2021       116.5461 104.01480 129.0774
## Aug 2021       117.9689 103.95248 131.9854
## Sep 2021       115.7630 100.74297 130.7830
## Oct 2021       113.4746  97.56402 129.3852
## Nov 2021       120.1312 102.31234 137.9500
## Dec 2021       129.3698 109.33967 149.4000
## Jan 2022       116.2681  97.23002 135.3062
## Feb 2022       113.9046  94.31107 133.4981
## Mar 2022       118.9394  69.88997 167.9888
#Gráfico de la serie original y del pronóstico.
PronosticosHW %>% autoplot()

Usando Forecast (Aproximación por Espacios de los Estados ETS )

library(forecast)

#Generar el pronóstico:
PronosticosHW2<-hw(y = Yt,
                   h = 12,
                   level = c(0.99),
                   seasonal = "multiplicative",
                   initial = "optimal")
PronosticosHW2
##          Point Forecast     Lo 99    Hi 99
## Apr 2021       107.4928  97.11173 117.8738
## May 2021       115.3370 104.19432 126.4796
## Jun 2021       115.6946 104.51281 126.8764
## Jul 2021       109.6301  99.02943 120.2308
## Aug 2021       112.2047 101.34932 123.0600
## Sep 2021       110.2284  99.55799 120.8989
## Oct 2021       107.9393  97.48358 118.3950
## Nov 2021       114.4306 103.33807 125.5231
## Dec 2021       122.6459 110.74752 134.5442
## Jan 2022       108.5830  98.03978 119.1262
## Feb 2022       107.1239  96.71251 117.5353
## Mar 2022       113.1678 102.15770 124.1780
#Gráfico de la serie original y del pronóstico.
PronosticosHW2 %>% autoplot()