Se usará en este apartado como datos de ejemplo, la serie del Indice de Volumen de la Actividad Económica [IVAE], para el periodo 2009-2021[marzo].
library(readxl)
library(forecast)
# Carga los datos
serie.ivae <-
read_excel("~/Econometria/IVAE/ivae.xlsx",
col_types = c("skip", "numeric"),
skip = 5)
# convertir en serie personal
serie.ivae.ts <- ts(data = serie.ivae,
start = c(2009, 1),
frequency = 12)
# Genera el grafico de la serie temporal
serie.ivae.ts %>%
autoplot(main = "IVAE, El Salvador 2009-2021[marzo]",
xlab = "Años/Meses",
ylab = "Indice")Modelo Aditivo: La serie temporal es el resultado de la suma de los componentes teóricos. Yt=Tt+Ct+St+It
Se procede a estimar el componente de Tendencia-Ciclo a través de medias móviles:
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).
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")It=Yt−Tt−St
It<-Yt-Tt-St
autoplot(It,
main = "Componente Irregular",
xlab = "Años/Meses",
ylab = "It")descomposicion_aditiva<-decompose(serie.ivae.ts,type = "additive")
autoplot(descomposicion_aditiva,main="Descomposición Aditiva",xlab="Años/Meses")2.1.5. 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).
Modelo Multiplicativo: La serie temporal es el resultado de la amplificación/atenuación de la tendencia a causa del resto de los componentes.
Yt=Tt⋅Ct⋅St⋅It
Un modelo Multiplicativo puede expresarse como un un modelo aditivo, a través de una transformación logaritmica, (las minusculas indican el logaritmo natural de la variable/componente): yt=tt+ct+st+it
Tt<- ma(serie.ivae.ts, 12, centre = TRUE)
autoplot(Tt,main = "Componente Tendencia [Ciclo]", xlab = "Años/Meses",ylab = "Tt")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") It=YtTt⋅St
It<-Yt/(Tt*St)
autoplot(It,
main = "Componente Irregular",
xlab = "Años/Meses",
ylab = "It")descomposicion_multiplicatica<-decompose(serie.ivae.ts,type = "multiplicative")
autoplot(descomposicion_multiplicatica,main="Descomposición Multiplicativa",xlab="Años/Meses")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).
library(TSstudio)
ts_decompose(Yt, type = "additive", showline = TRUE)ts_seasonal(Yt,type = "box",title = "Análisis de Valores Estacionales")Si la serie resulta tener un patrón estacional, está técnica permite realizar predicciones extrapolando los componentes de la serie temporal observada.
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.95))
PronosticosHW## Point Forecast Lo 95 Hi 95
## Apr 2021 111.4044 105.94952 116.8593
## May 2021 120.1386 112.77972 127.4976
## Jun 2021 123.6515 114.83356 132.4694
## Jul 2021 116.5461 107.01096 126.0813
## Aug 2021 117.9689 107.30373 128.6341
## Sep 2021 115.7630 104.33417 127.1918
## Oct 2021 113.4746 101.36814 125.5810
## Nov 2021 120.1312 106.57272 133.6897
## Dec 2021 129.3698 114.12877 144.6109
## Jan 2022 116.2681 101.78191 130.7543
## Feb 2022 113.9046 98.99575 128.8134
## Mar 2022 118.9394 81.61739 156.2614
#Gráfico de la serie original y del pronóstico.
PronosticosHW %>% autoplot()library(forecast)
#Generar el pronóstico:
PronosticosHW2<-hw(y = Yt,
h = 12,
level = c(0.95),
seasonal = "multiplicative",
initial = "optimal")
PronosticosHW2## Point Forecast Lo 95 Hi 95
## Apr 2021 107.4928 99.59377 115.3918
## May 2021 115.3370 106.85846 123.8155
## Jun 2021 115.6946 107.18632 124.2029
## Jul 2021 109.6301 101.56399 117.6962
## Aug 2021 112.2047 103.94477 120.4646
## Sep 2021 110.2284 102.10923 118.3476
## Oct 2021 107.9393 99.98348 115.8951
## Nov 2021 114.4306 105.99022 122.8710
## Dec 2021 122.6459 113.59234 131.6994
## Jan 2022 108.5830 100.56060 116.6054
## Feb 2022 107.1239 99.20182 115.0460
## Mar 2022 113.1678 104.79016 121.5455
#Gráfico de la serie original y del pronóstico.
PronosticosHW2 %>% autoplot()