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()
