En el presente documento se realiza un análisis y pronóstico completo sobre el comportamiento de la tasa de crecimiento de la industria manufacturera, la cual cuenta con una lista de datos desde el año 2006 hasta el año 2025 con un frecuencia trimestral (4).
# Librerías
library(readxl)
library(ggplot2)
library(ggfortify)
library(dplyr)
library(forecast)
library(seasonal)
Antes de analizar el comportamiento de la serie de tiempo, hay que entender qué representan las industrias manufactureras en el Producto Interno Bruto (PIB). Las industrias manufactureras representan el sector de transformación de materias primas en bienes elaborados dentro del PIB de Colombia. En otras palabras, miden el valor agregado generado por las actividades industriales que producen bienes físicos.
Serie_industrias_manufactureras <- read_excel(
"Tasas de crecimiento anual.xlsx",
sheet = "Industrias manufactureras"
)
Serie_trimestral_industrias_manufactureras <- ts(
Serie_industrias_manufactureras$Industrias_manufactureras,
start = c(2006,1),
frequency = 4
)
autoplot(Serie_trimestral_industrias_manufactureras) +
ggtitle("Serie de industrias manufactureras") +
xlab("Periodo") +
ylab("Tasa de crecimiento anual (%)") +
scale_y_continuous(breaks = seq(-30, 33, by = 3)) +
theme_classic() +
theme(
panel.border = element_rect(fill = NA, color = "black", linewidth = 1.2),
plot.title = element_text(family = "serif", face = "bold", size = 15),
axis.title = element_text(family = "serif", face = "bold"),
panel.grid.major = element_line(color = "grey80", linewidth = 0.25),
panel.grid.minor = element_line(color = "grey90", linewidth = 0.2)
)
La gráfica de la serie de industrias manufatureras, muestra que su tasa de cremiento oscila entre un 7% y un 10%, apartando los efectos de la pandemia del COVID-19, puesto que, tuvo un impacto en todos los sectores que componen al PIB, y en el caso de las industrias manufactureras, se presenta una caída del 27% aproximadamente, para luego tener un rebote en 2021 llegando casi al 31% por efecto de la activación de la economía. Con lo anterior, se determina que en lo que respecta a el sector manufacturero no muestra una frecuencia fija, pero si una tendencia.
ggseasonplot(
Serie_trimestral_industrias_manufactureras,
year.labels = TRUE,
year.labels.left = TRUE
) +
ylab("Tasa de crecimiento (%)") +
xlab("Trimestres") +
ggtitle("Gráfico de estacionalidad") +
theme_classic()+
theme(
panel.border = element_rect(fill = NA, color = "black", linewidth = 1.2),
plot.title = element_text(family = "serif", face = "bold", size = 15),
axis.title = element_text(family = "serif", face = "bold"),
panel.grid.major = element_line(color = "grey80", linewidth = 0.25),
panel.grid.minor = element_line(color = "grey90", linewidth = 0.2)
) +
scale_y_continuous(breaks = seq(-30, 33, by = 3))
El propósito del gráfico de estacionalidad es representar el comportamiento de la serie trimestre a trimestre a lo largo de los años, con el fin de identificar la existencia de patrones o frecuencias que se repitan de manera sistemática. Ahora bien, en el caso de esta serie no se presentan patrones estacionales, puesto que, en cada trimestre los años terminan con valores al alza o la baja. Con ello se concluye, que el comportamiento de la serie va a ser explicado, por sus ciclos y tendencia.
acf(
Serie_trimestral_industrias_manufactureras,
main = "Gráfico de autocorrelación",
xlab = "Rezago",
ylab = "Autocorrelación"
)
decomposepadd <- decompose(
Serie_trimestral_industrias_manufactureras,
type = "additive"
)
plot(decomposepadd)
decomposemulti <- decompose(
Serie_trimestral_industrias_manufactureras,
type = "multiplicative"
)
plot(decomposemulti)
Tend <- ma(
Serie_trimestral_industrias_manufactureras,
order = 4,
centre = TRUE
)
YmenosT <- Serie_trimestral_industrias_manufactureras - Tend
S_estacional <- tapply(
YmenosT,
cycle(Serie_trimestral_industrias_manufactureras),
mean,
na.rm = TRUE
)
S_t <- ts(
rep(S_estacional, length.out = length(Serie_trimestral_industrias_manufactureras)),
start = start(Serie_trimestral_industrias_manufactureras),
frequency = 4
)
R_t <- Serie_trimestral_industrias_manufactureras - Tend - S_t
Serie_ajustada <- Serie_trimestral_industrias_manufactureras - S_t
autoplot(
Serie_trimestral_industrias_manufactureras,
series = "Serie sin ajustar"
) +
autolayer(
Serie_ajustada,
series = "Serie ajustada estacionalmente"
) +
ggtitle("Serie original y serie ajustada estacionalmente") +
xlab("Año") +
ylab("Porcentaje") +
theme_classic()
Serie_trimestral_industrias_manufactureras %>%
seas(x11 = "") -> fit
autoplot(fit) +
ggtitle("Descomposición X11 - Industrias manufactureras")
industriasdata <- window(
Serie_trimestral_industrias_manufactureras,
start = c(2006,1)
)
fc <- ses(industriasdata, h = 5)
autoplot(fc) +
ggtitle("Pronóstico con suavizado exponencial simple") +
xlab("Año") +
ylab("Porcentaje") +
theme_classic()
round(accuracy(fc),2)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.08 5.85 3.5 108.51 247.86 0.56 0.03
summary(fc)
##
## Forecast method: Simple exponential smoothing
##
## Model Information:
## Simple exponential smoothing
##
## Call:
## ses(y = industriasdata, h = 5)
##
## Smoothing parameters:
## alpha = 0.7134
##
## Initial states:
## l = 5.972
##
## sigma: 5.924
##
## AIC AICc BIC
## 639.1793 639.4951 646.3254
##
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.075974 5.849506 3.498987 108.5144 247.8642 0.5636526 0.02584894
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2026 Q1 1.636223 -5.955721 9.228167 -9.974654 13.24710
## 2026 Q2 1.636223 -7.689482 10.961927 -12.626212 15.89866
## 2026 Q3 1.636223 -9.148021 12.420466 -14.856855 18.12930
## 2026 Q4 1.636223 -10.431547 13.703992 -16.819838 20.09228
## 2027 Q1 1.636223 -11.591106 14.863551 -18.593230 21.86568
fc <- holt(industriasdata, h = 15)
fc2 <- holt(
industriasdata,
damped = TRUE,
phi = 0.9,
h = 15
)
autoplot(industriasdata) +
autolayer(fc, series = "Método de Holt") +
autolayer(fc2, series = "Holt amortiguado") +
ggtitle("Pronóstico con método de Holt") +
xlab("Año") +
ylab("Industrias manufactureras (%)")
fit <- ets(industriasdata)
summary(fit)
## ETS(A,N,N)
##
## Call:
## ets(y = industriasdata)
##
## Smoothing parameters:
## alpha = 0.7132
##
## Initial states:
## l = 5.989
##
## sigma: 5.924
##
## AIC AICc BIC
## 639.1793 639.4951 646.3254
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.07628642 5.849507 3.498869 108.5414 247.8921 0.5636335
## ACF1
## Training set 0.02601081
autoplot(fit) +
ggtitle("Ajuste ETS: Industrias manufactureras") +
xlab("Año") +
ylab("Industria manufacturera (%)") +
theme_classic()
forecast(fit, h = 8) %>%
autoplot() +
ggtitle("Pronóstico ETS: Industrias manufactureras") +
xlab("Año") +
ylab("Industria manufacturera (%)") +
theme_classic()
train <- window(
Serie_trimestral_industrias_manufactureras,
end = c(2025,4)
)
fit_ets <- ets(train)
summary(fit_ets)
## ETS(A,N,N)
##
## Call:
## ets(y = train)
##
## Smoothing parameters:
## alpha = 0.7132
##
## Initial states:
## l = 5.989
##
## sigma: 5.924
##
## AIC AICc BIC
## 639.1793 639.4951 646.3254
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.07628642 5.849507 3.498869 108.5414 247.8921 0.5636335
## ACF1
## Training set 0.02601081
fc_ets <- forecast(fit_ets, h = 2)
autoplot(Serie_trimestral_industrias_manufactureras) +
autolayer(fc_ets, series="Pronóstico") +
ggtitle("Pronóstico ETS hasta junio de 2026") +
xlab("Año") +
ylab("Industria manufacturera (%)") +
theme_classic()
data.frame(fc_ets)
## Point.Forecast Lo.80 Hi.80 Lo.95 Hi.95
## 2026 Q1 1.636411 -5.955533 9.228355 -9.974466 13.24729
## 2026 Q2 1.636411 -7.688538 10.961360 -12.624868 15.89769