## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2014 3520 3500 4030 3605 3430 3410 3180 3325 3165 2750 2290 2080
## 2015 1955 2085 1975 2030 1815 1730 1610 1595 1330 1350 1305 1110
## 2016 1030 1140 1310 1415 1340 1395 1300 1320 1250 1310 1320 1380
## 2017 1375 1320 1350 1360 1335 1380 1395 1370 1400 1665 1750 2210
## 2018 2660 2510 2615 3100 3090 3025 3070 3420 4030 3740 3105 2645
## 2019 2920 3120 3415 2985 2765 2920 2940 2740 2950 3040 3290 3315
## 2020 3180 3105 1900 2090 1990 2075 2080 2190 1895 1791 2081 2245
## 2021 2030 2250 2366 2210 2190 2722 2633 2643 2734 2847 2600 2690
## 2022 2905 3263 3538 3206 3120 2253 2280 2257 2074 2450 2290 2420
## 2023 2669 2698 2450 2288 2036 2140 2292 2357 2365 2423 2520 2340
## 2024 2335 2290 2075 2280 2360 2320 2175 2055 1880 1700 1800 1675
La serie muestra los precios mensuales de Ecopetrol desde aproximadamente 2013 hasta 2025, con una alta volatilidad y cambios marcados en distintas etapas:
Caída pronunciada (2013-2016):
El precio cayó de cerca de 4.000 a menos de 1.500.
Posibles causas: Esta caída coincide con la fuerte baja del precio internacional del petróleo entre 2014 y 2016, debido al aumento de producción de shale oil en EE. UU., menor demanda global y decisión de la OPEP de no recortar producción.
Para Ecopetrol, que depende fuertemente del precio del crudo, esta caída internacional tuvo impacto inmediato.
Recuperación con alta volatilidad (2016-2020):
Desde 2016, se observa una recuperación paulatina con altibajos, alcanzando nuevamente niveles cercanos a 4.000 en 2019.
Posibles causas: Recuperación gradual de los precios del petróleo y mejora en resultados operativos de la compañía. También influyen mayores expectativas del mercado por nuevas inversiones de Ecopetrol en exploración y refinación.
La volatilidad puede explicarse por factores como tensiones geopolíticas (ej. Venezuela, Medio Oriente), variaciones en la TRM y expectativas de crecimiento global.
Caída abrupta en 2020 y recuperación parcial (2020-2022):
Hay un desplome importante en 2020 seguido por una recuperación parcial.
Causa principal: El impacto de la pandemia del COVID-19 en 2020, que provocó una caída histórica en la demanda global de petróleo.
La recuperación posterior está relacionada con la reactivación económica y la reducción de inventarios a nivel global.
Tendencia a la baja (2022-2025):
Desde mediados de 2022 hasta 2025, se observa una tendencia bajista más sostenida.
Posibles causas: Incertidumbre política interna en Colombia (como cambios regulatorios o fiscales que afectan al sector petrolero), transición energética global, presión hacia energías limpias y menores expectativas de crecimiento económico mundial.
Componente Estacional: Presenta un patrón repetitivo, oscilando regularmente alrededor de cero, con picos y valles estables cada año.
Hay una ligera estacionalidad anual en los precios, posiblemente relacionada con la variación cíclica de la demanda de crudo en ciertos meses (ej. mayor demanda en invierno en países del hemisferio norte).
Componente de Tendencia: Muestra una caída entre 2013 y 2016, una recuperación hasta 2019, y una tendencia decreciente desde 2022 hasta 2025.
Posibles causas:
2014-2016: Colapso de precios del petróleo a nivel mundial.
2016-2019: Recuperación ligada a aumento de precios internacionales y mayor inversión de Ecopetrol.
2020: Impacto de la pandemia del COVID-19.
2022-2025: Factores como transición energética, cambios regulatorios internos en Colombia, y presiones políticas y ambientales que afectan la percepción del sector. Componente Residual (Ruido): Fluctuaciones irregulares que no se explican por la tendencia ni por la estacionalidad.
Interpretación: Representa eventos impredecibles o shocks externos como:
Cambios inesperados en la política fiscal o petrolera.
Noticias geopolíticas.
Reacciones del mercado a resultados financieros trimestrales.
Movimientos abruptos en la tasa de cambio COP/USD.
Conclusión general: La descomposición muestra que la serie está influida principalmente por tendencias de largo plazo y eventos aleatorios, mientras que la estacionalidad tiene un efecto leve pero constante. Esto sugiere que la evolución de precios de Ecopetrol depende más de factores macroeconómicos y estructurales, que de ciclos estacionales fuertes.
El gráfico compara los precios mensuales originales de Ecopetrol con la serie ajustada por estacionalidad. Ambas líneas se superponen casi por completo, lo que indica que la estacionalidad tiene un efecto mínimo sobre la serie de precios. Esto significa que las variaciones observadas se deben principalmente a la tendencia de largo plazo y a eventos externos, y no a patrones repetitivos estacionales. La eliminación del componente estacional no altera significativamente la forma de la serie, lo que sugiere que los precios de Ecopetrol están dominados por factores como el comportamiento del mercado global del petróleo (ej. decisiones de la OPEP, oferta y demanda internacional), aspectos internos como la política energética en Colombia y la gestión de la empresa, así como choques externos como la pandemia del COVID-19 en 2020 o tensiones económicas recientes (inflación, tasas de interés, transición energética). En conclusión, la serie ajustada demuestra que la estacionalidad no distorsiona de manera relevante la evolución de los precios, por lo que el análisis puede centrarse en los factores macroeconómicos y estructurales que afectan el comportamiento de largo plazo.
#Tendencia
El gráfico muestra la serie original de precios mensuales de Ecopetrol junto con su componente de tendencia suavizada. Se observa una marcada caída en los precios entre 2013 y 2016, seguida por una recuperación sostenida hasta 2019. A partir de 2020, la tendencia refleja una caída abrupta, correspondiente a la crisis generada por la pandemia de COVID-19, con una posterior recuperación parcial hasta 2022. Desde entonces, la tendencia ha sido nuevamente descendente hasta 2025. Esta evolución sugiere que los precios de Ecopetrol están fuertemente influenciados por factores estructurales como los ciclos del mercado petrolero global, choques exógenos (pandemia, conflictos geopolíticos), y eventos internos como decisiones de política energética en Colombia. El análisis confirma que la tendencia de largo plazo explica gran parte de la evolución del precio, más allá de fluctuaciones puntuales o estacionales.
#Tasa de crecimiento de la serie de tendencia y original
## [1] 120
## [1] 120
## [1] 120
El gráfico muestra la tasa de crecimiento anual porcentual de los precios mensuales de Ecopetrol junto con su tendencia suavizada. Entre 2015 y 2017, la serie presenta una recuperación significativa, pasando de tasas negativas de crecimiento cercanas al -50% a tasas positivas superiores al 100%, impulsadas por la recuperación del precio internacional del petróleo tras su desplome en 2014-2016. En 2018 se alcanza el pico de crecimiento, superando el 180%, para luego descender rápidamente en los años siguientes. A partir de 2020, se observa una alta volatilidad con varios cambios de signo, reflejando el impacto de la pandemia, la posterior reactivación económica y la incertidumbre del entorno global y nacional. Desde 2022, tanto la serie original como la tendencia muestran una desaceleración progresiva, con tasas de crecimiento anual cercanas o incluso por debajo de 0%, indicando un estancamiento o caída en el precio. Este comportamiento sugiere que los precios de Ecopetrol han pasado por fases de expansión, recuperación y posterior enfriamiento, en línea con el contexto energético mundial y factores internos como incertidumbre regulatoria, política fiscal y transición energética.
Un modelo ARIMA (Autoregressive Integrated Moving Average) es una herramienta estadística utilizada para analizar y predecir series de tiempo. En términos simples, es como una “bola de cristal matemática” que usa datos pasados para estimar valores futuros, especialmente útil en finanzas para preveer precios, ventas o ingresos.
Desglose del nombre ARIMA 1. Autoregressive o autorregresivo (AR) → Usa valores pasados para predecir el futuro 2. Integrated (I) → Ajusta tendencias en los datos para hacerlos estacionarios (sin patrones cambiantes en el tiempo). 3.MAving Average o media móvil (MA)- → Suaviza fluctuaciones aleatorias a partir de errores pasados.
ARIMA combina estos tres elementos para crear una predicción más precisa.
La metodología Box-Jenkins es un enfoque sistemático para construir modelos ARIMA con el objetivo de analizar y pronosticar series de tiempo. Fue desarrollada por George Box y Gwilym Jenkins y se basa en cuatro etapas clave:
1️⃣ Identificación 2️⃣ Estimación 3️⃣ Validación 4️⃣ Pronóstico
Se usa especialmente cuando se quiere encontrar el modelo ARIMA más adecuado para una serie de tiempo.
Antes de empezar a aplicar la metodología BOX-JENKINS, lo ideal es dividir el conjunto de datos de prueba y entrenamiento
✅ Para entrenar el modelo con datos históricos sin usar información futura. ✅ Para evaluar la precisión del modelo comparando sus predicciones con los datos reales de prueba.
💡 Esta división es clave en modelos predictivos para evitar sobreajuste y evaluar el rendimiento en datos no vistos.
#División en conjunto de entrenamiento y prueba para la variable que es la elegida para pronosticar
El código siguiente divide una serie temporal (variable1_ts) en dos subconjuntos:
Conjunto de entrenamiento (train): Datos desde enero de 2012 hasta septiembre de 2024. Conjunto de prueba (test): Datos desde octubre de 2024 hasta diciembre de 2024.
Esto se hace para evaluar el desempeño de modelos de predicción en datos no vistos.
✅ Su promedio no cambia con el tiempo.. ✅Su variabilidad (qué tanto fluctúa) se mantiene estable. ✅ Su relación con valores pasados es siempre la misma.
¿Cómo saber si una serie es estacionaria?
1️⃣ Observando un gráfico Si el gráfico de la serie muestra una tendencia creciente o decreciente, o si las variaciones se hacen más grandes con el tiempo, la serie probablemente no es estacionaria.
2️⃣ Usando la prueba de Dickey-Fuller Aumentada (ADF) Es una prueba estadística que nos dice si la serie tiene una tendencia fuerte. Si el p-valor de la prueba es mayor a 0.05, significa que la serie no es estacionaria.
¿Cómo hacer una serie estacionaria?
Si encontramos que la serie no es estacionaria, podemos transformarla para que lo sea:
✅ Diferenciación: Restamos cada valor con su valor anterior. Esto elimina tendencias crecientes o decrecientes. ✅ Tomar el logaritmo: Si la variabilidad crece con el tiempo, aplicar un logaritmo estabiliza la varianza. ✅ Eliminar tendencias o ajustar estacionalidad: Si hay patrones repetitivos, podemos restarlos o modelarlos por separado.
Test de Dickey-Fuller
El test de Dickey-Fuller aumentado (ADF) se usa para verificar si una serie temporal es estacionaria, es decir, si sus propiedades estadísticas (media y varianza) permanecen constantes en el tiempo.
HO: Serie no estacionaria HI: Serie estacionaria
¿Qué significa el p-valor?
Si el p-valor es bajo (< 0.05) → Rechazamos la hipótesis nula y concluimos que la serie es estacionaria. Si el p-valor es alto (> 0.05) → No podemos rechazar la hipótesis nula, lo que indica que la serie no es estacionaria.
A continuación se aplica el test ADF para validar estacionariedad en el conjunto de entrenamiento de la variable 1, que es la elegida para pronosticar:
##
## Augmented Dickey-Fuller Test
##
## data: train_ts
## Dickey-Fuller = -2.6836, Lag order = 5, p-value = 0.2923
## alternative hypothesis: stationary
El test ADF en la variable 1 arrojó un p-value igual a 0.2923, este valor es mayor a 0.05, por tanto la serie es no estacionaria. De ese modo se debe ejecutar el código siguiente para diferenciar una vez la variable 1 y luego volver a aplicar el test ADF a esa serie diferenciada una vez:
#Diferenciación en niveles
A continuación, se realiza el gráfico de la serie original y diferenciada (una vez) para ver graficamente el cambio o ajuste:
El gráfico presenta la serie original de precios mensuales de Ecopetrol utilizada para entrenamiento, en un horizonte temporal que va aproximadamente desde 2013 hasta 2025. Se observa una alta volatilidad con tres fases claras: una fuerte caída entre 2013 y 2016, producto de la crisis petrolera internacional; una recuperación acelerada y con mucha fluctuación entre 2016 y 2019, influenciada por la estabilización del mercado del crudo y mayor inversión de Ecopetrol; y una tendencia descendente desde 2022, posiblemente vinculada a la incertidumbre económica global, la transición energética, presiones regulatorias en Colombia y expectativas de menor rentabilidad futura. Esta serie refleja con claridad los ciclos del mercado energético y es útil como base para modelos predictivos que capturen los efectos estructurales y exógenos sobre el precio.
El gráfico muestra la serie de precios mensuales de Ecopetrol tras aplicar una diferenciación, con el objetivo de convertirla en una serie estacionaria. Al eliminar la tendencia, la serie resultante oscila alrededor de cero, con variaciones irregulares y sin un patrón de crecimiento o decrecimiento sistemático en el tiempo. Se observan picos fuertes en los valores diferenciados, especialmente alrededor de 2019 y 2020, lo que indica cambios bruscos en el precio relacionados con eventos significativos como la recuperación poscrisis petrolera y el choque de la pandemia del COVID-19. La estacionarización permite que la serie sea apta para modelos de pronóstico como ARIMA, al cumplir con la suposición de media y varianza constantes a lo largo del tiempo. Aunque la volatilidad persiste, no hay evidencia de estructura tendencial, lo cual es deseable para procesos estocásticos en modelado de series temporales.
#A continuación se aplica la diferenciación logarítimica y la varible u objeto ahora se llama train_diff_log:
#Ahora graficamos la serie orignal versus la serie diferenciada una vez con logaritmo
El gráfico muestra nuevamente la serie original de precios mensuales de Ecopetrol desde aproximadamente 2013 hasta 2025. Se observa una fuerte caída entre 2013 y 2016, seguida por una fase de recuperación volátil hasta 2019, un desplome abrupto en 2020 coincidiendo con la pandemia del COVID-19, y una recuperación parcial con tendencia descendente desde 2022. Esta evolución refleja claramente la influencia de factores estructurales del mercado energético global —como los ciclos del precio del petróleo— así como eventos coyunturales como choques sanitarios, incertidumbre regulatoria nacional y la transición energética. La serie destaca por su alta volatilidad y sensibilidad a factores externos, lo cual es crucial para el análisis financiero y la construcción de modelos predictivos.
El gráfico muestra la serie de precios mensuales de Ecopetrol transformada mediante logaritmo y posteriormente diferenciada una vez, con el objetivo de hacerla estacionaria en términos relativos (proporcionales). La serie resultante oscila alrededor de cero, lo que indica que se eliminó la tendencia de largo plazo, manteniendo únicamente las variaciones porcentuales mensuales. Se observan algunos valores extremos —notablemente en 2020— que coinciden con eventos exógenos como la pandemia del COVID-19, los cuales generaron cambios abruptos en los precios. Este tipo de transformación es útil para estabilizar la varianza, especialmente en series con alta volatilidad como la de Ecopetrol, y permite que modelos como ARIMA logarítmico puedan capturar mejor la dinámica relativa de los cambios, más que los niveles absolutos.
#Ahora probamos estacionariedad en la serie diferenciada ( en nivel y logaritmo)
##
## Augmented Dickey-Fuller Test
##
## data: train_diff
## Dickey-Fuller = -4.1595, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
##
## Augmented Dickey-Fuller Test
##
## data: train_diff_log
## Dickey-Fuller = -3.9858, Lag order = 5, p-value = 0.0122
## alternative hypothesis: stationary
#Identificación manual de p y q ¿Qué hacen estos gráficos?
ACF (Autocorrelation Function)
Muestra la correlación de la serie con sus rezagos.
Ayuda a determinar el parámetro q en un modelo ARIMA(p, d, q).
PACF (Partial Autocorrelation Function)
Muestra la correlación parcial entre la serie y un rezago específico, eliminando el efecto de rezagos intermedios.
Ayuda a determinar el parámetro p en un modelo ARIMA(p, d, q).
Recordemos El eje X representa los rezagos (lags). El eje Y muestra la autocorrelación parcial en cada rezago. Las líneas azules punteadas son los intervalos de confianza (aproximadamente 95%). Si una barra sobrepasa estos límites, indica una autocorrelación significativa. Si las barras caen dentro de los límites, no son significativamente diferentes de cero
En el código siguiente se crean los correlogramas para determinar los posibles valores que puedeo tomar el parámetro p** y q:**
El gráfico muestra la Función de Autocorrelación (ACF) de la serie estacionaria transformada, utilizada para determinar el parámetro q del modelo ARIMA (el número de rezagos en el componente de media móvil, MA). Se observa que solo los rezagos 1 y 6 están levemente fuera del intervalo de significancia, mientras que el resto cae dentro del intervalo (líneas azules punteadas), lo que indica que la mayoría de las autocorrelaciones no son estadísticamente significativas.
Esto sugiere que un modelo MA simple, como MA(1) o MA(6), podría capturar adecuadamente la estructura de corto plazo. Sin embargo, dado que la significancia es baja, q=1 parece una buena elección inicial para evitar sobreajuste. Este análisis es clave para la identificación preliminar de un modelo ARIMA que represente correctamente la dinámica de la serie.
El gráfico muestra la Función de Autocorrelación Parcial (PACF) de la serie estacionaria, utilizada para determinar el parámetro p del modelo ARIMA (número de rezagos en el componente autorregresivo, AR). Se observa que solo el rezago 1 presenta una autocorrelación parcial significativa, al estar fuera del intervalo de confianza (líneas azules punteadas), mientras que los siguientes lags no muestran significancia estadística.
Esto sugiere que un modelo AR(1) es una buena elección inicial, ya que captura la dependencia directa con el primer rezago, sin necesidad de incluir rezagos adicionales. En conjunto con el análisis ACF previo, esto indica que un modelo ARIMA con estructura ARIMA(1,1,1) podría ser adecuado como punto de partida para modelar los precios de Ecopetrol, dado que ya se aplicó una diferenciación (d=1) para lograr estacionariedad.
## Series: train_ts
## ARIMA(1,1,1)
##
## Coefficients:
## ar1 ma1
## -0.1707 0.2658
## s.e. 0.6964 0.6787
##
## sigma^2 = 62772: log likelihood = -887.65
## AIC=1781.29 AICc=1781.49 BIC=1789.85
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -11.81985 247.6135 174.5452 -0.9199437 7.429554 0.2449712
## ACF1
## Training set -0.003479722
#Significancia de coefientes
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.17074 0.69641 -0.2452 0.8063
## ma1 0.26585 0.67872 0.3917 0.6953
##
## Ljung-Box test
##
## data: Residuals from ARIMA(1,1,1)
## Q* = 18.485, df = 22, p-value = 0.6769
##
## Model df: 2. Total lags used: 24
El análisis de los residuos del modelo ARIMA(1,1,1) muestra que estos oscilan alrededor de cero a lo largo del tiempo sin una tendencia clara, lo cual indica que la serie residual es estacionaria. Además, el gráfico de autocorrelación (ACF) revela que no existen rezagos significativamente diferentes de cero, lo que sugiere que el modelo ha capturado adecuadamente la estructura temporal de la serie y no quedan patrones sistemáticos sin explicar. Por otro lado, el histograma con la curva normal superpuesta muestra que, aunque la mayoría de los residuos se concentran cerca de cero, existe cierta asimetría y colas pesadas, lo que indica que la distribución no es perfectamente normal. En conjunto, estos resultados sugieren que el modelo tiene un buen ajuste en términos de estructura temporal, aunque podrían considerarse mejoras para capturar mejor los eventos extremos o atípicos observados en los datos.
Pronóstico en el test de prueba (oct, nov y dic 2024) y gráfico
El gráfico compara el pronóstico manual con los valores observados de la Variable 1 en un periodo reciente (octubre a diciembre). Se observa que el pronóstico manual se mantiene estable y levemente creciente, con valores cercanos a 1860, mientras que los datos observados presentan un comportamiento más dinámico, con un aumento hasta inicios de noviembre seguido de una caída marcada hacia diciembre. Esta discrepancia indica que el pronóstico manual no logró capturar la variabilidad real del mercado, subestimando el pico observado y sobreestimando el valor final. En consecuencia, el modelo manual podría estar asumiendo una estructura demasiado rígida o lineal, sin incorporar adecuadamente los factores que generan los cambios abruptos en el comportamiento de la variable.
Métricas de evaluación del modelo manual dentro del periodo de prueba (oct,nov y dic2024
## MAE Manual: 142.0026
## RMSE Manual: 151.7472
## RMSE Manual: 151.7472
MAE (Mean Absolute Error)
Indica el error promedio en unidades de la variable, es decir, en número de microempresas.
RMSE (Root Mean Squared Error)
Penaliza más los errores grandes debido a la elevación al cuadrado antes de calcular la raíz.
A continuación se calcula la Tabla de pronóstico modelo manual VS los datos reales u observado en oct,nov y dic2024
## Fecha Observado Pronosticado
## 1 2024-10-01 1700 1865.492
## 2 2024-11-01 1800 1867.969
## 3 2024-12-01 1675 1867.546
Ahora pronosticamos fuera del periodo de análisis: Enero 2025 Es decir, le sumamos al periodo de prueba (oct,nov,dic2024) una observación más (enero 2025). Es decir, se estan pronosticando 4 observaciones o meses:
## Fecha Pronostico
## 1 2025-01-01 1865.492
## 2 2025-02-01 1867.969
## 3 2025-03-01 1867.546
## 4 2025-04-01 1867.619
## [1] "Pronóstico para 2025-04-01 = 1867.61856940541"
Otra forma para calcular un valor futuro (fuera de muestra)-Modelo manual, es decir, en caso de que no se haga la dviisón inicial de conjunto de entrenamiento y prueba
Si no hay conjunto de prueba o test y solo quieres el siguiente punto u observación, el código a usar seria algo asi:
## [1] "Pronóstico para octubre 2024: 1865.49227932376"
## Series: train_ts
## ARIMA(1,0,0) with non-zero mean
##
## Coefficients:
## ar1 mean
## 0.9420 2410.4899
## s.e. 0.0289 335.3824
##
## sigma^2 = 61613: log likelihood = -894.47
## AIC=1794.95 AICc=1795.14 BIC=1803.53
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -13.63768 246.288 176.982 -1.702962 7.617592 0.2483914 0.1040238
#Significancia de coeficientes
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 9.4200e-01 2.8883e-02 32.6143 < 2.2e-16 ***
## intercept 2.4105e+03 3.3538e+02 7.1873 6.609e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Series: train_ts
## ARIMA(4,1,2)
##
## Coefficients:
## ar1 ar2 ar3 ar4 ma1 ma2
## 0.0027 -0.9524 0.0371 -0.1225 0.0903 1.0000
## s.e. 0.0900 0.0893 0.0894 0.0900 0.0244 0.0592
##
## sigma^2 = 58833: log likelihood = -883.49
## AIC=1780.98 AICc=1781.91 BIC=1800.94
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -11.94163 235.882 162.8208 -0.9323587 7.06253 0.2285162
## ACF1
## Training set -0.00545367
##
## Ljung-Box test
##
## data: Residuals from ARIMA(4,1,2)
## Q* = 11.181, df = 18, p-value = 0.8865
##
## Model df: 6. Total lags used: 24
El análisis de residuos del modelo ARIMA(4,1,2) muestra que estos oscilan alrededor de cero sin tendencia clara, lo que indica que la serie residual es estacionaria. Aunque se observan algunos picos significativos, especialmente en torno a 2020 y 2022, en general no hay patrones persistentes, lo cual sugiere que el modelo ha capturado adecuadamente la estructura temporal de la serie. La función de autocorrelación (ACF) de los residuos muestra que la mayoría de los rezagos están dentro del intervalo de confianza, aunque algunos se acercan al límite, indicando que los residuos son casi ruido blanco, pero podría quedar una leve autocorrelación. El histograma de residuos revela una distribución asimétrica hacia la izquierda y con colas algo pesadas, lo que sugiere una ligera desviación de la normalidad. En conjunto, el modelo tiene un buen desempeño, pero algunos eventos atípicos y cierta falta de normalidad podrían afectar la precisión de los pronósticos o los intervalos de confianza, por lo que sería recomendable compararlo con modelos más simples o considerar alternativas como ARIMAX si se desea incorporar variables externas.
#Pronóstico modelo ARIMA automático (4,1,2)
El gráfico compara el pronóstico generado por el modelo (línea azul) con los valores observados reales (línea roja) durante los meses de octubre a diciembre. Se observa que el modelo predice un aumento moderado hasta noviembre y una leve caída en diciembre, manteniéndose siempre por encima de los valores reales. En contraste, la serie observada muestra una subida más pronunciada y posterior descenso más fuerte, lo que indica que el modelo sobreestimó sistemáticamente los valores reales y no logró capturar la magnitud de los cambios en el comportamiento del mercado. Esto sugiere que, aunque el modelo tiene una estructura general coherente con la tendencia, no es suficientemente sensible a variaciones bruscas o eventos recientes, lo cual puede reflejar una falta de ajuste fino o la ausencia de factores exógenos en el modelo.
## Fecha Observado Pronosticado
## 1 2024-10-01 1700 1910.766
## 2 2024-11-01 1800 1939.748
## 3 2024-12-01 1675 1967.049
#Ahora pronosticamos fuera del periodo de análisis
## Fecha Pronostico
## 1 2025-01-01 1910.766
## 2 2025-02-01 1939.748
## 3 2025-03-01 1967.049
## 4 2025-04-01 1992.767
## [1] "Pronóstico para enero 2025: 2025-04-01 = 1992.76669899308"
#Otra forma para calcular un valor futuro (fuera de muestra)
## [1] "Pronóstico para octubre 2024: January 2025 = 1910.7661510944"
## Series: train_ts
## ARIMA(1,0,0)(0,0,2)[12] with non-zero mean
##
## Coefficients:
## ar1 sma1 sma2 mean
## 0.9428 -0.2517 -0.1612 2355.2351
## s.e. 0.0289 0.0933 0.0925 206.0013
##
## sigma^2 = 57400: log likelihood = -889.59
## AIC=1789.18 AICc=1789.67 BIC=1803.48
A continuación, se crea el objeto darima para lueg poder graficar los valores reales y observados:
## Series: train_ts
## ARIMA(1,0,0)(0,0,2)[12] with non-zero mean
##
## Coefficients:
## ar1 sma1 sma2 mean
## 0.9428 -0.2517 -0.1612 2355.2351
## s.e. 0.0289 0.0933 0.0925 206.0013
##
## sigma^2 = 57400: log likelihood = -889.59
## AIC=1789.18 AICc=1789.67 BIC=1803.48
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -8.875868 235.8402 174.8559 -1.65286 7.732759 0.2454074 0.09961378
##
## Ljung-Box test
##
## data: Residuals from ARIMA(1,0,0)(0,0,2)[12] with non-zero mean
## Q* = 10.361, df = 21, p-value = 0.9738
##
## Model df: 3. Total lags used: 24
El análisis de los residuos del modelo ARIMA(1,0,0)(0,0,2)[12] con media distinta de cero indica que el modelo tiene un desempeño sólido en la captura de la estructura temporal de la serie. En el gráfico superior, los residuos se distribuyen alrededor de cero sin mostrar una tendencia clara, lo cual es un buen indicio de estacionariedad; sin embargo, se observan algunos picos significativos que podrían estar asociados a eventos atípicos o shocks externos, como los de 2020 y 2022. En el gráfico inferior izquierdo, la función de autocorrelación (ACF) muestra que la mayoría de los rezagos se encuentran dentro del intervalo de confianza, aunque algunos lags se acercan al límite, lo que sugiere que los residuos son casi ruido blanco y que el modelo ha capturado adecuadamente la dependencia temporal. Por último, el histograma con la curva normal (gráfico inferior derecho) muestra una distribución con ligera asimetría y colas un poco más pesadas, lo que indica que los residuos no siguen perfectamente una distribución normal, aunque la aproximación es aceptable para fines de predicción. En conjunto, el modelo presenta un buen ajuste y puede considerarse adecuado, aunque sería recomendable complementar este diagnóstico con un test de Ljung-Box y revisar métricas de error como AIC, RMSE y MAPE para confirmar su superioridad respecto a otros modelos ajustados.
#Pronóstico con el modelo SARIMA
El gráfico muestra la comparación entre el pronóstico generado por el modelo SARIMA(1,0,0)(0,0,2)[12] (línea azul) y los valores observados reales (línea roja) durante octubre, noviembre y diciembre. Se observa que el modelo pronostica un crecimiento continuo y estable en la variable, mientras que los datos reales muestran un comportamiento distinto: un aumento hasta noviembre seguido de una fuerte caída en diciembre. Esto indica que el modelo SARIMA no logró capturar correctamente la reversión en la tendencia observada en la serie real, subestimando el valor en noviembre y sobreestimando fuertemente en diciembre. Aunque el modelo incorpora componentes estacionales, parece que su capacidad de adaptación a cambios bruscos o no lineales es limitada, posiblemente por no incorporar información exógena o porque el comportamiento reciente de la serie no sigue un patrón estacional predecible. En resumen, el modelo ajusta bien la tendencia general, pero presenta rigidez frente a fluctuaciones abruptas en el corto plazo.
## Fecha Observado Pronosticado
## 1 2024-10-01 1700 1804.603
## 2 2024-11-01 1800 1852.451
## 3 2024-12-01 1675 1878.486
#Ahora pronosticamos fuera del periodo de análisis
## Fecha Pronostico
## 1 2025-01-01 1804.603
## 2 2025-02-01 1852.451
## 3 2025-03-01 1878.486
## 4 2025-04-01 1835.239
## [1] "Pronóstico para April 2025 = 1835.24"
#Otra forma para calcular un valor futuro (fuera de muestra)
## Series: train_ts
## ARIMA(1,0,0)(0,0,2)[12] with non-zero mean
##
## Coefficients:
## ar1 sma1 sma2 mean
## 0.9428 -0.2517 -0.1612 2355.2351
## s.e. 0.0289 0.0933 0.0925 206.0013
##
## sigma^2 = 57400: log likelihood = -889.59
## AIC=1789.18 AICc=1789.67 BIC=1803.48
## [1] "Pronóstico para January 2025 = 1804.6"
#Conclusión general sobre los modelos ARIMA y SARIMA.
A lo largo del análisis se evaluaron diferentes modelos para predecir los precios mensuales de Ecopetrol, destacando especialmente ARIMA(1,1,1) y SARIMA(1,0,0)(0,0,2)[12]. Ambos modelos mostraron un ajuste razonable, pero con diferencias clave. El modelo ARIMA(1,1,1) capturó adecuadamente la tendencia general de la serie y sus parámetros fueron estables, aunque no todos resultaron estadísticamente significativos. Los residuos fueron estacionarios y sin autocorrelación, pero no perfectamente normales, y el modelo presentó limitaciones para anticipar cambios bruscos en el corto plazo.
Por su parte, el modelo SARIMA(1,0,0)(0,0,2)[12] mejoró el ajuste al incorporar una componente estacional de media móvil, lo cual permitió representar de forma más precisa los ciclos anuales leves presentes en la serie. Este modelo presentó mejores métricas de ajuste (menor AIC, menor varianza residual), residuos más limpios y una estructura temporal mejor capturada. Sin embargo, tanto ARIMA como SARIMA compartieron una debilidad: ambos modelos mostraron dificultad para anticipar cambios repentinos en la dirección del precio, como lo evidenciaron los gráficos de pronóstico vs observado, donde se sobreestimó la caída en diciembre.
En resumen, el modelo SARIMA es el que ofrece el mejor equilibrio entre ajuste y capacidad predictiva, especialmente para proyecciones mensuales, ya que considera tanto la inercia de los precios como patrones estacionales. Aun así, para mejorar la precisión de los pronósticos en escenarios con alta volatilidad o eventos atípicos, sería recomendable considerar modelos que incorporen variables exógenas o enfoques más flexibles como modelos no lineales o redes neuronales.