{r setup, include=FALSE} options(warn = -1) knitr::opts_chunk$set(echo = TRUE)

Aplique los modelos de Descomposición aditivo y multiplicativo a la serie del IVAE (IMAE) 2018-2026[marzo], que se encuentra en el archivo adjunto.

Se utilizará en este apartado la serie del Índice Mensual de Actividad Económica (IMAE) de El Salvador como objeto de estudio, correspondiente al período comprendido entre enero de 2018 y marzo de 2026. Sobre esta serie se aplicarán los modelos de descomposición aditiva y multiplicativa con el propósito de identificar y analizar sus componentes de tendencia, estacionalidad, ciclo y variación irregular.

options(warn = -1)
library(readxl)
library(forecast)
library(ggplot2)

# Cargar datos
serie.imae <- read_excel(
  "C:/Users/gabri/Downloads/El Salvador IMAE por actividades.xls",
  col_types = c("skip", "numeric"),
  skip = 5
)

# Convertir a serie temporal mensual
serie.imae.ts <- ts(
  data = serie.imae,
  start = c(2018, 1),
  frequency = 12
)

# Graficar la serie
autoplot(serie.imae.ts) +
  ggtitle("IMAE de El Salvador, 2018-2026 [marzo]") +
  xlab("Años/Meses") +
  ylab("Índice")

Modelo Aditivo.

Modelo Aditivo: La serie temporal es el resultado de la suma de los componentes teóricos. Yt=Tt+Ct+St+It

Componente de Tendencia Tt[Componente TCt]

Se procede a estimar el componente de Tendencia-Ciclo a través de medias móviles:

# Media móvil centrada de 12 meses
ma2_12 <- ma(serie.imae.ts, 12, centre = TRUE)

# Gráfico de la serie y su tendencia estimada
autoplot(
  serie.imae.ts,
  main = "IMAE de El Salvador 2018-2026 [marzo]",
  xlab = "Años/Meses",
  ylab = "Índice"
) +
  autolayer(ma2_12, series = "Tendencia")

Cálculo de los Factores Estacionales [Componente St]

library(magrittr)

# Serie original
Yt <- serie.imae.ts

# Componente Tendencia-Ciclo (media móvil centrada 2x12)
Tt <- ma2_12

# Componente Estacional + Irregular
SI <- Yt - Tt

# Cálculo de factores estacionales
St <- tapply(SI, cycle(SI), mean, na.rm = TRUE)

# En el modelo aditivo los factores estacionales deben sumar 0
St <- St - sum(St) / 12

# Generar la serie estacional completa
St <- rep(St, len = length(Yt)) %>%
  ts(start = c(2018, 1), frequency = 12)

# Gráfico de los factores estacionales
autoplot(St) +
  ggtitle("Factores Estacionales del IMAE de El Salvador (2018–2026 [marzo])") +
  xlab("Años/Meses") +
  ylab("Factor Estacional")

## Cálculo del Componente Irregular It : It=Yt−Tt−St

# Componente irregular
It <- Yt - Tt - St

# Gráfico de la componente irregular
autoplot(It) +
  ggtitle("Componente Irregular del IMAE de El Salvador (2018–2026 [marzo])") +
  xlab("Años/Meses") +
  ylab("It")

Descomposición Aditiva (usando la libreria stats):

# Descomposición aditiva
descomposicion_aditiva <- decompose(
  serie.imae.ts,
  type = "additive"
)

# Gráfico de la descomposición
autoplot(descomposicion_aditiva) +
  ggtitle("Descomposición Aditiva del IMAE de El Salvador (2018–2026 [marzo])") +
  xlab("Años/Meses")

## Descomposición Aditiva usando libreria feasts

options(warn = -1)
# Descomposición Aditiva usando feasts

library(tsibble)
## 
## Adjuntando el paquete: 'tsibble'
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, union
library(feasts)
## Cargando paquete requerido: fabletools
library(fabletools)
library(ggplot2)

Yt %>% 
  as_tsibble() %>%
  model(
    classical_decomposition(value, type = "additive")
  ) %>%
  components() %>%
  autoplot() +
  labs(
    title = "Descomposición Clásica Aditiva del IMAE de El Salvador (2018–2026 [marzo])"
  ) +
  xlab("Años/Meses")

Modelo Multiplicativo.

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

Componente Tendencia Ciclo [Tt=TCt ]

# Componente Tendencia-Ciclo mediante media móvil centrada de 12 meses
Tt <- ma(serie.imae.ts, 12, centre = TRUE)

# Gráfico de la tendencia-ciclo
autoplot(Tt) +
  ggtitle("Componente Tendencia-Ciclo del IMAE de El Salvador (2018–2026 [marzo])") +
  xlab("Años/Meses") +
  ylab("Tt")

## Cálculo de Factores Estacionales [St]

# Cálculo de Factores Estacionales (St)

# Serie sin tendencia
SI <- Yt / Tt

# Promedio de los índices estacionales por mes
St <- tapply(SI, cycle(SI), mean, na.rm = TRUE)

# En el modelo multiplicativo los factores estacionales deben promediar 1
St <- St * 12 / sum(St)

# Generar la serie completa de factores estacionales
St <- rep(St, len = length(Yt)) %>%
  ts(start = c(2018, 1), frequency = 12)

# Gráfico de los factores estacionales
autoplot(St) +
  ggtitle("Factores Estacionales del IMAE de El Salvador (2018–2026 [marzo])") +
  xlab("Años/Meses") +
  ylab("Factor Estacional")

## Cálculo del Componente Irregular [It]

# Componente irregular
It <- Yt / (Tt * St)

# Gráfico de la componente irregular
autoplot(It) +
  ggtitle("Componente Irregular del IMAE de El Salvador (2018–2026 [marzo])") +
  xlab("Años/Meses") +
  ylab("It")

## Descomposición Multiplicativa (usando la libreria stats)

# Descomposición multiplicativa
descomposicion_multiplicativa <- decompose(
  serie.imae.ts,
  type = "multiplicative"
)

# Gráfico de la descomposición
autoplot(descomposicion_multiplicativa) +
  ggtitle("Descomposición Multiplicativa del IMAE de El Salvador (2018–2026 [marzo])") +
  xlab("Años/Meses")

## Descomposición Multiplicativa usando libreria feasts

library(tsibble)
library(feasts)
library(fabletools)
library(ggplot2)

Yt %>% 
  as_tsibble() %>%
  model(
    classical_decomposition(value, type = "multiplicative")
  ) %>%
  components() %>%
  autoplot() +
  labs(
    title = "Descomposición Clásica Multiplicativa del IMAE de El Salvador (2018–2026 [marzo])"
  ) +
  xlab("Años/Meses")

Descomposición usando la libreria TSstudio

library(TSstudio)

# Descomposición aditiva
ts_decompose(
  Yt,
  type = "additive",
  showline = TRUE
)
library(TSstudio)

# Análisis de los valores estacionales
ts_seasonal(
  Yt,
  type = "box",
  title = "Análisis de Valores Estacionales del IMAE de El Salvador (2018–2026 [marzo])"
)