# En esta seccion se incluye comandos en R script para cargas las librerias y los datos necesarios
# Carga de paquetes
library(forecast)
library(readxl)
Datos <- read_excel("Base Taller 2.xls",
sheet = "BaseCompleta")
# View(Datos)
# Seleccionamos las variables que nos interesan
IPIR_COL <- Datos$IPIR_COL
IPIR_VALLE <- Datos$IPIR_V
IPIR_CAUCA <- Datos$IPIR_C
knitr::opts_chunk$set(echo = TRUE)
Las variables seleccionadas de la base de datos son:
ST_COL <- ts(IPIR_COL, frequency=12, start=c(2012,1))
ST_V <- ts(IPIR_VALLE, frequency=12, start=c(2012,1))
ST_CA <- ts(IPIR_CAUCA, frequency=12, start=c(2012,1))
library(forecast)# Contiene el modelo ARIMA
library(tseries) #Para series de tiempo
library(TSA) #Para series de tiempo
library(urca) #Para hacer el Test de Raiz Unitaria (detectar hay o no estacionariedad)
library(ggplot2) #Para hacer gráficos
library(dplyr) #Para la manipulación de datos (filtrar, seleccionar, agregar, transformar)
library(stats) #Se usa para diversas pruebas estadísticas (medias,varianza, arima,etc)
library(seasonal)#Para calcular la serie ajustada de estacionalidad
COL_DECOMP <- decompose(ST_COL)
V_DECOMP <- decompose(ST_V)
CA_DECOMP <- decompose(ST_CA)
# Para el indice de produccion industrial regional a nivel nacional
EST_COL <- seasadj(COL_DECOMP)
plot(ST_COL,main ="IPIR COLOMBIA ORIGINAL VS DESESTACIONALIZADO")
lines(EST_COL, col = "red")
legend("topleft", legend = c("Serie original", "Serie desestacionalizada"), col = c("black", "red"), lty = 1)
En este caso nos inclinaremos por la serie ajustada por desestacionalidad, debido a que se presenta una variacion considerble con la serie orginal.
EST_CAUCA <- seasadj(CA_DECOMP)
plot(ST_CA, main=" IPIR CAUCA VS DESESTACIONALIZADO")
lines(EST_CAUCA, col = "red")
legend("topleft", legend = c("Serie original", "Serie desestacionalizada"), col = c("black", "red"), lty = 1)
En este caso nos inclinaremos por la serie ajustada por desestacionalidad, debido a que se presenta una variacion considerble con la serie orgina, a pesar de que sea un poco mas consistente aun se presentan notables diferencias entre ambas series.
EST_VALLE <- seasadj(V_DECOMP)
plot(ST_V, main="IPIR VALLE VS DESESTACIONALIZADO")
lines(EST_VALLE, col="red")
legend("topleft", legend = c("Serie original", "Serie desestacionalizada"), col = c("black", "red"), lty = 1)
Nos inclinaremos por la variable desestacionalizada, debido a que presenta muchas inconsistencias en correcciones por estacionalidad
plot(EST_COL, main="TENDENCIA CICLO NACIONAL VS ESTACIONALIZADA")
TC_COL <- COL_DECOMP$trend
lines(TC_COL, col="blue")
legend("topleft", legend = c("Serie Estacional", "Tendencia-ciclo"), col = c("black", "blue"), lty = 1)
Se presenta una desaceleración en la tendecia ciclo a mediados del 2022, se espera que al fianalizar el año esta siga presentado la tendecia bajista junto con el movimiento de el ipir desestacionalizado.Ademas se presenta una relacion negativa con respecto al ultimo año.
plot(EST_CAUCA, main="TENDENCIa CICLO CAUCA VS ESTACIONALIZADA")
TC_CAUCA <- CA_DECOMP$trend
lines(TC_CAUCA, col ="blue")
legend("topleft", legend = c("Serie Estacional", "Tendencia-ciclo"), col = c("black", "blue"), lty = 1)
Al finalizar el 2021 despues de una tendencia alcista presentada por las dos variables, se presento una desaceleracion fuerte hasta finalizar el año, con respecto a ambas variables, por ende se espera que la tendecia se siga presentando negativamente con pequeñas correciones con la relacion a la industria
plot(EST_VALLE, main="TENDENCIA CICLO VALLE VS ESTACIONALIZADA")
TC_VALLE <- V_DECOMP$trend
lines(TC_VALLE, col ="blue")
legend("topleft", legend = c("Serie Estacional", "Tendencia-ciclo"), col = c("black", "blue"), lty = 1)
Presento estabilidad con respecto a la tendencia en el años 2022, a mediados del 2023 no se incremento exponencialmente, despues ambas variables presentaron una desaceleracion, esperandose que al finalizar el años la tendecia siga negativa.
A partir de aqui trabajaremos con los datos ajustados desestacionalizados tomando en cuenta las conclusiones anteriores en las comparaciones de estas, contra las series originales
H0:La serie es No estacionaria H1:La serie es estacionaria
library(tseries)
adf.test(EST_VALLE)
##
## Augmented Dickey-Fuller Test
##
## data: EST_VALLE
## Dickey-Fuller = -3.9651, Lag order = 5, p-value = 0.01286
## alternative hypothesis: stationary
Dado que el valor P < 0.05 rechazamos H0, luego la serie relacionada a los datos IPIR_VALLE es estacionaria, aqui d = 1
library(tseries)
adf.test(EST_CAUCA)
## Warning in adf.test(EST_CAUCA): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: EST_CAUCA
## Dickey-Fuller = -4.2614, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
Dado que el valor P < 0.05 rechazamos H0, luego la serie relacionada a los datos IPIR_CAUCA es estacionaria, aqui d = 1
library(tseries)
adf.test(EST_COL)
##
## Augmented Dickey-Fuller Test
##
## data: EST_COL
## Dickey-Fuller = -2.7432, Lag order = 5, p-value = 0.2668
## alternative hypothesis: stationary
Dado que el valor P > 0.05 NO rechazamos H0, luego esto implica que la serie relacionada a los datos IPIR_COL NO es estacionaria. Tomamos en cuenta ahora que es la unica seria desestacionalizada que no es estacionaria, por ende tendremos que diferenciarla hasta volverla estacionaria
EST_COL_d1= diff(EST_COL, differences = 1)
EST_COL_d2= diff(EST_COL, differences = 2)
plot(EST_COL_d1, main = " IPIR COLOMBIA- Diferenciación en (niveles)")
lines(EST_COL_d2, col = "red")
legend("topleft", legend = c(" Una diferencia", "Dos diferencias"), col = c("black", "red"), lty = 1)
Podemos determinar a partir de este grafico que la traza correspondiente a la diferencia(una vez y dos veces) hay un patron oscilatorio alrededor de 0 sin una significativa tendencia visible. Luego la diferenciacion en los terminos de orden 1 deberia ser suficiente, aplicamos test para comprobar
adf.test(EST_COL_d1)
## Warning in adf.test(EST_COL_d1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: EST_COL_d1
## Dickey-Fuller = -6.0003, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
adf.test(EST_COL_d2)
## Warning in adf.test(EST_COL_d2): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: EST_COL_d2
## Dickey-Fuller = -9.46, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
Ahora la serie relacionada a IPIR-COL es estacionaria
EST_VALLE_d1= diff(EST_VALLE, differences = 1)
EST_CAUCA_d1= diff(EST_CAUCA, differences = 1)
Analizaremos los 5 primeros retazos de las graficas para determinar los valores de p y q
Acf(EST_VALLE_d1, main='Función de autocorrelación VALLE (ACF) -IPIR diferenciado')
Observando la grafica podremos definir q(valle) con el valor de 1 o 2 ya que en estos dos primeros retazos se evidencia una correlacion significativa no decreciente a 0
Acf(EST_CAUCA_d1, main='Función de autocorrelación CAUCA (ACF) -IPIR diferenciado')
Observando la grafica podremos definir q(cauca) con el valor de 1 ya que es el unico retazo que evidencia una correlacion significativa no decreciente a 0
Acf(EST_COL_d1, main='Función de autocorrelación COLOMBIA (ACF) -IPIR diferenciado')
Observando la grafica podremos definir q(colombia) con el valor de 1 o 2 ya que en estos dos primeros retazos se evidencia una correlacion significativa no decreciente a 0
Analizaremos los 5 primeros retazos de las graficas para determinar los valores de p y q
Pacf(EST_VALLE_d1, main='Figura 6.Función de autocorrelación parcial VALLE (PACF) -IPIR diferenciado')
se observa que el p(valle) podria tomar el valor de 0, O 1 O 2 ya que en estos primeros rezagos se sobrepasan las líneas punteadas pero no de form atan significativa. Es decir que podria ser AR (0) O AR (1) O AR (2).
Pacf(EST_CAUCA_d1, main='Figura 6.Función de autocorrelación parcial CAUCA (PACF) -IPIR diferenciado')
se observa que el p(cauca) podria tomar el valor de 0 O 2 O 3 O 5 ya que en estos primeros rezagos se sobrepasan las líneas punteadas pero no de form atan significativa. Es decir que podria ser AR (0) O AR (2) O AR (3) O AR(5).
Pacf(EST_COL_d1, main='Figura 6.Función de autocorrelación parcial COLOMBIA (PACF) -IPIR diferenciado')
se observa que el p(col) podria tomar el valor de 0 o 1 ya que en estos primeros rezagos se sobrepasan las líneas punteadas pero no de forma tan significativa. Es decir que podria ser AR (0) o AR (1)
1.(0, 1, 1) 2.(2, 1, 1) 3.(3, 1, 1) 4.(5, 1, 1)
(0, 1, 1) (0, 1, 2) (1, 1, 1) (1, 1, 2)
auto.arima(EST_VALLE_d1)
## Series: EST_VALLE_d1
## ARIMA(0,0,2) with zero mean
##
## Coefficients:
## ma1 ma2
## -0.6574 -0.1439
## s.e. 0.0838 0.0856
##
## sigma^2 = 45.74: log likelihood = -495.69
## AIC=997.37 AICc=997.54 BIC=1006.39
auto.arima(EST_CAUCA_d1)
## Series: EST_CAUCA_d1
## ARIMA(1,0,1) with zero mean
##
## Coefficients:
## ar1 ma1
## 0.3476 -0.8775
## s.e. 0.1367 0.0927
##
## sigma^2 = 73.32: log likelihood = -530.82
## AIC=1067.63 AICc=1067.8 BIC=1076.65
auto.arima(EST_COL_d1)
## Series: EST_COL_d1
## ARIMA(2,0,2) with zero mean
##
## Coefficients:
## ar1 ar2 ma1 ma2
## -0.6761 0.1742 0.3163 -0.6612
## s.e. 0.1408 0.1405 0.1073 0.1078
##
## sigma^2 = 21.17: log likelihood = -437.49
## AIC=884.97 AICc=885.39 BIC=899.99
El criterio de comparacion que usaremos sera el de menor BIC, la razon de esto es que trabajamos con una muestra considerablemente grande, el BIC penaliza más la complejidad del modelo y evita sobreajustes en escenarios con muchos datos. Esto te proporcionará un modelo más sencillo y con más poder predictivo.
modelo_arima_valle <- arima(EST_VALLE_d1, order = c(0,1,1))
aic_valor_valle <- AIC(modelo_arima_valle)
bic_valor_valle <- BIC(modelo_arima_valle)
bic_valor_valle
## [1] 1056.711
auto.arima(EST_VALLE_d1)
## Series: EST_VALLE_d1
## ARIMA(0,0,2) with zero mean
##
## Coefficients:
## ma1 ma2
## -0.6574 -0.1439
## s.e. 0.0838 0.0856
##
## sigma^2 = 45.74: log likelihood = -495.69
## AIC=997.37 AICc=997.54 BIC=1006.39
Elegimos la estimacion del modelo automatico ARIMA(1,0,1), debido a que nos da el menor BIC.
modelo_arima_cauca <- arima(EST_CAUCA_d1, order = c(0,1,1))
aic_valor_cauca <- AIC(modelo_arima_cauca)
bic_valor_cauca <- BIC(modelo_arima_cauca)
bic_valor_cauca
## [1] 1111.128
auto.arima(EST_CAUCA_d1)
## Series: EST_CAUCA_d1
## ARIMA(1,0,1) with zero mean
##
## Coefficients:
## ar1 ma1
## 0.3476 -0.8775
## s.e. 0.1367 0.0927
##
## sigma^2 = 73.32: log likelihood = -530.82
## AIC=1067.63 AICc=1067.8 BIC=1076.65
Elegimos la estimacion del modelo automatico ARIMA(1,0,1), debido a que nos da la menor comparacion, con respecto al BIC
modelo_arima_colombia <- arima(EST_COL_d1, order = c(0,1,1))
aic_valor_colombia <- AIC(modelo_arima_colombia)
bic_valor_colombia <- BIC(modelo_arima_colombia)
bic_valor_colombia
## [1] 917.2765
auto.arima(EST_COL_d1)
## Series: EST_COL_d1
## ARIMA(2,0,2) with zero mean
##
## Coefficients:
## ar1 ar2 ma1 ma2
## -0.6761 0.1742 0.3163 -0.6612
## s.e. 0.1408 0.1405 0.1073 0.1078
##
## sigma^2 = 21.17: log likelihood = -437.49
## AIC=884.97 AICc=885.39 BIC=899.99
Elegimos la estimacion del modelo automatico ARIMA(2,0,2), debido a que nos da la menor comparacion, con respecto al BIC
H0: No hay autocorrelación de los residuos H1: Existe autocorrelación de los residuos
Model1=Arima(EST_VALLE_d1,order = c(1,0,1))
Box.test(Model1$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: Model1$residuals
## X-squared = 22.92, df = 20, p-value = 0.2928
como el valor p es mayor a 0.05, NO se rechaza H0, luego no existe correlacion en los residuos, lo que indica que el modelo cumple la condicion de ruido blanco. A continuacion vamos con el test de shapiro H0: Los residuos siguen una distribución normal. H1: Los residuos NO siguen una distribución normal.
shapiro.test(Model1$residuals)
##
## Shapiro-Wilk normality test
##
## data: Model1$residuals
## W = 0.72521, p-value = 2.264e-15
El valor P es menor a 0.05, se rechaza H0 y la muestra no sigue una distribucion normal
A continuacion vamos con la estimacion del modelo de eleccion
Model7=Arima(EST_VALLE_d1,order = c(0,1,1))
Box.test(Model7$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: Model7$residuals
## X-squared = 47.463, df = 20, p-value = 0.0005058
El valor P es menor a 0.05 luego existe correlacion en los residuos y el modelo podria no ser ideal Ahora con la prueba shapiro
shapiro.test(Model7$residuals)
##
## Shapiro-Wilk normality test
##
## data: Model7$residuals
## W = 0.6826, p-value < 2.2e-16
El valor P es menor a 0.05 luego la muestra no sigue una distribucion normal
H0: No hay autocorrelación de los residuos H1: Existe autocorrelación de los residuos
Model3=Arima(EST_CAUCA_d1,order = c(1,0,1))
Box.test(Model3$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: Model3$residuals
## X-squared = 28.129, df = 20, p-value = 0.1064
como el valor p es mayor a 0.05,NO se rechaza H0, luego NO existe correlacion en los residuos, lo que indica que el modelo cumple la condicion de ruido blanco
A continuacion vamos con el test de shapiro H0: Los residuos siguen una distribución normal. H1: Los residuos NO siguen una distribución normal.
shapiro.test(Model3$residuals)
##
## Shapiro-Wilk normality test
##
## data: Model3$residuals
## W = 0.82693, p-value = 5.54e-12
El valor P es menor a 0.05, se rechaza H0 y la muestra no sigue una distribucion normal
Luego vamos con la validacion al modelo de eleccion
Model6=Arima(EST_CAUCA_d1,order = c(0,1,1))
Box.test(Model6$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: Model6$residuals
## X-squared = 36.856, df = 20, p-value = 0.01218
El valor p es menor a 0.05 luego existe correlacion en los residuos, lo que indica que el modelo podria no ser ideal
shapiro.test(Model6$residuals)
##
## Shapiro-Wilk normality test
##
## data: Model6$residuals
## W = 0.7926, p-value = 2.971e-13
El valor P es menor a 0.05, se rechaza H0 y la muestra no sigue una distribucion normal
H0: No hay autocorrelación de los residuos H1: Existe autocorrelación de los residuos
Model4=Arima(EST_COL_d1,order = c(2,0,2))
Box.test(Model4$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: Model4$residuals
## X-squared = 19.869, df = 20, p-value = 0.4661
como el valor p es mayor a 0.05, se rechaza H0, luego no hay correlacion en los residuos, entonces se cumple la condicion del ruido blanco
shapiro.test(Model4$residuals)
##
## Shapiro-Wilk normality test
##
## data: Model4$residuals
## W = 0.86451, p-value = 2.233e-10
El valor p es menor a 0.05. La muestra no sigue una distribucion normal
Luego continuamos con la validacion del modelo ARIMA de eleccion
Model5=Arima(EST_COL_d1,order = c(0,1,1))
Box.test(Model5$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: Model5$residuals
## X-squared = 44.774, df = 20, p-value = 0.001184
Luego el valor P es menor a 0.05 lo que indica correlacion en los residuos, lo que indica que el modelo podria no ser ideal Ahora vamos con la prueba shapiro
shapiro.test(Model5$residuals)
##
## Shapiro-Wilk normality test
##
## data: Model5$residuals
## W = 0.89017, p-value = 4.178e-09
El valor p es menor a 0.05. La muestra no sigue una distribucion normal
Pronostico a 3 meses
Pronostico3=forecast(Model1,level= c(95), h=3)
plot(Pronostico3)
valores_reales <- as.numeric(tail(EST_VALLE_d1,n=3))
valores_pronosticados <- as.numeric(Pronostico3$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 7.421609
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 6.433833
Pronostico a 6 meses
Pronostico6=forecast(Model1,level= c(95), h=6)
plot(Pronostico6)
valores_reales <- as.numeric(tail(EST_VALLE_d1,n=6))
valores_pronosticados <- as.numeric(Pronostico6$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 7.086563
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 5.864048
Pronostico a 3 meses
Pronostico3=forecast(Model3,level= c(95), h=3)
plot(Pronostico3)
valores_reales <- as.numeric(tail(EST_CAUCA_d1,n=3))
valores_pronosticados <- as.numeric(Pronostico3$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 5.970292
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 4.271521
Pronostico a 6 meses
Pronostico6=forecast(Model3,level= c(95), h=6)
plot(Pronostico6)
valores_reales <- as.numeric(tail(EST_CAUCA_d1,n=6))
valores_pronosticados <- as.numeric(Pronostico6$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 5.036406
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 3.717255
Pronostico a 3 meses
Pronostico3=forecast(Model4,level= c(95), h=3)
plot(Pronostico3)
valores_reales <- as.numeric(tail(EST_COL_d1,n=3))
valores_pronosticados <- as.numeric(Pronostico3$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 6.550134
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 6.219074
Pronostico a 6 meses
Pronostico6=forecast(Model4,level= c(95), h=6)
plot(Pronostico6)
valores_reales <- as.numeric(tail(EST_COL_d1,n=6))
valores_pronosticados <- as.numeric(Pronostico6$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 5.967534
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 4.732074
Pronostico a 3 meses
Pronostico3=forecast(Model7,level= c(95), h=3)
plot(Pronostico3)
valores_reales <- as.numeric(tail(EST_VALLE_d1,n=3))
valores_pronosticados <- as.numeric(Pronostico3$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 8.612098
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 7.63445
Pronostico a 6 meses
Pronostico6=forecast(Model7,level= c(95), h=6)
plot(Pronostico6)
valores_reales <- as.numeric(tail(EST_VALLE_d1,n=6))
valores_pronosticados <- as.numeric(Pronostico6$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 7.137297
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 6.070157
Pronostico a 3 meses
Pronostico3=forecast(Model6,level= c(95), h=3)
plot(Pronostico3)
valores_reales <- as.numeric(tail(EST_CAUCA_d1,n=3))
valores_pronosticados <- as.numeric(Pronostico3$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 3.056723
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 2.655446
Pronostico a 6 meses
Pronostico6=forecast(Model6,level= c(95), h=6)
plot(Pronostico6)
valores_reales <- as.numeric(tail(EST_CAUCA_d1,n=6))
valores_pronosticados <- as.numeric(Pronostico6$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 3.365518
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 3.009687
Pronostico a 3 meses
Pronostico3=forecast(Model5,level= c(95), h=3)
plot(Pronostico3)
valores_reales <- as.numeric(tail(EST_COL_d1,n=3))
valores_pronosticados <- as.numeric(Pronostico3$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 7.580551
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 6.876123
Pronostico a 6 meses
Pronostico6=forecast(Model5,level= c(95), h=6)
plot(Pronostico6)
valores_reales <- as.numeric(tail(EST_COL_d1,n=6))
valores_pronosticados <- as.numeric(Pronostico6$mean)
rmse <- sqrt(mean((valores_reales - valores_pronosticados)^2, na.rm = TRUE))
rmse
## [1] 5.896608
mae <- mean(abs(valores_reales - valores_pronosticados), na.rm = TRUE)
mae
## [1] 4.929643
El análisis del Índice de Producción Industrial Regional (IPIR) a nivel nacional y en las regiones de Valle del Cauca y Cauca ha permitido identificar tendencias y comportamientos significativos que reflejan la dinámica industrial en Colombia desde enero de 2014 hasta junio de 2024. A través del uso de modelos de series de tiempo, se ha podido observar la relación entre las variables seleccionadas, considerando tanto sus aspectos estacionales como sus tendencias a largo plazo.
Las series temporales de IPIR para Valle y Cauca mostraron comportamientos estacionarios tras la eliminación de la estacionalidad, lo que facilitó la modelización adecuada mediante el enfoque ARIMA. Los modelos ajustados indicaron una tendencia general a la desaceleración en la producción industrial, con evidencias de una correlación entre las dinámicas locales de producción y el comportamiento nacional. En particular, se observó que las fluctuaciones en el IPIR de Valle del Cauca y Cauca no solo se alinean con las tendencias nacionales, sino que también pueden verse influenciadas por factores económicos y contextuales específicos de cada región.
El pronóstico de los modelos ARIMA, tanto a corto como a mediano plazo, sugiere que la producción industrial en Valle del Cauca y Cauca podría experimentar una leve recuperación en el futuro inmediato, aunque la tendencia a la desaceleración sigue siendo preocupante. Las predicciones indican que, a pesar de las mejoras esperadas, es probable que la producción industrial no alcance los niveles óptimos de crecimiento sin la implementación de políticas efectivas. Este análisis resalta la necesidad de políticas que fomenten el crecimiento y la resiliencia del sector industrial, teniendo en cuenta las particularidades de cada región.