# install.packages(c("readxl", "tidyverse", "lubridate",
# "ggplot2", "knitr", "kableExtra"))
# Cargar librerías
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.3
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.5.3
## Warning: package 'ggplot2' was built under R version 4.5.3
## Warning: package 'tibble' was built under R version 4.5.3
## Warning: package 'tidyr' was built under R version 4.5.3
## Warning: package 'readr' was built under R version 4.5.3
## Warning: package 'purrr' was built under R version 4.5.3
## Warning: package 'dplyr' was built under R version 4.5.3
## Warning: package 'stringr' was built under R version 4.5.3
## Warning: package 'forcats' was built under R version 4.5.3
## Warning: package 'lubridate' was built under R version 4.5.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.1 ✔ readr 2.2.0
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.3 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(lubridate)
library(ggplot2)
library(knitr)
## Warning: package 'knitr' was built under R version 4.5.3
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.5.3
##
## Adjuntando el paquete: 'kableExtra'
##
## The following object is masked from 'package:dplyr':
##
## group_rows
base_original <- read_excel(
"C:/Users/danie/Downloads/Base 4 Sectorial.xlsx",
sheet = "SECTORIAL"
)
# Primeras seis observaciones
head(base_original)
## # A tibble: 6 × 62
## FECHA PNCEM DECEM CONCRETO LICC POLLO HUEVO PNCAFE PICAFE
## <dttm> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2012-01-01 00:00:00 868474 823284. 526136. 1.50e6 91722. 52929. 535 8.75e5
## 2 2012-02-01 00:00:00 865408 846615. 584897. 1.73e6 94142. 52870. 571 8.26e5
## 3 2012-03-01 00:00:00 998847 950453. 634905. 1.43e6 88748. 52979. 576 7.28e5
## 4 2012-04-01 00:00:00 852138 789542. 550290. 1.39e6 92013. 52633. 580 7.03e5
## 5 2012-05-01 00:00:00 919675 904691. 639649. 1.96e6 93279. 52466. 689 6.70e5
## 6 2012-06-01 00:00:00 906243 879219. 620338. 1.96e6 91315. 52665. 714 5.93e5
## # ℹ 53 more variables: PECAFE <dbl>, XCAF <dbl>, M <dbl>, X <dbl>, TRM <dbl>,
## # M_CEREAL <dbl>, M_CERAMICO <dbl>, M_FARM <dbl>, X_COMB <dbl>, X_AZU <dbl>,
## # X_PREALIM <dbl>, X_FARM <dbl>, X_QUIM <dbl>, X_PAPEL <dbl>,
## # X_CERAMICO <dbl>, IPIR <dbl>, IPIR_PAPEL <dbl>, IPIR_FARM <dbl>,
## # IPIR_PREALIM <dbl>, MIN <dbl>, ICC <dbl>, VEH <dbl>, CART <dbl>, DAH <dbl>,
## # ENER <dbl>, BRENT <dbl>, IPC <dbl>, TO <dbl>, TD <dbl>, ISE <dbl>,
## # CAN <dbl>, AZUCAR <dbl>, CEM_V <dbl>, COR_V <dbl>, M_V <dbl>, X_V <dbl>, …
##Reconocimiento de la estructura de los datos
# Dimensiones de la base de datos
dim(base_original)
## [1] 168 62
# Número de observaciones
nrow(base_original)
## [1] 168
# Número de variables
ncol(base_original)
## [1] 62
# Nombres de las variables
names(base_original)
## [1] "FECHA" "PNCEM" "DECEM" "CONCRETO"
## [5] "LICC" "POLLO" "HUEVO" "PNCAFE"
## [9] "PICAFE" "PECAFE" "XCAF" "M"
## [13] "X" "TRM" "M_CEREAL" "M_CERAMICO"
## [17] "M_FARM" "X_COMB" "X_AZU" "X_PREALIM"
## [21] "X_FARM" "X_QUIM" "X_PAPEL" "X_CERAMICO"
## [25] "IPIR" "IPIR_PAPEL" "IPIR_FARM" "IPIR_PREALIM"
## [29] "MIN" "ICC" "VEH" "CART"
## [33] "DAH" "ENER" "BRENT" "IPC"
## [37] "TO" "TD" "ISE" "CAN"
## [41] "AZUCAR" "CEM_V" "COR_V" "M_V"
## [45] "X_V" "IPIR_V" "MIN_V" "ICC_V"
## [49] "VEH_V" "PEAJE_V" "ENER_V" "CART_V"
## [53] "POLLO_V" "ENER_CALI" "LICC_CALI" "VEH_CALI"
## [57] "X_CALI" "OCUP_HOTEL_CALI" "ICC_CALI" "PEAJE_CALI"
## [61] "DAH_CALI" "IPIR_CALI"
# Estructura de las variables
str(base_original)
## tibble [168 × 62] (S3: tbl_df/tbl/data.frame)
## $ FECHA : POSIXct[1:168], format: "2012-01-01" "2012-02-01" ...
## $ PNCEM : num [1:168] 868474 865408 998847 852138 919675 ...
## $ DECEM : num [1:168] 823284 846615 950453 789542 904691 ...
## $ CONCRETO : num [1:168] 526136 584897 634905 550290 639649 ...
## $ LICC : num [1:168] 1498909 1728147 1425267 1388134 1960736 ...
## $ POLLO : num [1:168] 91722 94142 88748 92013 93279 ...
## $ HUEVO : num [1:168] 52929 52870 52979 52633 52466 ...
## $ PNCAFE : num [1:168] 535 571 576 580 689 714 668 565 519 653 ...
## $ PICAFE : num [1:168] 874863 826220 727565 703033 670335 ...
## $ PECAFE : num [1:168] 256 246 226 215 210 ...
## $ XCAF : num [1:168] 197296 186693 203636 121442 167644 ...
## $ M : num [1:168] 4187750 4291881 4632763 4100547 5088029 ...
## $ X : num [1:168] 4785773 4999318 5712355 5010929 5403375 ...
## $ TRM : num [1:168] 1848 1787 1768 1774 1796 ...
## $ M_CEREAL : num [1:168] 130489 170760 150306 112970 171029 ...
## $ M_CERAMICO : num [1:168] 22663 22218 17682 19527 21924 ...
## $ M_FARM : num [1:168] 134163 144190 158930 151310 182270 ...
## $ X_COMB : num [1:168] 3313842 3319381 3870611 3522192 3529123 ...
## $ X_AZU : num [1:168] 63274 63131 78704 59114 53263 ...
## $ X_PREALIM : num [1:168] 28018 30393 29172 31688 28145 ...
## $ X_FARM : num [1:168] 30866 31202 35074 31236 47115 ...
## $ X_QUIM : num [1:168] 25716 27502 30545 31428 28830 ...
## $ X_PAPEL : num [1:168] 38768 32520 37830 31124 32192 ...
## $ X_CERAMICO : num [1:168] 11392 15168 14770 14160 14491 ...
## $ IPIR : num [1:168] 84.2 88 94.1 82.6 94.3 ...
## $ IPIR_PAPEL : num [1:168] NA NA NA NA NA NA NA NA NA NA ...
## $ IPIR_FARM : num [1:168] NA NA NA NA NA NA NA NA NA NA ...
## $ IPIR_PREALIM : num [1:168] NA NA NA NA NA NA NA NA NA NA ...
## $ MIN : num [1:168] 69 67.8 73.3 67 71 ...
## $ ICC : num [1:168] 32.7 26.8 24.4 26.6 26.5 20.6 23.2 18.1 25 25.6 ...
## $ VEH : num [1:168] NA NA NA NA NA NA NA NA NA NA ...
## $ CART : num [1:168] 2.80e+14 2.81e+14 2.84e+14 2.87e+14 2.91e+14 ...
## $ DAH : num [1:168] 1.26e+14 1.30e+14 1.28e+14 1.25e+14 1.27e+14 ...
## $ ENER : num [1:168] 1595 1545 1719 1575 1687 ...
## $ BRENT : num [1:168] 111 120 125 120 111 ...
## $ IPC : num [1:168] 76.8 77.2 77.3 77.4 77.7 ...
## $ TO : num [1:168] 59.7 60.5 61.5 61.2 61.5 ...
## $ TD : num [1:168] 12.8 12.1 10.5 11.1 11 ...
## $ ISE : num [1:168] 81.7 84.5 87.8 84.1 87.9 ...
## $ CAN : num [1:168] 1685584 1973654 2083470 1406868 1233631 ...
## $ AZUCAR : num [1:168] 148483 192196 202408 134532 107659 ...
## $ CEM_V : num [1:168] 61149 66969 72052 63652 71515 ...
## $ COR_V : num [1:168] 110 113 121 112 127 ...
## $ M_V : num [1:168] 3.55e+08 5.56e+08 4.09e+08 3.45e+08 4.12e+08 ...
## $ X_V : num [1:168] 1.60e+08 1.80e+08 1.91e+08 1.61e+08 1.99e+08 ...
## $ IPIR_V : num [1:168] 80.7 89.7 97.1 82.7 90.8 ...
## $ MIN_V : num [1:168] NA NA NA NA NA NA NA NA NA NA ...
## $ ICC_V : num [1:168] 20.6 16.2 21.4 35.5 28 ...
## $ VEH_V : num [1:168] 2379 2654 3155 2319 2507 ...
## $ PEAJE_V : num [1:168] 220673 215773 228878 196841 226518 ...
## $ ENER_V : num [1:168] 200 201 221 203 221 ...
## $ CART_V : num [1:168] 2.60e+13 2.61e+13 2.65e+13 2.67e+13 2.70e+13 ...
## $ POLLO_V : num [1:168] 13518 13580 13502 14575 14565 ...
## $ ENER_CALI : num [1:168] 69379734 68346783 69585382 67028317 68422194 ...
## $ LICC_CALI : num [1:168] 71805 60566 97722 95605 54599 ...
## $ VEH_CALI : num [1:168] NA NA NA NA NA NA NA NA NA NA ...
## $ X_CALI : num [1:168] 2.78e+09 3.33e+09 3.67e+09 3.10e+09 2.93e+09 ...
## $ OCUP_HOTEL_CALI: num [1:168] 41 48.2 52.8 46.2 51.7 ...
## $ ICC_CALI : num [1:168] 20.6 16.2 21.4 35.5 28 ...
## $ PEAJE_CALI : num [1:168] 27041 28333 29239 23982 27637 ...
## $ DAH_CALI : num [1:168] 4.07e+12 4.09e+12 3.94e+12 3.86e+12 3.99e+12 ...
## $ IPIR_CALI : num [1:168] 96.5 101.9 107.4 98.5 104.5 ...
# Primera y última fecha
min(base_original$FECHA, na.rm = TRUE)
## [1] "2012-01-01 UTC"
max(base_original$FECHA, na.rm = TRUE)
## [1] "2025-12-01 UTC"
##** Interpretación de los resultados** La base de datos está conformada por 168 observaciones y 62 variables, correspondientes a información económica sectorial recopilada con periodicidad mensual entre enero de 2012 y diciembre de 2025. La variable FECHA se encuentra en formato POSIXct, mientras que las demás variables son de tipo numérico. Esta estructura permite desarrollar un análisis de series de tiempo orientado a identificar relaciones entre indicadores económicos y evaluar su capacidad predictiva mediante modelos de regresión lineal.
##Revisión de calidad de los datos
Identificación de los datos faltantes
# Contar valores faltantes por variable
faltantes <- data.frame(
Variable = names(base_original),
Valores_faltantes = colSums(is.na(base_original))
)
# Mostrar únicamente variables con datos faltantes
faltantes <- faltantes %>%
filter(Valores_faltantes > 0) %>%
arrange(desc(Valores_faltantes))
# Presentar resultados
kable(
faltantes,
caption = "Valores faltantes por variable",
col.names = c("Variable", "Cantidad de valores faltantes")
)
| Variable | Cantidad de valores faltantes | |
|---|---|---|
| IPIR_PAPEL | IPIR_PAPEL | 72 |
| IPIR_FARM | IPIR_FARM | 72 |
| IPIR_PREALIM | IPIR_PREALIM | 72 |
| VEH | VEH | 24 |
| MIN_V | MIN_V | 12 |
| VEH_CALI | VEH_CALI | 12 |
| ENER_V | ENER_V | 3 |
| PEAJE_V | PEAJE_V | 1 |
| LICC_CALI | LICC_CALI | 1 |
La revisión de valores faltantes permitió identificar nueve variables con información incompleta. Las mayores ausencias corresponden a IPIR_PAPEL, IPIR_FARM e IPIR_PREALIM, cada una con 72 registros faltantes, equivalentes al 42,86 % de las observaciones. En contraste, las variables seleccionadas para el análisis presentan una disponibilidad elevada: IPIR_V, CEM_V e ISE no registran valores faltantes, mientras que ENER_V presenta únicamente tres. Por esta razón, no se considera pertinente eliminar observaciones de manera generalizada. El tratamiento de los datos faltantes se realizará de acuerdo con las necesidades específicas de los modelos.
Registros duplicados
# Número de registros completamente duplicados
sum(duplicated(base_original))
## [1] 0
# Número de fechas duplicadas
sum(duplicated(base_original$FECHA))
## [1] 0
# Identificar fechas repetidas
base_original %>%
count(FECHA) %>%
filter(n > 1)
## # A tibble: 0 × 2
## # ℹ 2 variables: FECHA <dttm>, n <int>
Se realizó una verificación de registros duplicados mediante la función duplicated(). Los resultados muestran que no existen observaciones completamente duplicadas ni fechas repetidas. Por tanto, se confirma que cada periodo mensual cuenta con un único registro, lo que permite conservar la estructura cronológica de la base sin necesidad de eliminar observaciones por duplicidad.
Identificación de valores atípicos
# Seleccionar variables de interés
variables <- c("IPIR_V", "CEM_V", "ENER_V", "ISE")
# Transformar los datos a formato largo
base_larga <- base_original %>%
select(all_of(variables)) %>%
pivot_longer(
cols = everything(),
names_to = "Variable",
values_to = "Valor"
)
# Construir diagramas de caja
ggplot(base_larga, aes(x = Variable, y = Valor)) +
geom_boxplot(fill = "lightblue", color = "black") +
facet_wrap(~ Variable, scales = "free") +
labs(
title = "Identificación de posibles valores atípicos",
x = "Variable",
y = "Valor"
) +
theme_minimal()
## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
Interpretación:El análisis de los diagramas de caja permitió identificar
posibles valores atípicos en tres de las cuatro variables seleccionadas.
En primer lugar, los despachos de cemento del Valle del Cauca
(
CEM_V) presentan varias observaciones que se alejan de la
distribución central, principalmente en el extremo inferior, aunque
también se identifica un valor elevado. Este comportamiento evidencia
fluctuaciones importantes en los niveles mensuales de despachos. En
segundo lugar, el consumo de energía (ENER_V) registra
observaciones extremas tanto por debajo como por encima de su
distribución habitual, lo que sugiere la presencia de periodos con
niveles de consumo considerablemente diferentes. Por su parte, el índice
de producción industrial del Valle del Cauca (IPIR_V)
presenta una observación inferior que se distancia notablemente del
resto de los registros. Finalmente, el Índice de Seguimiento a la
Economía (ISE) no muestra observaciones que superen los
límites establecidos por el diagrama de caja.
La presencia de estos valores extremos requiere especial atención, debido a que pueden influir en la estimación de los coeficientes de regresión y afectar la capacidad predictiva de los modelos. No obstante, su identificación mediante diagramas de caja no implica necesariamente que correspondan a errores en los datos. En el contexto de los indicadores económicos, estas observaciones podrían reflejar variaciones reales de la actividad productiva y sectorial. Por esta razón, se conservarán inicialmente y se realizará una revisión individual de los registros identificados, considerando su fecha y magnitud, antes de tomar cualquier decisión sobre su tratamiento.
Identificación de los meses correspondientes a los valores atípicos
# Identificación de valores atípicos mediante IQR
variables <- c("CEM_V", "ENER_V", "IPIR_V", "ISE")
# Organizar los datos
base_larga <- base_original %>%
select(FECHA, all_of(variables)) %>%
pivot_longer(
cols = all_of(variables),
names_to = "Variable",
values_to = "Valor"
)
# Calcular límites y detectar valores atípicos
valores_atipicos <- base_larga %>%
group_by(Variable) %>%
mutate(
Q1 = quantile(Valor, 0.25, na.rm = TRUE),
Q3 = quantile(Valor, 0.75, na.rm = TRUE),
IQR = Q3 - Q1,
Limite_inferior = Q1 - 1.5 * IQR,
Limite_superior = Q3 + 1.5 * IQR
) %>%
filter(
!is.na(Valor),
Valor < Limite_inferior |
Valor > Limite_superior
) %>%
select(
FECHA, Variable, Valor,
Limite_inferior, Limite_superior
) %>%
arrange(Variable, FECHA)
# Presentar resultados
kable(
valores_atipicos,
digits = 2,
caption = "Identificación de valores atípicos por variable"
)
| FECHA | Variable | Valor | Limite_inferior | Limite_superior |
|---|---|---|---|---|
| 2020-03-01 | CEM_V | 53449.33 | 54871.77 | 116783.31 |
| 2020-04-01 | CEM_V | 21510.91 | 54871.77 | 116783.31 |
| 2021-05-01 | CEM_V | 11484.85 | 54871.77 | 116783.31 |
| 2022-09-01 | CEM_V | 119923.12 | 54871.77 | 116783.31 |
| 2012-01-01 | ENER_V | 200.30 | 201.07 | 257.49 |
| 2020-04-01 | ENER_V | 175.93 | 201.07 | 257.49 |
| 2021-05-01 | ENER_V | 149.23 | 201.07 | 257.49 |
| 2022-05-01 | ENER_V | 259.42 | 201.07 | 257.49 |
| 2021-05-01 | IPIR_V | 37.79 | 72.92 | 129.85 |
La identificación de valores atípicos mediante el criterio del rango
intercuartílico (IQR) permitió detectar nueve observaciones
potencialmente extremas en las variables seleccionadas. Los despachos de
cemento del Valle del Cauca (CEM_V) registran cuatro casos,
correspondientes a marzo y abril de 2020, mayo de 2021 y septiembre de
2022. Se destacan los valores inferiores observados durante 2020 y 2021,
así como un valor superior en septiembre de 2022.
Por su parte, el consumo de energía (ENER_V) presenta
cuatro observaciones atípicas: enero de 2012, abril de 2020, mayo de
2021 y mayo de 2022. Cabe señalar que el registro de enero de 2012 se
encuentra ligeramente por debajo del límite inferior establecido,
mientras que los demás casos muestran desviaciones más pronunciadas.
Finalmente, el índice de producción industrial del Valle del Cauca
(IPIR_V) presenta una observación inferior en mayo de 2021,
con un valor de 37,79 frente a un límite inferior de 72,92. El ISE, por
su parte, no presenta observaciones que superen los límites definidos
por este criterio.
La coincidencia de observaciones extremas en mayo de 2021 para las tres variables sectoriales evidencia la necesidad de examinar conjuntamente el comportamiento de estos indicadores durante dicho periodo. Sin embargo, la identificación estadística no permite establecer por sí sola las causas de estas variaciones. En consecuencia, se conservarán inicialmente las observaciones identificadas, ya que podrían representar fluctuaciones reales de la actividad económica y su eliminación podría generar una pérdida de información relevante para el análisis predictivo.
##Exploración y regresión lineal simple Estadísticas descriptivas
# Selección de variables para el análisis
variables <- c("IPIR_V", "CEM_V", "ENER_V", "ISE")
# Calcular estadísticas descriptivas
estadisticas <- base_original %>%
select(all_of(variables)) %>%
summarise(
across(
everything(),
list(
Media = ~ mean(.x, na.rm = TRUE),
Mediana = ~ median(.x, na.rm = TRUE),
Desviacion = ~ sd(.x, na.rm = TRUE),
Minimo = ~ min(.x, na.rm = TRUE),
Maximo = ~ max(.x, na.rm = TRUE)
)
)
) %>%
pivot_longer(
cols = everything(),
names_to = c("Variable", "Estadistico"),
names_pattern = "(.+)_(Media|Mediana|Desviacion|Minimo|Maximo)",
values_to = "Valor"
) %>%
pivot_wider(
names_from = Estadistico,
values_from = Valor
)
## Warning: Values from `Valor` are not uniquely identified; output will contain list-cols.
## • Use `values_fn = list` to suppress this warning.
## • Use `values_fn = {summary_fun}` to summarise duplicates.
## • Use the following dplyr code to identify duplicates.
## {data} |>
## dplyr::summarise(n = dplyr::n(), .by = c(Variable, Estadistico)) |>
## dplyr::filter(n > 1L)
# Presentar resultados
kable(
estadisticas,
digits = 2,
caption = "Estadísticas descriptivas de las variables seleccionadas"
)
| Variable | Media | Desviacion | Minimo | Maximo |
|---|---|---|---|---|
| IPIR_V | 101.3478, 101.5317 | 11.40938 | 37.78728 | 126.9396 |
| CEM_V | 84963.07, 85022.56 | 13814.19 | 11484.85 | 119923.1 |
| ENER_V | 229.3886, 230.2200 | 12.90907 | 149.2307 | 259.42 |
| ISE | 107.2151, 104.8898 | 12.66603 | 81.68037 | 141.2443 |
Las estadísticas descriptivas permiten identificar diferencias en el
comportamiento de los indicadores seleccionados durante el periodo de
estudio. En el caso del índice de producción industrial del Valle del
Cauca (IPIR_V), se obtiene una media de 101,35 y una
mediana de 101,53, lo que evidencia una proximidad entre ambas medidas
de centralidad. Por su parte, los despachos de cemento
(CEM_V) presentan un promedio de 84.963,07 y una mediana de
85.022,56, mientras que el consumo de energía (ENER_V)
registra una media de 229,39 y una mediana de 230,22.
En cuanto al Índice de Seguimiento a la Economía (ISE),
su media alcanza 107,22 y su mediana 104,89, lo que sugiere una
distribución con cierta asimetría. Respecto a la dispersión, las
desviaciones estándar muestran variaciones en los niveles de cada
indicador, aunque su comparación directa debe realizarse con precaución
debido a las diferencias de escala y unidades de medida.
En términos generales, los resultados evidencian que los indicadores presentan comportamientos y niveles de variabilidad diferenciados. Asimismo, los valores mínimos y máximos permiten reconocer fluctuaciones importantes durante el periodo analizado, lo que refuerza la necesidad de examinar su evolución temporal antes de establecer relaciones estadísticas y proponer los modelos de regresión.
Evolución temporal de las variables
# Evolución temporal de los indicadores seleccionados
base_graficos <- base_original %>%
select(FECHA, IPIR_V, CEM_V, ENER_V, ISE) %>%
pivot_longer(
cols = -FECHA,
names_to = "Variable",
values_to = "Valor"
)
# Construcción de gráficos de evolución temporal
ggplot(
base_graficos,
aes(x = FECHA, y = Valor)
) +
geom_line(color = "steelblue", linewidth = 0.7) +
facet_wrap(
~ Variable,
scales = "free_y",
ncol = 2
) +
labs(
title = "Evolución temporal de los indicadores económicos",
subtitle = "Valle del Cauca y actividad económica nacional (2012-2025)",
x = "Periodo",
y = "Valor del indicador"
) +
theme_minimal() +
theme(
plot.title = element_text(
face = "bold",
size = 13
),
strip.text = element_text(
face = "bold"
)
)
El análisis de la evolución temporal evidencia comportamientos
diferenciados entre los indicadores económicos seleccionados. Los
despachos de cemento (
CEM_V) y el índice de producción
industrial (IPIR_V) presentan fluctuaciones importantes a
lo largo del periodo, con caídas pronunciadas durante 2020 y 2021,
seguidas de procesos de recuperación. Por su parte, el consumo de
energía (ENER_V) muestra un comportamiento relativamente
estable, aunque registra variaciones significativas en determinados
meses. En contraste, el Índice de Seguimiento a la Economía
(ISE) presenta una trayectoria general creciente,
acompañada de fluctuaciones recurrentes y una caída destacada durante
2020.
En términos generales, las series muestran posibles patrones temporales y variaciones que deben considerarse en la construcción de los modelos de regresión. En particular, las tendencias y fluctuaciones observadas sugieren que las relaciones entre los indicadores podrían estar condicionadas por factores temporales comunes. Por esta razón, será necesario evaluar la correlación entre las variables y considerar la estructura temporal de los datos al desarrollar los ejercicios predictivos. No obstante, la gráfica por sí sola no permite establecer las causas de los cambios observados ni confirmar formalmente la existencia de estacionalidad.
análisis de relaciones entre variables
# Seleccionar las variables del análisis
base_cor <- base_original %>%
select(IPIR_V, CEM_V, ENER_V, ISE)
# Calcular matriz de correlaciones
matriz_cor <- cor(
base_cor,
use = "complete.obs",
method = "pearson"
)
# Presentar resultados
round(matriz_cor, 3)
## IPIR_V CEM_V ENER_V ISE
## IPIR_V 1.000 0.854 0.724 0.708
## CEM_V 0.854 1.000 0.755 0.606
## ENER_V 0.724 0.755 1.000 0.376
## ISE 0.708 0.606 0.376 1.000
La matriz de correlaciones de Pearson evidencia asociaciones
positivas entre las variables seleccionadas. La relación más elevada se
presenta entre el índice de producción industrial del Valle del Cauca
(IPIR_V) y los despachos de cemento (CEM_V),
con un coeficiente de 0,854, lo que representa una correlación positiva
muy fuerte. Por su parte, el consumo de energía (ENER_V)
registra una correlación de 0,724 con la producción industrial, mientras
que el Índice de Seguimiento a la Economía (ISE) presenta
un coeficiente de 0,708. Ambas relaciones se clasifican como fuertes y
positivas.
En cuanto a las relaciones entre las variables explicativas, se observa una correlación de 0,755 entre los despachos de cemento y el consumo de energía, así como una correlación de 0,606 entre los despachos de cemento y el ISE. Finalmente, la relación entre el consumo de energía y el ISE es moderada, con un coeficiente de 0,376.
Estos resultados sugieren que los tres indicadores seleccionados presentan asociaciones relevantes con la producción industrial y, por tanto, constituyen candidatos para los modelos de regresión lineal simple. No obstante, las correlaciones identificadas no permiten establecer relaciones causales. Además, debido a la naturaleza temporal de los datos, las tendencias compartidas entre las series podrían incrementar artificialmente los coeficientes de correlación, por lo que estos resultados deben interpretarse como evidencia exploratoria y complementarse con la evaluación de las relaciones temporales.
Visualización de las correlaciones
# Cargar libreria para graficos de correlacion
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.5.3
## corrplot 0.95 loaded
# Gráfico de correlaciones
corrplot(
matriz_cor,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col = "black",
tl.srt = 45,
number.cex = 0.8,
title = "Matriz de correlaciones entre indicadores",
mar = c(0, 0, 2, 0)
)
La representación gráfica de la matriz de correlaciones permite
visualizar la intensidad y dirección de las asociaciones entre los
indicadores seleccionados. Se observa que todas las relaciones son
positivas, aunque presentan diferentes magnitudes. La correlación más
elevada corresponde a los despachos de cemento y la producción
industrial del Valle del Cauca (0,85), seguida de la relación entre los
despachos de cemento y el consumo de energía (0,76). Asimismo, la
producción industrial presenta correlaciones positivas fuertes con el
consumo energético (0,72) y el Índice de Seguimiento a la Economía
(0,71).
En conjunto, estos resultados respaldan la pertinencia inicial de considerar los tres indicadores como posibles variables explicativas de la producción industrial. Sin embargo, la asociación relativamente elevada entre algunos predictores también advierte sobre la necesidad de evaluar la multicolinealidad en los modelos de regresión múltiple.
##Exploración y regresión lineal simple
Construcción de los diagramas de dispersión
# Gráfico 1: IPIR_V y CEM_V
ggplot(base_original, aes(x = CEM_V, y = IPIR_V)) +
geom_point(color = "steelblue", alpha = 0.7) +
geom_smooth(method = "lm", se = TRUE, color = "red") +
labs(
title = "Producción industrial y despachos de cemento",
x = "Despachos de cemento",
y = "Índice de producción industrial"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
# Gráfico 2: IPIR_V y ENER_V
ggplot(base_original, aes(x = ENER_V, y = IPIR_V)) +
geom_point(color = "steelblue", alpha = 0.7) +
geom_smooth(method = "lm", se = TRUE, color = "red") +
labs(
title = "Producción industrial y consumo de energía",
x = "Consumo de energía",
y = "Índice de producción industrial"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_point()`).
# Gráfico 3: IPIR_V e ISE
ggplot(base_original, aes(x = ISE, y = IPIR_V)) +
geom_point(color = "steelblue", alpha = 0.7) +
geom_smooth(method = "lm", se = TRUE, color = "red") +
labs(
title = "Producción industrial e Índice de Seguimiento a la Economía",
x = "Índice de Seguimiento a la Economía",
y = "Índice de producción industrial"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
El análisis de los diagramas de dispersión permite examinar la relación
entre el índice de producción industrial del Valle del Cauca
(
IPIR_V), definido como variable dependiente, y los tres
indicadores seleccionados como posibles variables explicativas. En
términos generales, los resultados muestran asociaciones positivas entre
la producción industrial y cada uno de los predictores, lo que indica
que los mayores valores de estos indicadores tienden a coincidir con
niveles más elevados de producción industrial durante el periodo
analizado.
En primer lugar, la relación entre los despachos de cemento
(CEM_V) y la producción industrial presenta el patrón
lineal positivo más marcado. La mayoría de las observaciones se
concentra alrededor de la línea de tendencia, lo que evidencia una
asociación relativamente estrecha entre ambas variables. Este
comportamiento coincide con el coeficiente de correlación de Pearson de
0,854, el más elevado entre los indicadores analizados. La relación
observada sugiere que los periodos con mayores niveles de despachos de
cemento tienden a coincidir con mayores niveles de producción
industrial. Sin embargo, también se identifican algunas observaciones
alejadas del grupo principal, particularmente en los niveles inferiores
de ambas variables, que podrían ejercer influencia sobre la estimación
de la relación lineal.
En segundo lugar, el consumo de energía (ENER_V)
presenta una asociación positiva con el índice de producción industrial,
respaldada por un coeficiente de correlación de 0,724. No obstante, la
dispersión de los puntos alrededor de la línea de tendencia es mayor que
en el caso de los despachos de cemento. Esto indica que, aunque ambas
variables presentan movimientos conjuntos, existe una mayor variabilidad
en los niveles de producción industrial para determinados valores de
consumo energético. Asimismo, se observan algunas observaciones extremas
que podrían afectar el ajuste del modelo. En este gráfico, el programa
excluye tres registros debido a la presencia de valores faltantes en el
consumo de energía, por lo que la relación se representa únicamente con
las observaciones disponibles.
Finalmente, la relación entre el Índice de Seguimiento a la Economía
(ISE) y la producción industrial también presenta una
tendencia positiva, con un coeficiente de correlación de 0,708. Sin
embargo, la distribución de las observaciones evidencia una dispersión
considerable alrededor de la línea de regresión, lo que sugiere que el
comportamiento del ISE no permite representar completamente las
variaciones de la producción industrial. Adicionalmente, se identifica
una observación con un nivel particularmente bajo de producción
industrial respecto a su valor del ISE, correspondiente a un registro
previamente identificado como atípico. Esta observación podría influir
en la estimación de la pendiente y en el ajuste general del modelo.
Al comparar los tres gráficos, se identifica que los despachos de cemento presentan la asociación lineal más fuerte con la producción industrial, seguidos por el consumo de energía y el Índice de Seguimiento a la Economía. Esta jerarquía coincide con los resultados de la matriz de correlaciones y proporciona un primer criterio para seleccionar los predictores que serán evaluados en los modelos de regresión lineal simple.
Sin embargo, es necesario considerar que estas relaciones corresponden a asociaciones contemporáneas y no demuestran causalidad entre los indicadores. Además, debido a que las variables corresponden a series económicas mensuales, las tendencias temporales y los movimientos compartidos pueden contribuir a generar correlaciones elevadas. Por consiguiente, los resultados gráficos constituyen evidencia exploratoria para orientar la modelación, pero no son suficientes para determinar cuál predictor tendrá la mayor capacidad de pronóstico. Esta evaluación deberá realizarse mediante la estimación de los modelos y su posterior comparación con procedimientos de validación y medidas de error predictivo.
##Estimación de los modelos de regresión lineal simple Preparación de los datos para la modelación
# Preparación de la base para los modelos predictivos
base_modelos <- base_original %>%
arrange(FECHA) %>%
mutate(
FECHA_objetivo = lead(FECHA),
IPIR_V_obj = lead(IPIR_V)
) %>%
filter(
!is.na(IPIR_V_obj),
complete.cases(CEM_V, ENER_V, ISE)
)
# Dimensiones de la nueva base
dim(base_modelos)
## [1] 164 64
# Primeras observaciones
head(
base_modelos %>%
select(
FECHA,
FECHA_objetivo,
IPIR_V_obj,
CEM_V,
ENER_V,
ISE
)
)
## # A tibble: 6 × 6
## FECHA FECHA_objetivo IPIR_V_obj CEM_V ENER_V ISE
## <dttm> <dttm> <dbl> <dbl> <dbl> <dbl>
## 1 2012-01-01 00:00:00 2012-02-01 00:00:00 89.7 61149. 200. 81.7
## 2 2012-02-01 00:00:00 2012-03-01 00:00:00 97.1 66969. 201. 84.5
## 3 2012-03-01 00:00:00 2012-04-01 00:00:00 82.7 72052. 221 87.8
## 4 2012-04-01 00:00:00 2012-05-01 00:00:00 90.8 63652. 203. 84.1
## 5 2012-05-01 00:00:00 2012-06-01 00:00:00 94.3 71515. 221. 87.9
## 6 2012-06-01 00:00:00 2012-07-01 00:00:00 99.5 71479. 217. 87.8
# Verificar valores faltantes
colSums(
is.na(
base_modelos %>%
select(IPIR_V_obj, CEM_V, ENER_V, ISE)
)
)
## IPIR_V_obj CEM_V ENER_V ISE
## 0 0 0 0
Verificación de la base preparada
# Dimensiones de la base preparada
dim(base_modelos)
## [1] 164 64
# Verificar valores faltantes
colSums(
is.na(
base_modelos %>%
select(IPIR_V_obj, CEM_V, ENER_V, ISE)
)
)
## IPIR_V_obj CEM_V ENER_V ISE
## 0 0 0 0
Una vez realizado el desplazamiento temporal de la variable dependiente y la selección de observaciones completas, se obtuvo una base de modelación conformada por 164 observaciones y 64 variables. La verificación de los datos confirmó que las variables utilizadas en los modelos no presentan valores faltantes. De esta manera, se dispone de una muestra común para estimar y comparar las tres regresiones lineales simples, garantizando que las diferencias en sus resultados no se deban a cambios en el número de observaciones utilizadas.
##Estimación de los tres modelos de regresión simple
# MODELO 1: Producción industrial según despachos de cemento
modelo_simple_1 <- lm(
IPIR_V_obj ~ CEM_V,
data = base_modelos
)
summary(modelo_simple_1)
##
## Call:
## lm(formula = IPIR_V_obj ~ CEM_V, data = base_modelos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -61.351 -4.954 0.078 4.995 36.109
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.865e+01 4.334e+00 13.53 <2e-16 ***
## CEM_V 5.049e-04 5.028e-05 10.04 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.951 on 162 degrees of freedom
## Multiple R-squared: 0.3837, Adjusted R-squared: 0.3799
## F-statistic: 100.8 on 1 and 162 DF, p-value: < 2.2e-16
# MODELO 2: Producción industrial según consumo de energía
modelo_simple_2 <- lm(
IPIR_V_obj ~ ENER_V,
data = base_modelos
)
summary(modelo_simple_2)
##
## Call:
## lm(formula = IPIR_V_obj ~ ENER_V, data = base_modelos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -60.312 -5.392 0.463 6.115 26.843
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 21.8273 14.5682 1.498 0.136
## ENER_V 0.3477 0.0634 5.484 1.57e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.47 on 162 degrees of freedom
## Multiple R-squared: 0.1566, Adjusted R-squared: 0.1514
## F-statistic: 30.08 on 1 and 162 DF, p-value: 1.566e-07
# MODELO 3: Producción industrial según el ISE
modelo_simple_3 <- lm(
IPIR_V_obj ~ ISE,
data = base_modelos
)
summary(modelo_simple_3)
##
## Call:
## lm(formula = IPIR_V_obj ~ ISE, data = base_modelos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -62.361 -4.473 0.892 5.184 18.805
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 46.14709 6.34577 7.272 1.43e-11 ***
## ISE 0.51789 0.05887 8.797 1.99e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.379 on 162 degrees of freedom
## Multiple R-squared: 0.3233, Adjusted R-squared: 0.3191
## F-statistic: 77.39 on 1 and 162 DF, p-value: 1.992e-15
Comparación e interpretación de los modelos de regresión lineal simple
La estimación de los tres modelos de regresión lineal simple evidencia asociaciones positivas y estadísticamente significativas entre los indicadores económicos seleccionados y el índice de producción industrial del Valle del Cauca del mes siguiente. En los tres casos, los coeficientes de las variables explicativas presentan signos positivos y niveles de significancia inferiores al 1 %, lo que permite rechazar la hipótesis nula de que sus respectivas pendientes sean iguales a cero, bajo los supuestos de cada modelo.
Al comparar su capacidad explicativa, se identifica que el modelo
basado en los despachos de cemento (CEM_V) presenta el
mayor R², con un valor de 0,3837. Esto significa que el 38,37 % de la
variabilidad observada en la producción industrial del periodo siguiente
es explicada por esta variable. Adicionalmente, registra el menor error
estándar residual (8,951), lo que indica una menor dispersión de los
errores de estimación respecto a los otros modelos.
En segundo lugar, el modelo que incorpora el Índice de Seguimiento a
la Economía (ISE) obtiene un R² de 0,3233, por lo que
explica el 32,33 % de la variabilidad de la variable dependiente. Su
error estándar residual es de 9,379, lo que evidencia un ajuste inferior
al del modelo basado en los despachos de cemento, aunque superior al
obtenido con el consumo de energía.
Por último, el modelo que utiliza el consumo de energía
(ENER_V) presenta un R² de 0,1566 y un error estándar
residual de 10,47. Estos resultados indican que, de manera individual,
esta variable tiene una capacidad explicativa más limitada sobre el
comportamiento de la producción industrial del mes siguiente.
En consecuencia, considerando los indicadores de ajuste dentro de la muestra, el modelo basado en los despachos de cemento presenta el mejor desempeño relativo entre las tres especificaciones simples. Sin embargo, esta comparación no permite concluir todavía que sea el modelo con mayor precisión predictiva. Para establecerlo, será necesario evaluar su desempeño mediante validación cruzada temporal y el error absoluto medio (MAE), comparándolo también con un modelo de referencia que utilice la mediana del conjunto de entrenamiento.
validación cruzada y comparación mediante MAE
# Parámetros de validación temporal
n_inicial <- 104
horizonte <- 12
n_particiones <- 5
# Crear lista para almacenar las predicciones de referencia
resultados_mediana <- list()
# Recorrer las cinco particiones
for (i in 1:n_particiones) {
# Definir observaciones de entrenamiento
fin_entrenamiento <- n_inicial + (i - 1) * horizonte
entrenamiento <- base_modelos[1:fin_entrenamiento, ]
# Definir observaciones de prueba
inicio_prueba <- fin_entrenamiento + 1
fin_prueba <- fin_entrenamiento + horizonte
prueba <- base_modelos[inicio_prueba:fin_prueba, ]
# Calcular mediana del entrenamiento
mediana_entrenamiento <- median(
entrenamiento$IPIR_V_obj
)
# Generar predicciones
predicciones <- data.frame(
Particion = i,
Real = prueba$IPIR_V_obj,
Pred_Mediana = mediana_entrenamiento
)
# Guardar resultados
resultados_mediana[[i]] <- predicciones
}
# Unir resultados
resultados_mediana <- bind_rows(resultados_mediana)
# Visualizar resultados
head(resultados_mediana)
## Particion Real Pred_Mediana
## 1 1 95.76380 97.64498
## 2 1 102.15021 97.64498
## 3 1 107.37552 97.64498
## 4 1 98.54686 97.64498
## 5 1 37.78728 97.64498
## 6 1 100.55712 97.64498
Calcular el MAE del modelo de referencia
# Calcular el MAE del modelo de referencia
mae_mediana <- mean(
abs(
resultados_mediana$Real -
resultados_mediana$Pred_Mediana
)
)
# Mostrar resultado
mae_mediana
## [1] 12.8493
Comparación de los modelos mediante MAE
n_inicial <- 104
horizonte <- 12
n_particiones <- 5
# ============================================================
# VALIDACION TEMPORAL Y COMPARACION MEDIANTE MAE
# ============================================================
# 1. Definir parametros
n_inicial <- 104
horizonte <- 12
n_particiones <- 5
# 2. Crear lista de resultados
resultados_cv <- list()
# 3. Ejecutar validacion temporal
for (i in 1:n_particiones) {
fin_entrenamiento <- n_inicial + (i - 1) * horizonte
inicio_prueba <- fin_entrenamiento + 1
fin_prueba <- fin_entrenamiento + horizonte
entrenamiento <- base_modelos[1:fin_entrenamiento, ]
prueba <- base_modelos[inicio_prueba:fin_prueba, ]
# Modelo 1: CEM_V
modelo1 <- lm(IPIR_V_obj ~ CEM_V, data = entrenamiento)
pred1 <- predict(modelo1, newdata = prueba)
# Modelo 2: ENER_V
modelo2 <- lm(IPIR_V_obj ~ ENER_V, data = entrenamiento)
pred2 <- predict(modelo2, newdata = prueba)
# Modelo 3: ISE
modelo3 <- lm(IPIR_V_obj ~ ISE, data = entrenamiento)
pred3 <- predict(modelo3, newdata = prueba)
# Guardar predicciones
resultados_cv[[i]] <- data.frame(
Particion = i,
Real = prueba$IPIR_V_obj,
Pred_CEM = as.numeric(pred1),
Pred_ENER = as.numeric(pred2),
Pred_ISE = as.numeric(pred3)
)
}
# 4. Unificar resultados
resultados_cv <- bind_rows(resultados_cv)
# 5. Calcular MAE de cada modelo
comparacion_mae <- data.frame(
Modelo = c(
"Regresion simple: CEM_V",
"Regresion simple: ENER_V",
"Regresion simple: ISE",
"Modelo de referencia: Mediana"
),
MAE = c(
mean(abs(resultados_cv$Real - resultados_cv$Pred_CEM)),
mean(abs(resultados_cv$Real - resultados_cv$Pred_ENER)),
mean(abs(resultados_cv$Real - resultados_cv$Pred_ISE)),
mae_mediana
)
)
# 6. Ordenar resultados
comparacion_mae <- comparacion_mae %>%
arrange(MAE)
# 7. Presentar tabla
knitr::kable(
comparacion_mae,
digits = 4,
caption = "Comparacion del desempeno predictivo mediante MAE"
)
| Modelo | MAE |
|---|---|
| Regresion simple: ISE | 8.7526 |
| Regresion simple: CEM_V | 9.5151 |
| Regresion simple: ENER_V | 11.9962 |
| Modelo de referencia: Mediana | 12.8493 |
# 8. Verificar numero de predicciones
nrow(resultados_cv)
## [1] 60
# Mostrar comparación de los modelos
print(comparacion_mae)
## Modelo MAE
## 1 Regresion simple: ISE 8.752556
## 2 Regresion simple: CEM_V 9.515121
## 3 Regresion simple: ENER_V 11.996199
## 4 Modelo de referencia: Mediana 12.849301
# Ordenar de menor a mayor error
comparacion_mae %>%
arrange(MAE)
## Modelo MAE
## 1 Regresion simple: ISE 8.752556
## 2 Regresion simple: CEM_V 9.515121
## 3 Regresion simple: ENER_V 11.996199
## 4 Modelo de referencia: Mediana 12.849301
Comparación de la mejora frente al modelo de referencia
La evaluación del desempeño predictivo mediante validación temporal permitió comparar los tres modelos de regresión lineal simple con un modelo de referencia basado en la mediana de la variable dependiente del conjunto de entrenamiento. Para ello, se utilizaron cinco particiones temporales, cada una con 12 observaciones de evaluación, manteniendo el orden cronológico de la información y utilizando las mismas particiones para todos los modelos.
Los resultados muestran que el modelo basado en el Índice de
Seguimiento a la Economía (ISE) presenta el menor error
absoluto medio (MAE), con un valor de 8,7526. Esto significa que sus
predicciones se alejan, en promedio, aproximadamente 8,75 puntos de los
valores reales de producción industrial. En segundo lugar, se encuentra
el modelo basado en los despachos de cemento (CEM_V), con
un MAE de 9,5151, mientras que el modelo que utiliza el consumo de
energía (ENER_V) registra un error de 11,9962.
Por su parte, el modelo de referencia basado en la mediana obtiene un MAE de 12,8493, superior al registrado por las tres regresiones. Al comparar los resultados, se evidencia que el modelo con el ISE reduce el error de predicción en aproximadamente un 31,88 % respecto a la referencia, seguido del modelo con despachos de cemento, cuya reducción alcanza el 25,95 %. El modelo con consumo de energía presenta una mejora más limitada, equivalente al 6,64 %.
Un resultado relevante es que el modelo basado en el ISE presenta el mejor desempeño predictivo, a pesar de que el modelo con despachos de cemento había obtenido un mayor coeficiente de determinación en la estimación inicial. Esta diferencia demuestra que un mayor ajuste dentro de la muestra no garantiza necesariamente una mayor precisión en las predicciones realizadas sobre observaciones posteriores.
En consecuencia, para los modelos de regresión lineal simple, el ISE constituye el predictor individual más conveniente según los resultados de la validación temporal. No obstante, esta selección es preliminar y deberá contrastarse con los modelos de regresión múltiple, con el propósito de determinar si la incorporación conjunta de indicadores económicos permite mejorar la capacidad predictiva.
##Regresión lineal múltiple
Selección y preparación de las variables
# Crear variable categórica del mes objetivo
base_modelos <- base_modelos %>%
mutate(
MES = factor(
month(FECHA_objetivo),
levels = 1:12,
labels = month.abb
)
)
# Verificar la nueva variable
head(
base_modelos %>%
select(FECHA, FECHA_objetivo, IPIR_V_obj, MES)
)
## # A tibble: 6 × 4
## FECHA FECHA_objetivo IPIR_V_obj MES
## <dttm> <dttm> <dbl> <fct>
## 1 2012-01-01 00:00:00 2012-02-01 00:00:00 89.7 Feb
## 2 2012-02-01 00:00:00 2012-03-01 00:00:00 97.1 Mar
## 3 2012-03-01 00:00:00 2012-04-01 00:00:00 82.7 Apr
## 4 2012-04-01 00:00:00 2012-05-01 00:00:00 90.8 May
## 5 2012-05-01 00:00:00 2012-06-01 00:00:00 94.3 Jun
## 6 2012-06-01 00:00:00 2012-07-01 00:00:00 99.5 Jul
# Frecuencia de observaciones por mes
table(base_modelos$MES)
##
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 12 13 14 14 14 14 14 14 14 13 14 14
La variable categórica mensual se construyó a partir de la fecha correspondiente al periodo objetivo de predicción. La distribución de frecuencias evidencia que los doce meses del año están representados en la muestra, con un total de 164 observaciones. Las frecuencias oscilan entre 12 y 14 registros por mes, lo que refleja una distribución relativamente equilibrada. Esta variable permitirá incorporar posibles diferencias sistemáticas asociadas a la estacionalidad mensual en uno de los modelos de regresión múltiple. Se estableció enero como categoría de referencia para interpretar los coeficientes de los demás meses.
Estimación de los modelos de regresión múltiple
# Modelo múltiple 1: indicadores económicos
modelo_multiple_1 <- lm(
IPIR_V_obj ~ CEM_V + ENER_V + ISE,
data = base_modelos
)
# Resultados del modelo
summary(modelo_multiple_1)
##
## Call:
## lm(formula = IPIR_V_obj ~ CEM_V + ENER_V + ISE, data = base_modelos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -62.011 -4.358 1.012 5.134 23.971
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.067e+01 1.537e+01 3.947 0.000118 ***
## CEM_V 4.323e-04 8.745e-05 4.943 1.92e-06 ***
## ENER_V -1.020e-01 8.002e-02 -1.275 0.204074
## ISE 2.574e-01 6.969e-02 3.694 0.000303 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.56 on 160 degrees of freedom
## Multiple R-squared: 0.4432, Adjusted R-squared: 0.4328
## F-statistic: 42.46 on 3 and 160 DF, p-value: < 2.2e-16
# Modelo múltiple 2: indicadores y variable mensual
modelo_multiple_2 <- lm(
IPIR_V_obj ~ CEM_V + ENER_V + ISE + MES,
data = base_modelos
)
# Resultados del modelo
summary(modelo_multiple_2)
##
## Call:
## lm(formula = IPIR_V_obj ~ CEM_V + ENER_V + ISE + MES, data = base_modelos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -57.061 -2.650 -0.029 3.072 14.389
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.188e+01 1.368e+01 3.062 0.002611 **
## CEM_V 2.489e-04 7.477e-05 3.329 0.001099 **
## ENER_V -1.282e-01 7.099e-02 -1.806 0.072967 .
## ISE 4.896e-01 6.056e-02 8.085 1.98e-13 ***
## MESFeb 1.715e+01 2.890e+00 5.935 1.98e-08 ***
## MESMar 1.809e+01 2.818e+00 6.418 1.73e-09 ***
## MESApr 1.019e+01 2.848e+00 3.578 0.000468 ***
## MESMay 1.008e+01 2.787e+00 3.615 0.000410 ***
## MESJun 1.574e+01 2.773e+00 5.678 6.93e-08 ***
## MESJul 2.035e+01 2.764e+00 7.364 1.12e-11 ***
## MESAug 2.115e+01 2.845e+00 7.434 7.66e-12 ***
## MESSep 2.234e+01 2.897e+00 7.711 1.64e-12 ***
## MESOct 2.208e+01 2.890e+00 7.640 2.44e-12 ***
## MESNov 1.667e+01 2.871e+00 5.806 3.73e-08 ***
## MESDec 1.091e+01 2.715e+00 4.019 9.23e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.669 on 149 degrees of freedom
## Multiple R-squared: 0.6853, Adjusted R-squared: 0.6558
## F-statistic: 23.18 on 14 and 149 DF, p-value: < 2.2e-16
Comparación inicial de los modelos
# Comparación de los modelos múltiples
comparacion_modelos <- data.frame(
Modelo = c(
"Modelo múltiple 1",
"Modelo múltiple 2"
),
R2 = c(
summary(modelo_multiple_1)$r.squared,
summary(modelo_multiple_2)$r.squared
),
R2_ajustado = c(
summary(modelo_multiple_1)$adj.r.squared,
summary(modelo_multiple_2)$adj.r.squared
),
AIC = c(
AIC(modelo_multiple_1),
AIC(modelo_multiple_2)
)
)
kable(
comparacion_modelos,
digits = 4,
caption = "Comparación de los modelos de regresión múltiple"
)
| Modelo | R2 | R2_ajustado | AIC |
|---|---|---|---|
| Modelo múltiple 1 | 0.4432 | 0.4328 | 1175.624 |
| Modelo múltiple 2 | 0.6853 | 0.6558 | 1104.047 |
Comparación de los modelos de regresión lineal múltiple
La comparación de los dos modelos de regresión lineal múltiple
permite evaluar la contribución de la variable categórica mensual a la
explicación del comportamiento de la producción industrial del Valle del
Cauca. El primer modelo, que incorpora los despachos de cemento
(CEM_V), el consumo de energía (ENER_V) y el
Índice de Seguimiento a la Economía (ISE), presenta un
coeficiente de determinación (R²) de 0,4432 y un R² ajustado de 0,4328.
Estos resultados indican que los tres indicadores económicos explican
conjuntamente el 44,32 % de la variabilidad de la producción industrial
del periodo siguiente.
Por su parte, el segundo modelo incorpora adicionalmente la variable
categórica mensual (MES), con enero como categoría de
referencia. Esta especificación alcanza un R² de 0,6853 y un R² ajustado
de 0,6558, lo que representa un incremento importante en la capacidad
explicativa respecto al primer modelo. En términos generales, estos
resultados sugieren que existen diferencias sistemáticas asociadas al
mes del año que contribuyen a explicar el comportamiento de la
producción industrial.
Adicionalmente, el criterio de información de Akaike (AIC) disminuye de 1175,624 en el primer modelo a 1104,047 en el segundo. Esta reducción indica que la incorporación de la variable mensual mejora el equilibrio entre ajuste estadístico y complejidad del modelo.
En consecuencia, los resultados preliminares favorecen la segunda especificación, debido a su mayor R² ajustado y menor AIC. No obstante, esta comparación debe complementarse con el análisis de significancia individual y global, así como con la evaluación de los supuestos del modelo y su desempeño predictivo fuera de la muestra de estimación.
Análisis de significancia estadística
# Resultados completos del modelo múltiple 1
summary(modelo_multiple_1)
##
## Call:
## lm(formula = IPIR_V_obj ~ CEM_V + ENER_V + ISE, data = base_modelos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -62.011 -4.358 1.012 5.134 23.971
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.067e+01 1.537e+01 3.947 0.000118 ***
## CEM_V 4.323e-04 8.745e-05 4.943 1.92e-06 ***
## ENER_V -1.020e-01 8.002e-02 -1.275 0.204074
## ISE 2.574e-01 6.969e-02 3.694 0.000303 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.56 on 160 degrees of freedom
## Multiple R-squared: 0.4432, Adjusted R-squared: 0.4328
## F-statistic: 42.46 on 3 and 160 DF, p-value: < 2.2e-16
# Resultados completos del modelo múltiple 2
summary(modelo_multiple_2)
##
## Call:
## lm(formula = IPIR_V_obj ~ CEM_V + ENER_V + ISE + MES, data = base_modelos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -57.061 -2.650 -0.029 3.072 14.389
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.188e+01 1.368e+01 3.062 0.002611 **
## CEM_V 2.489e-04 7.477e-05 3.329 0.001099 **
## ENER_V -1.282e-01 7.099e-02 -1.806 0.072967 .
## ISE 4.896e-01 6.056e-02 8.085 1.98e-13 ***
## MESFeb 1.715e+01 2.890e+00 5.935 1.98e-08 ***
## MESMar 1.809e+01 2.818e+00 6.418 1.73e-09 ***
## MESApr 1.019e+01 2.848e+00 3.578 0.000468 ***
## MESMay 1.008e+01 2.787e+00 3.615 0.000410 ***
## MESJun 1.574e+01 2.773e+00 5.678 6.93e-08 ***
## MESJul 2.035e+01 2.764e+00 7.364 1.12e-11 ***
## MESAug 2.115e+01 2.845e+00 7.434 7.66e-12 ***
## MESSep 2.234e+01 2.897e+00 7.711 1.64e-12 ***
## MESOct 2.208e+01 2.890e+00 7.640 2.44e-12 ***
## MESNov 1.667e+01 2.871e+00 5.806 3.73e-08 ***
## MESDec 1.091e+01 2.715e+00 4.019 9.23e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.669 on 149 degrees of freedom
## Multiple R-squared: 0.6853, Adjusted R-squared: 0.6558
## F-statistic: 23.18 on 14 and 149 DF, p-value: < 2.2e-16
Análisis de significancia estadística de los modelos múltiples
El análisis de los resultados de las regresiones múltiples permite identificar la contribución individual de los indicadores económicos y de la variable categórica mensual a la explicación de la producción industrial del Valle del Cauca del periodo siguiente.
En el primer modelo, que incorpora los despachos de cemento
(CEM_V), el consumo de energía (ENER_V) y el
Índice de Seguimiento a la Economía (ISE), se observa que
los coeficientes de los despachos de cemento y del ISE son positivos y
estadísticamente significativos, con valores p de 0,000192 y 0,000303,
respectivamente. Por su parte, el consumo de energía presenta un
coeficiente negativo de -0,1020, pero no resulta estadísticamente
significativo, dado que su valor p es de 0,204074. Esto indica que, al
controlar simultáneamente los otros indicadores, no existe evidencia
estadística suficiente para establecer una asociación lineal parcial
entre el consumo energético y la producción industrial del periodo
siguiente. A pesar de ello, la prueba F evidencia que el modelo es
globalmente significativo, con un valor p inferior a 2,2 × 10⁻¹⁶.
En el segundo modelo se incorpora la variable categórica mensual, tomando enero como categoría de referencia. Los resultados muestran que los despachos de cemento y el ISE conservan sus asociaciones positivas y significativas, con coeficientes de 0,0002489 y 0,4896, respectivamente. El consumo de energía mantiene un coeficiente negativo de -0,1282, pero su valor p de 0,071 indica que no alcanza significancia estadística al 5 %.
En cuanto a la variable mensual, las once categorías presentan coeficientes positivos y estadísticamente significativos respecto a enero. Las diferencias estimadas oscilan entre 10,08 puntos para mayo y 22,34 puntos para septiembre. Este resultado evidencia la existencia de diferencias sistemáticas entre los meses del año, una vez controlados los indicadores económicos incluidos en el modelo. Por consiguiente, la incorporación de esta variable permite capturar patrones temporales que no quedan completamente explicados por los predictores cuantitativos.
Finalmente, el segundo modelo también resulta globalmente significativo, con un estadístico F de 23,18 y un valor p inferior a 2,2 × 10⁻¹⁶. En conjunto, los resultados respaldan la inclusión de la variable mensual como un elemento relevante para explicar la variabilidad de la producción industrial. No obstante, la significancia estadística de los coeficientes no implica por sí misma causalidad ni garantiza una mayor capacidad predictiva fuera de la muestra de estimación.
selección del modelo mediante AIC
# Selección paso a paso mediante AIC
modelo_step <- step(
modelo_multiple_2,
direction = "both",
trace = 1
)
## Start: AIC=636.64
## IPIR_V_obj ~ CEM_V + ENER_V + ISE + MES
##
## Df Sum of Sq RSS AIC
## <none> 6626.7 636.64
## - ENER_V 1 145.0 6771.7 638.19
## - CEM_V 1 492.8 7119.5 646.40
## - ISE 1 2907.2 9533.9 694.29
## - MES 11 5098.0 11724.7 708.21
# Mostrar modelo seleccionado
summary(modelo_step)
##
## Call:
## lm(formula = IPIR_V_obj ~ CEM_V + ENER_V + ISE + MES, data = base_modelos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -57.061 -2.650 -0.029 3.072 14.389
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.188e+01 1.368e+01 3.062 0.002611 **
## CEM_V 2.489e-04 7.477e-05 3.329 0.001099 **
## ENER_V -1.282e-01 7.099e-02 -1.806 0.072967 .
## ISE 4.896e-01 6.056e-02 8.085 1.98e-13 ***
## MESFeb 1.715e+01 2.890e+00 5.935 1.98e-08 ***
## MESMar 1.809e+01 2.818e+00 6.418 1.73e-09 ***
## MESApr 1.019e+01 2.848e+00 3.578 0.000468 ***
## MESMay 1.008e+01 2.787e+00 3.615 0.000410 ***
## MESJun 1.574e+01 2.773e+00 5.678 6.93e-08 ***
## MESJul 2.035e+01 2.764e+00 7.364 1.12e-11 ***
## MESAug 2.115e+01 2.845e+00 7.434 7.66e-12 ***
## MESSep 2.234e+01 2.897e+00 7.711 1.64e-12 ***
## MESOct 2.208e+01 2.890e+00 7.640 2.44e-12 ***
## MESNov 1.667e+01 2.871e+00 5.806 3.73e-08 ***
## MESDec 1.091e+01 2.715e+00 4.019 9.23e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.669 on 149 degrees of freedom
## Multiple R-squared: 0.6853, Adjusted R-squared: 0.6558
## F-statistic: 23.18 on 14 and 149 DF, p-value: < 2.2e-16
# Consultar AIC del modelo seleccionado
AIC(modelo_step)
## [1] 1104.047
# Evaluacion de multicolinealidad mediante VIF
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Cargando paquete requerido: carData
## Warning: package 'carData' was built under R version 4.5.3
##
## Adjuntando el paquete: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
## The following object is masked from 'package:purrr':
##
## some
vif(modelo_multiple_2)
## GVIF Df GVIF^(1/(2*Df))
## CEM_V 3.984033 1 1.996004
## ENER_V 3.091365 1 1.758228
## ISE 2.093015 1 1.446726
## MES 1.970464 11 1.031311
# Comparar AIC de los modelos múltiples
AIC(modelo_multiple_1, modelo_multiple_2)
## df AIC
## modelo_multiple_1 5 1175.625
## modelo_multiple_2 16 1104.047
La comparación de los modelos de regresión múltiple mediante el criterio de información (AIC) permite identificar cuál presenta un mejor equilibrio entre capacidad de ajuste y complejidad. Los resultados muestran que el primer modelo obtiene un AIC de 1175,625, mientras que el segundo registra un valor de 1104,047.
La diferencia de 71,578 puntos evidencia una ventaja considerable del segundo modelo, que incorpora los tres indicadores económicos y la variable categórica mensual. Esto sugiere que la inclusión de información asociada al mes del año mejora el ajuste estadístico lo suficiente para compensar la incorporación de parámetros adicionales.
En consecuencia, de acuerdo con el criterio AIC, el modelo múltiple 2 constituye la especificación preferible entre las dos alternativas evaluadas. Sin embargo, esta selección se limita al ajuste dentro de la muestra y debe complementarse con el análisis de los residuos y la evaluación del desempeño predictivo mediante validación temporal.
Gráficos de diagnóstico
# Diagnóstico gráfico del modelo múltiple 2
par(mfrow = c(2, 2))
plot(modelo_multiple_2)
par(mfrow = c(1, 1))
Diagnóstico gráfico de los residuos del modelo múltiple 2
El diagnóstico gráfico del segundo modelo de regresión múltiple permite identificar algunos aspectos relacionados con el comportamiento de los residuos y el cumplimiento de los supuestos del modelo lineal.
En primer lugar, el gráfico de residuos frente a valores ajustados muestra que la mayoría de las observaciones se concentra alrededor de cero. Sin embargo, se identifica una observación con un residuo considerablemente negativo, correspondiente al registro 109, lo que evidencia una diferencia importante entre el valor observado y el estimado por el modelo.
En segundo lugar, el gráfico Q-Q presenta desviaciones respecto a la línea de referencia, especialmente en la cola inferior de la distribución. Este comportamiento sugiere posibles problemas de normalidad en los residuos, asociados principalmente a la presencia de observaciones extremas.
Por su parte, el gráfico Scale-Location muestra una dispersión relativamente concentrada para la mayoría de los registros, aunque se identifican algunas observaciones con valores elevados. Si bien no se evidencia un patrón creciente pronunciado, no es posible confirmar visualmente el cumplimiento del supuesto de homocedasticidad.
Finalmente, el gráfico de residuos frente a leverage permite identificar observaciones que podrían tener una influencia importante en la estimación del modelo. En particular, los registros 109 y 110 presentan características que justifican una revisión individual, debido a su comportamiento residual y a su posición dentro del espacio de predictores, respectivamente.
En términos generales, los gráficos sugieren que el modelo presenta algunas desviaciones respecto a los supuestos clásicos de regresión lineal, especialmente en lo relacionado con la normalidad de los residuos y la posible presencia de observaciones influyentes. Por esta razón, es necesario complementar el diagnóstico visual con pruebas estadísticas y medidas de influencia antes de establecer conclusiones definitivas sobre la validez de la especificación.
Pruebas estadísticas complementarias
# Prueba de Shapiro-Wilk
shapiro.test(residuals(modelo_multiple_2))
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo_multiple_2)
## W = 0.71987, p-value = 2.527e-16
# Instalar si es necesario
# install.packages("lmtest")
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.5.3
## Cargando paquete requerido: zoo
## Warning: package 'zoo' was built under R version 4.5.3
##
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
# Prueba de Breusch-Pagan
bptest(modelo_multiple_2)
##
## studentized Breusch-Pagan test
##
## data: modelo_multiple_2
## BP = 12.873, df = 14, p-value = 0.5365
# Prueba de Durbin-Watson
dwtest(modelo_multiple_2)
##
## Durbin-Watson test
##
## data: modelo_multiple_2
## DW = 1.8008, p-value = 0.09172
## alternative hypothesis: true autocorrelation is greater than 0
Resultados de las pruebas estadísticas de diagnóstico
Las pruebas estadísticas aplicadas a los residuos del segundo modelo de regresión múltiple permiten complementar el diagnóstico gráfico y evaluar algunos de los supuestos de la regresión lineal.
En primer lugar, la prueba de Shapiro-Wilk arroja un estadístico W de 0,71987 y un valor p de 2,527 × 10⁻¹⁶. Dado que este resultado es inferior al nivel de significancia del 5 %, se rechaza la hipótesis nula de normalidad. Por consiguiente, existe evidencia estadística de que los residuos no siguen una distribución normal, resultado que coincide con las desviaciones identificadas en el gráfico Q-Q y la presencia de observaciones extremas.
En segundo lugar, la prueba de Breusch-Pagan presenta un estadístico de 12,873 y un valor p de 0,5365. Al ser superior al nivel de significancia establecido, no se rechaza la hipótesis nula de homocedasticidad. Por tanto, no se encuentra evidencia estadística suficiente para afirmar que la varianza de los errores sea diferente entre las observaciones.
Finalmente, la prueba de Durbin-Watson registra un estadístico de 1,8008 y un valor p de 0,09172, bajo la alternativa de autocorrelación positiva. Este resultado no permite rechazar la hipótesis nula al 5 %, aunque sí proporciona evidencia débil de autocorrelación positiva al considerar un nivel de significancia del 10 %.
En conjunto, los resultados indican que el modelo presenta principalmente dificultades relacionadas con la normalidad de los residuos, mientras que las pruebas de heterocedasticidad y autocorrelación no muestran evidencia suficiente de incumplimiento al nivel convencional del 5 %. Estas limitaciones deben considerarse al interpretar la inferencia estadística del modelo, sin asumir que necesariamente invalidan su capacidad predictiva.
Identificación de observaciones influyentes
# Calcular distancias de Cook
distancia_cook <- cooks.distance(
modelo_multiple_2
)
# Establecer umbral de referencia
umbral_cook <- 4 / nobs(modelo_multiple_2)
# Identificar observaciones que superan el umbral
observaciones_influyentes <- which(
distancia_cook > umbral_cook
)
# Mostrar observaciones identificadas
observaciones_influyentes
## 97 109 110 119
## 97 109 110 119
# Mostrar sus distancias de Cook
distancia_cook[observaciones_influyentes]
## 97 109 110 119
## 0.04702841 0.41741208 0.19602414 0.03026601
# Mostrar el umbral utilizado
umbral_cook
## [1] 0.02439024
La evaluación de las observaciones potencialmente influyentes se realizó mediante la distancia de Cook, utilizando como criterio de referencia el umbral de 4/n, donde n corresponde al número de observaciones del modelo. Para las 164 observaciones analizadas, se obtuvo un umbral de 0,02439.
Los resultados permitieron identificar cuatro observaciones que superan este valor: los registros 97, 109, 110 y 119, cuyas distancias de Cook son 0,04703, 0,41741, 0,19602 y 0,03027, respectivamente. Entre ellas, la observación 109 presenta la mayor distancia, seguida de la observación 110, lo que indica que ambas podrían ejercer una influencia importante sobre los coeficientes estimados.
Estos resultados son consistentes con el diagnóstico gráfico de residuos, en el cual se habían identificado observaciones con valores extremos y niveles de leverage relativamente elevados. En particular, la observación 109 también presenta un residuo considerablemente negativo.
En consecuencia, se considera necesario revisar individualmente los registros identificados para determinar si corresponden a errores de información o a fluctuaciones reales de la actividad económica. No se procederá a eliminarlos automáticamente, dado que su exclusión podría alterar la representatividad de la muestra y modificar las conclusiones del análisis.
observaciones identificadas
# Revisar observaciones potencialmente influyentes
base_modelos %>%
mutate(
Distancia_Cook = distancia_cook
) %>%
slice(c(97, 109, 110, 119)) %>%
select(
FECHA,
FECHA_objetivo,
IPIR_V_obj,
CEM_V,
ENER_V,
ISE,
MES,
Distancia_Cook
) %>%
kable(
digits = 4,
caption = "Observaciones potencialmente influyentes"
)
| FECHA | FECHA_objetivo | IPIR_V_obj | CEM_V | ENER_V | ISE | MES | Distancia_Cook |
|---|---|---|---|---|---|---|---|
| 2020-04-01 | 2020-05-01 | 85.1076 | 21510.91 | 175.9330 | 83.1110 | May | 0.0470 |
| 2021-04-01 | 2021-05-01 | 37.7873 | 80196.45 | 219.3673 | 104.2704 | May | 0.4174 |
| 2021-05-01 | 2021-06-01 | 100.5571 | 11484.85 | 149.2307 | 101.6831 | Jun | 0.1960 |
| 2022-02-01 | 2022-03-01 | 122.5829 | 96066.29 | 235.3400 | 111.2795 | Mar | 0.0303 |
La identificación de observaciones influyentes mediante la distancia de Cook permitió detectar cuatro registros que superan el umbral de referencia de 0,02439. Estos corresponden a los periodos objetivo de mayo de 2020, mayo de 2021, junio de 2021 y marzo de 2022.
Entre ellos, destaca la observación correspondiente a mayo de 2021, que presenta una distancia de Cook de 0,4174 y un valor de producción industrial de 37,7873, considerablemente inferior al comportamiento general de la serie. Asimismo, la observación de junio de 2021 registra una distancia de 0,1960, asociada con valores particularmente bajos de despachos de cemento y consumo de energía.
Por otra parte, las observaciones correspondientes a mayo de 2020 y marzo de 2022 presentan distancias de Cook de 0,0470 y 0,0303, respectivamente. Aunque su influencia es menor, también superan el umbral establecido y podrían modificar parcialmente las estimaciones del modelo.
En conjunto, los resultados muestran que determinadas observaciones asociadas con fluctuaciones importantes de la actividad económica tienen una influencia considerable sobre la estimación de los coeficientes. Sin embargo, no se dispone de evidencia suficiente para clasificarlas como errores de registro. Por esta razón, se conservarán en la muestra principal y se tendrán en cuenta como una limitación del modelo, evitando eliminar información que podría representar variaciones económicas reales.
Validación temporal de los modelos de regresión múltiple
# VALIDACION TEMPORAL DE LOS MODELOS MULTIPLES
# Definir parametros
n_inicial <- 104
horizonte <- 12
n_particiones <- 5
# Crear lista de resultados
resultados_multiples <- list()
# Ejecutar validacion temporal
for (i in 1:n_particiones) {
# Definir entrenamiento y prueba
fin_entrenamiento <- n_inicial + (i - 1) * horizonte
inicio_prueba <- fin_entrenamiento + 1
fin_prueba <- fin_entrenamiento + horizonte
entrenamiento <- base_modelos[1:fin_entrenamiento, ]
prueba <- base_modelos[inicio_prueba:fin_prueba, ]
# Modelo multiple 1
modelo1 <- lm(
IPIR_V_obj ~ CEM_V + ENER_V + ISE,
data = entrenamiento
)
pred1 <- predict(modelo1, newdata = prueba)
# Modelo multiple 2
modelo2 <- lm(
IPIR_V_obj ~ CEM_V + ENER_V + ISE + MES,
data = entrenamiento
)
pred2 <- predict(modelo2, newdata = prueba)
# Modelo de referencia: mediana
pred_mediana <- median(
entrenamiento$IPIR_V_obj
)
# Guardar resultados
resultados_multiples[[i]] <- data.frame(
Particion = i,
Real = prueba$IPIR_V_obj,
Pred_Multiple_1 = as.numeric(pred1),
Pred_Multiple_2 = as.numeric(pred2),
Pred_Mediana = pred_mediana
)
}
# Unificar resultados
resultados_multiples <- bind_rows(
resultados_multiples
)
# Verificar observaciones evaluadas
nrow(resultados_multiples)
## [1] 60
# Visualizar primeras observaciones
head(resultados_multiples)
## Particion Real Pred_Multiple_1 Pred_Multiple_2 Pred_Mediana
## 1 1 95.76380 96.17032 90.32750 97.64498
## 2 1 102.15021 99.54922 98.62898 97.64498
## 3 1 107.37552 99.17328 100.90312 97.64498
## 4 1 98.54686 101.65118 96.64273 97.64498
## 5 1 37.78728 96.49333 96.99860 97.64498
## 6 1 100.55712 66.64817 97.17640 97.64498
Calcular el MAE de los modelos múltiples
# Calcular MAE de los modelos multiples
comparacion_mae_multiple <- data.frame(
Modelo = c(
"Modelo multiple 1",
"Modelo multiple 2",
"Modelo de referencia: Mediana"
),
MAE = c(
mean(abs(
resultados_multiples$Real -
resultados_multiples$Pred_Multiple_1
)),
mean(abs(
resultados_multiples$Real -
resultados_multiples$Pred_Multiple_2
)),
mean(abs(
resultados_multiples$Real -
resultados_multiples$Pred_Mediana
))
)
)
# Ordenar de menor a mayor MAE
comparacion_mae_multiple <- comparacion_mae_multiple %>%
arrange(MAE)
# Mostrar resultados
knitr::kable(
comparacion_mae_multiple,
digits = 4,
caption = "Comparacion del desempeno predictivo de los modelos multiples"
)
| Modelo | MAE |
|---|---|
| Modelo multiple 2 | 7.1264 |
| Modelo multiple 1 | 8.5918 |
| Modelo de referencia: Mediana | 12.8493 |
La evaluación mediante validación temporal permitió comparar el desempeño predictivo de los modelos de regresión simple y múltiple, utilizando cinco particiones de entrenamiento y evaluación, con un total de 60 observaciones destinadas a la validación.
Los resultados muestran que el modelo múltiple 2, que incorpora los
despachos de cemento (CEM_V), el consumo de energía
(ENER_V), el Índice de Seguimiento a la Economía
(ISE) y la variable categórica mensual (MES),
presenta el menor error absoluto medio, con un MAE de 7,1264. Esto
significa que sus predicciones se alejan, en promedio, aproximadamente
7,13 puntos de los valores reales de producción industrial.
Por su parte, el modelo múltiple 1, que incluye únicamente los tres indicadores económicos, registra un MAE de 8,5918. Aunque presenta un desempeño favorable, su error es superior al del segundo modelo, lo que sugiere que incorporar información sobre el mes del año contribuye a mejorar la precisión de las predicciones.
Al comparar los resultados con los modelos simples, se observa que el modelo basado exclusivamente en el ISE presenta un MAE de 8,7526, mientras que el modelo múltiple 2 consigue reducir este error aproximadamente un 18,58 %. Asimismo, frente al modelo de referencia basado en la mediana, cuyo MAE es de 12,8493, la segunda especificación múltiple logra una reducción del error cercana al 44,54 %.
En consecuencia, la validación temporal proporciona evidencia favorable a la segunda especificación múltiple, dado que presenta el menor error de predicción entre todas las alternativas evaluadas. Estos resultados sugieren que la combinación de indicadores económicos y el control de las diferencias mensuales permite representar de manera más precisa el comportamiento de la producción industrial del Valle del Cauca.
Por tanto, el modelo múltiple 2 se identifica como la mejor alternativa predictiva entre las especificaciones analizadas, aunque sus resultados deben interpretarse considerando las limitaciones identificadas en el diagnóstico de residuos, particularmente la falta de normalidad y la posible presencia de observaciones influyentes.
Visualización comparativa de los resultados
# Unificar resultados de modelos simples y multiples
comparacion_final <- bind_rows(
comparacion_mae,
comparacion_mae_multiple
) %>%
distinct(Modelo, .keep_all = TRUE) %>%
arrange(MAE)
# Mostrar tabla consolidada
kable(
comparacion_final,
digits = 4,
caption = "Comparacion general del desempeno predictivo"
)
| Modelo | MAE |
|---|---|
| Modelo multiple 2 | 7.1264 |
| Modelo multiple 1 | 8.5918 |
| Regresion simple: ISE | 8.7526 |
| Regresion simple: CEM_V | 9.5151 |
| Regresion simple: ENER_V | 11.9962 |
| Modelo de referencia: Mediana | 12.8493 |
ggplot(
comparacion_final,
aes(
x = reorder(Modelo, MAE),
y = MAE
)
) +
geom_col(fill = "steelblue", width = 0.7) +
geom_text(
aes(label = round(MAE, 4)),
hjust = -0.2,
size = 3.5
) +
coord_flip() +
labs(
title = "Comparación del desempeño predictivo",
subtitle = "Validación temporal mediante MAE",
x = "Modelo",
y = "Error absoluto medio (MAE)"
) +
expand_limits(y = max(comparacion_final$MAE) * 1.12) +
theme_minimal()
Análisis gráfico del desempeño predictivo
El gráfico comparativo del error absoluto medio (MAE) permite
visualizar las diferencias en el desempeño predictivo de los modelos
estimados. Se observa que el modelo de referencia basado en la mediana
presenta el mayor error, seguido de la regresión simple con consumo de
energía (ENER_V) y la regresión simple con despachos de
cemento (CEM_V).
Por su parte, el modelo simple basado en el ISE y el modelo múltiple 1 presentan errores inferiores, aunque todavía superiores al registrado por el modelo múltiple 2. Este último obtiene el menor MAE, con un valor de 7,1264, lo que evidencia una mayor precisión promedio en sus predicciones.
En consecuencia, la representación gráfica respalda los resultados de la validación temporal y permite identificar al modelo múltiple 2, que incorpora los indicadores económicos y la variable categórica mensual, como la mejor alternativa predictiva entre las especificaciones evaluadas.
Estimación del modelo logarítmico
# Verificar valores positivos
min(base_modelos$IPIR_V_obj, na.rm = TRUE)
## [1] 37.78728
# Estimar modelo logaritmico
modelo_log <- lm(
log(IPIR_V_obj) ~ CEM_V + ENER_V + ISE + MES,
data = base_modelos
)
# Resultados del modelo
summary(modelo_log)
##
## Call:
## lm(formula = log(IPIR_V_obj) ~ CEM_V + ENER_V + ISE + MES, data = base_modelos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.89068 -0.02698 0.00111 0.03226 0.13424
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.012e+00 1.801e-01 22.275 < 2e-16 ***
## CEM_V 2.349e-06 9.844e-07 2.386 0.01828 *
## ENER_V -1.166e-03 9.347e-04 -1.248 0.21410
## ISE 4.825e-03 7.973e-04 6.052 1.11e-08 ***
## MESFeb 1.717e-01 3.805e-02 4.513 1.29e-05 ***
## MESMar 1.815e-01 3.710e-02 4.891 2.57e-06 ***
## MESApr 9.926e-02 3.750e-02 2.647 0.00899 **
## MESMay 7.515e-02 3.670e-02 2.048 0.04233 *
## MESJun 1.592e-01 3.650e-02 4.362 2.39e-05 ***
## MESJul 2.042e-01 3.639e-02 5.613 9.43e-08 ***
## MESAug 2.110e-01 3.746e-02 5.633 8.59e-08 ***
## MESSep 2.221e-01 3.815e-02 5.822 3.45e-08 ***
## MESOct 2.192e-01 3.804e-02 5.760 4.65e-08 ***
## MESNov 1.665e-01 3.779e-02 4.405 2.01e-05 ***
## MESDec 1.113e-01 3.575e-02 3.114 0.00221 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.0878 on 149 degrees of freedom
## Multiple R-squared: 0.5618, Adjusted R-squared: 0.5206
## F-statistic: 13.64 on 14 and 149 DF, p-value: < 2.2e-16
# VALIDACION TEMPORAL DEL MODELO LOGARITMICO
resultados_log <- list()
for (i in 1:n_particiones) {
fin_entrenamiento <- n_inicial +
(i - 1) * horizonte
inicio_prueba <- fin_entrenamiento + 1
fin_prueba <- fin_entrenamiento + horizonte
entrenamiento <- base_modelos[1:fin_entrenamiento, ]
prueba <- base_modelos[inicio_prueba:fin_prueba, ]
# Modelo original
modelo_original <- lm(
IPIR_V_obj ~ CEM_V + ENER_V + ISE + MES,
data = entrenamiento
)
pred_original <- predict(
modelo_original,
newdata = prueba
)
# Modelo logaritmico
modelo_log_cv <- lm(
log(IPIR_V_obj) ~ CEM_V + ENER_V + ISE + MES,
data = entrenamiento
)
pred_log <- predict(
modelo_log_cv,
newdata = prueba
)
# Correccion de retransmision de Duan
factor_duan <- mean(
exp(residuals(modelo_log_cv))
)
# Regresar a escala original
pred_log_original <- exp(pred_log) * factor_duan
resultados_log[[i]] <- data.frame(
Particion = i,
Real = prueba$IPIR_V_obj,
Pred_Original = as.numeric(pred_original),
Pred_Log = as.numeric(pred_log_original)
)
}
# Unificar resultados
resultados_log <- bind_rows(resultados_log)
# Comparar MAE
comparacion_transformaciones <- data.frame(
Modelo = c(
"Modelo original",
"Modelo logaritmico"
),
MAE = c(
mean(abs(resultados_log$Real -
resultados_log$Pred_Original)),
mean(abs(resultados_log$Real -
resultados_log$Pred_Log))
)
)
kable(
comparacion_transformaciones,
digits = 4,
caption = "Comparacion del MAE de las transformaciones"
)
| Modelo | MAE |
|---|---|
| Modelo original | 7.1264 |
| Modelo logaritmico | 7.5542 |
Comparación del modelo original y el modelo logarítmico
La evaluación de la transformación logarítmica se realizó mediante validación temporal, utilizando las mismas particiones de entrenamiento y evaluación del modelo original. Para garantizar la comparabilidad, las predicciones del modelo transformado fueron expresadas nuevamente en las unidades originales de la producción industrial mediante un factor de corrección de retransfomación.
Los resultados muestran que el modelo original presenta un MAE de 7,1264, mientras que el modelo logarítmico registra un valor de 7,5542. Esto representa un incremento aproximado del 6 % en el error de predicción después de aplicar la transformación.
En consecuencia, la transformación logarítmica no proporciona una mejora en la capacidad predictiva del modelo. Por esta razón, se considera más conveniente conservar la especificación original, que presenta un menor error absoluto medio y una mayor precisión en la predicción de la producción industrial del periodo siguiente.
Este resultado muestra que una transformación de las variables no garantiza necesariamente un mejor desempeño predictivo. La selección debe fundamentarse en la evaluación empírica y en la coherencia de los resultados obtenidos.
Selección definitiva del modelo
# Identificar los modelos existentes
ls(pattern = "^modelo")
## [1] "modelo_log" "modelo_log_cv" "modelo_multiple_1"
## [4] "modelo_multiple_2" "modelo_original" "modelo_simple_1"
## [7] "modelo_simple_2" "modelo_simple_3" "modelo_step"
## [10] "modelo1" "modelo2" "modelo3"
# Identificar las formulas de los modelos simples
formula(modelo1)
## IPIR_V_obj ~ CEM_V + ENER_V + ISE
formula(modelo2)
## IPIR_V_obj ~ CEM_V + ENER_V + ISE + MES
formula(modelo3)
## IPIR_V_obj ~ ISE
# Seleccion definitiva del modelo
seleccion_final <- data.frame(
Modelo = c(
"Regresion simple: CEM_V",
"Regresion simple: ENER_V",
"Regresion simple: ISE",
"Modelo multiple 1",
"Modelo multiple 2",
"Modelo multiple 2 logaritmico"
),
R2_ajustado = c(
NA,
NA,
summary(modelo3)$adj.r.squared,
summary(modelo_multiple_1)$adj.r.squared,
summary(modelo_multiple_2)$adj.r.squared,
summary(modelo_log)$adj.r.squared
),
MAE = c(
9.5151,
11.9962,
8.7526,
8.5918,
7.1264,
7.5542
)
)
# Ordenar por desempeno predictivo
seleccion_final <- seleccion_final %>%
arrange(MAE)
# Presentar resultados
kable(
seleccion_final,
digits = 4,
caption = "Seleccion definitiva del modelo predictivo"
)
| Modelo | R2_ajustado | MAE |
|---|---|---|
| Modelo multiple 2 | 0.6558 | 7.1264 |
| Modelo multiple 2 logaritmico | 0.5206 | 7.5542 |
| Modelo multiple 1 | 0.4328 | 8.5918 |
| Regresion simple: ISE | 0.3194 | 8.7526 |
| Regresion simple: CEM_V | NA | 9.5151 |
| Regresion simple: ENER_V | NA | 11.9962 |
Selección definitiva del modelo predictivo
La comparación de las especificaciones estimadas permite identificar diferencias en su capacidad explicativa y predictiva. Los resultados muestran que el modelo múltiple 2 presenta el mayor coeficiente de determinación ajustado, con un valor de 0,6558, lo que indica que explica aproximadamente el 65,58 % de la variabilidad de la producción industrial, considerando el número de predictores incluidos.
Asimismo, registra el menor error absoluto medio (MAE), con un valor de 7,1264, superando tanto al modelo múltiple 1 como a las regresiones simples y al modelo con transformación logarítmica.
Por su parte, el modelo múltiple 1 obtiene un R² ajustado de 0,4328 y un MAE de 8,5918, mientras que el modelo logarítmico presenta un R² ajustado de 0,5206 y un MAE de 7,5542. Aunque este último mejora el ajuste respecto al modelo múltiple 1, no supera la precisión predictiva del modelo múltiple 2.
En consecuencia, se selecciona el modelo múltiple 2 como la especificación más adecuada entre las alternativas evaluadas. Esta elección se fundamenta en su mayor capacidad explicativa y su menor error de predicción durante la validación temporal.
Escenarios hipotéticos
# Rangos de las variables explicativas
summary(
base_modelos %>%
select(CEM_V, ENER_V, ISE)
)
## CEM_V ENER_V ISE
## Min. : 11485 Min. :149.2 Min. : 81.68
## 1st Qu.: 78089 1st Qu.:223.6 1st Qu.: 98.49
## Median : 85090 Median :230.2 Median :104.89
## Mean : 85070 Mean :229.4 Mean :107.07
## 3rd Qu.: 93758 3rd Qu.:236.4 3rd Qu.:118.56
## Max. :119923 Max. :259.4 Max. :138.81
# Distribucion de los meses
table(base_modelos$MES)
##
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 12 13 14 14 14 14 14 14 14 13 14 14
Construcción de escenarios hipotéticos
Con el propósito de evaluar la aplicación práctica del modelo seleccionado, se construyen dos escenarios hipotéticos para estimar el comportamiento de la producción industrial del Valle del Cauca. Los escenarios se definen a partir de los cuartiles de las variables explicativas observadas en la base de datos, utilizando el primer cuartil para representar condiciones de actividad económica relativamente bajas y el tercer cuartil para representar condiciones relativamente altas.
Para facilitar la comparación, ambos escenarios mantienen constante el mes de junio, de manera que las diferencias en las predicciones estén asociadas principalmente con los valores de los indicadores económicos. Para cada escenario se calculará la producción industrial estimada y su correspondiente intervalo de predicción del 95 %.
Construcción de los escenarios en R
# Construccion de escenarios hipoteticos
# Obtener primer y tercer cuartil
q1_cem <- quantile(base_modelos$CEM_V, 0.25)
q3_cem <- quantile(base_modelos$CEM_V, 0.75)
q1_ener <- quantile(base_modelos$ENER_V, 0.25)
q3_ener <- quantile(base_modelos$ENER_V, 0.75)
q1_ise <- quantile(base_modelos$ISE, 0.25)
q3_ise <- quantile(base_modelos$ISE, 0.75)
# Crear escenarios
escenarios <- data.frame(
CEM_V = c(
as.numeric(q1_cem),
as.numeric(q3_cem)
),
ENER_V = c(
as.numeric(q1_ener),
as.numeric(q3_ener)
),
ISE = c(
as.numeric(q1_ise),
as.numeric(q3_ise)
),
MES = factor(
c("Jun", "Jun"),
levels = levels(base_modelos$MES)
)
)
# Identificar escenarios
escenarios$Escenario <- c(
"Actividad moderada-baja",
"Actividad moderada-alta"
)
# Mostrar escenarios
kable(
escenarios,
digits = 2,
caption = "Valores de los escenarios hipoteticos"
)
| CEM_V | ENER_V | ISE | MES | Escenario |
|---|---|---|---|---|
| 78088.60 | 223.58 | 98.49 | Jun | Actividad moderada-baja |
| 93757.94 | 236.42 | 118.56 | Jun | Actividad moderada-alta |
Estimación de las predicciones y sus intervalos
# Predicciones e intervalos del 95 %
predicciones_escenarios <- predict(
modelo_multiple_2,
newdata = escenarios,
interval = "prediction",
level = 0.95
)
# Unir predicciones con escenarios
resultados_escenarios <- cbind(
escenarios,
as.data.frame(predicciones_escenarios)
)
# Seleccionar resultados
resultados_escenarios <- resultados_escenarios %>%
select(
Escenario,
CEM_V,
ENER_V,
ISE,
MES,
fit,
lwr,
upr
)
# Presentar resultados
kable(
resultados_escenarios,
digits = 4,
col.names = c(
"Escenario",
"Cemento",
"Energia",
"ISE",
"Mes",
"Prediccion",
"Limite inferior",
"Limite superior"
),
caption = "Predicciones e intervalos del 95 %"
)
| Escenario | Cemento | Energia | ISE | Mes | Prediccion | Limite inferior | Limite superior |
|---|---|---|---|---|---|---|---|
| Actividad moderada-baja | 78088.60 | 223.5775 | 98.4927 | Jun | 96.6202 | 82.9488 | 110.2915 |
| Actividad moderada-alta | 93757.94 | 236.4190 | 118.5605 | Jun | 108.6995 | 94.9900 | 122.4089 |
Interpretación de los escenarios hipotéticos
Los resultados de los escenarios hipotéticos permiten analizar cómo cambia la producción industrial estimada ante diferentes condiciones de los indicadores económicos. En el escenario de actividad moderada-baja, construido a partir del primer cuartil de las variables explicativas, el modelo estima una producción industrial de 96,6202 puntos, con un intervalo de predicción del 95 % comprendido entre 82,9488 y 110,2915.
Por su parte, en el escenario de actividad moderada-alta, definido mediante el tercer cuartil de los indicadores, la producción industrial estimada alcanza 108,6995 puntos, con un intervalo de predicción entre 94,9900 y 122,4089.
La diferencia entre ambas estimaciones es de aproximadamente 12,08 puntos, lo que sugiere una asociación positiva entre mayores niveles de los indicadores económicos considerados y la producción industrial estimada. No obstante, los intervalos de predicción presentan una zona de superposición, por lo que no es posible establecer que los resultados de ambos escenarios sean estadísticamente diferentes.
En términos generales, los escenarios ilustran la utilidad del modelo para construir estimaciones condicionadas a diferentes contextos económicos. Sin embargo, deben interpretarse como ejercicios hipotéticos y no como pronósticos ciertos ni como evidencia de relaciones causales entre los indicadores y la producción industrial.
##Conclusiones generales
El desarrollo del Caso 2 permitió analizar el comportamiento de la producción industrial del Valle del Cauca mediante indicadores económicos relacionados con los despachos de cemento, el consumo de energía y el Índice de Seguimiento a la Economía (ISE). A partir de la exploración de la base de datos, se identificaron patrones de comportamiento, asociaciones entre las variables y observaciones atípicas que fueron consideradas durante la construcción y evaluación de los modelos econométricos.
En una primera etapa, las regresiones lineales simples permitieron identificar relaciones positivas entre la producción industrial y los indicadores económicos analizados. Posteriormente, la estimación de modelos de regresión múltiple permitió evaluar conjuntamente estas variables e incorporar el componente estacional mediante la variable categórica mensual. Los resultados mostraron que el segundo modelo múltiple presentó el mayor coeficiente de determinación ajustado (0,6558), lo que indica que explica aproximadamente el 65,58 % de la variabilidad de la producción industrial dentro de la muestra utilizada para su estimación.
La selección del modelo mediante el criterio de información de Akaike (AIC) respaldó la conservación de los indicadores económicos y la variable mensual, dado que el procedimiento paso a paso no encontró una especificación alternativa con un menor AIC. Asimismo, la evaluación del factor de inflación de la varianza (VIF) no evidenció problemas importantes de multicolinealidad entre las variables explicativas, por lo que no se identificaron razones estadísticas para excluirlas por este motivo.
En cuanto al diagnóstico de los residuos, se encontraron algunas limitaciones relacionadas con el cumplimiento de los supuestos clásicos de regresión. La prueba de Shapiro-Wilk evidenció desviaciones respecto a la normalidad, mientras que la prueba de Breusch-Pagan no identificó evidencia suficiente de heterocedasticidad. Por su parte, la prueba de Durbin-Watson no permitió rechazar la hipótesis de ausencia de autocorrelación positiva al nivel de significancia del 5 %. Adicionalmente, se identificaron cuatro observaciones potencialmente influyentes mediante la distancia de Cook, especialmente los registros correspondientes a mayo y junio de 2021. Estos resultados indican que la interpretación de los coeficientes y de la inferencia estadística debe realizarse con precaución.
La comparación del desempeño predictivo mediante validación temporal permitió identificar al modelo múltiple 2 como la mejor alternativa entre las especificaciones evaluadas. Este modelo obtuvo un error absoluto medio (MAE) de 7,1264, inferior al registrado por el modelo múltiple 1 (8,5918), la mejor regresión simple basada en el ISE (8,7526) y el modelo de referencia basado en la mediana (12,8493). Asimismo, la transformación logarítmica no produjo una mejora predictiva, dado que presentó un MAE de 7,5542. Por esta razón, se conservó la especificación original.
La construcción de escenarios hipotéticos permitió ilustrar la aplicación práctica del modelo seleccionado. Bajo condiciones de actividad económica moderada-baja, la producción industrial estimada fue de 96,6202 puntos, mientras que bajo condiciones moderadas-altas alcanzó 108,6995 puntos. Aunque estos resultados sugieren una asociación positiva entre los niveles de los indicadores económicos y la producción industrial estimada, los intervalos de predicción del 95 % presentan una zona de superposición, por lo que las diferencias deben interpretarse con cautela.
En términos generales, el modelo seleccionado constituye una herramienta de apoyo para el análisis y seguimiento de la actividad industrial del Valle del Cauca, ya que permite relacionar diferentes indicadores económicos, incorporar patrones mensuales y generar estimaciones bajo escenarios alternativos. Sus resultados podrían ser utilizados como insumo para ejercicios de monitoreo económico y planeación sectorial. Sin embargo, no deben interpretarse como relaciones causales ni como predicciones exactas.
Finalmente, se reconoce que la capacidad explicativa y predictiva del modelo está condicionada por las características de la información disponible, la presencia de observaciones influyentes, las desviaciones de normalidad de los residuos y la incertidumbre propia de las estimaciones. Por tanto, se recomienda actualizar periódicamente la información, ampliar el conjunto de variables explicativas y continuar evaluando el desempeño del modelo mediante validaciones temporales, con el propósito de mejorar su capacidad de adaptación ante cambios en las condiciones económicas.