library(readxl)
library(stargazer)
library(lmtest)
library(ggrepel)
library(tsibble)
library(fUnitRoots)
library(forecast)
library(timetk)
library(TSstudio)
library(urca)
library(texreg)
library(dplyr)
library(slider)
library(tseries)
energy <- read_excel("C:/Users/Juliana Anaya/Downloads/energy.xlsx")
#1. Se tienen las series de tiempo de demanda mensual de pasajeros en miles de Estados Unidos (enero-1949 hasta diciembre-1962) y la demanda real diaria de energía en MWh de la ciudad de Sincelejo del mercado no regulado (enero-2000 hasta septiembre-2023). Con esta información determine:
#a) Grafique las series y analice a priori si existen patrones de estacionalidad y en qué meses se dan esos efectos de calendario. Explique por qué se dan estos efectos estacionales. Luego, descomponga la serie (tanto en su forma aditiva como multiplicativa) para verificarlo.
##Analisis de series de tiempo para la demanda real diaria de energía en MWh de la ciudad de Sincelejo del mercado no regulado (enero-2000 hasta septiembre-2023)
##El gráfico de la demanda de energía en Sincelejo entre 2000 y 2023 muestra picos y caídas recurrentes que reflejan tanto variaciones estacionales como choques externos, eso es debido a que en enero la demanda tiende a disminuir por la temporada vacacional en la que muchas familias se desplazan fuera de sus hogares reduciendo así el consumo eléctrico, mientras que entre febrero y abril el consumo suele aumentar como respuesta a las altas temperaturas lo que incrementa el uso de ventiladores y aires acondicionados, asimismo en los meses de mayo y noviembre la demanda tiende a reducirse como consecuencia de la temporada de lluvias que disminuye la temperatura y reduce la necesidad de climatización artificial, esto también se ve afectado por choques externos ,como la crisis energética de 2001 generada por las deudas y el aumento de tarifas en empresas como Electricaribe, la incidencia del fenómeno del Niño entre 2005 y 2007 que elevó las temperaturas y con ello la demanda, y finalmente el confinamiento por la pandemia en 2020 que impulsó el teletrabajo y un mayor uso de energía en los hogares (UPME, 2013), todo este comportamiento puede explicarse a través de la teoría de la descomposición de series temporales de Box y Jenkins 1976 que permite distinguir entre tendencia, estacionalidad y componente irregular (Box & Jenkins, 1976).
energy_mensual <- energy %>%
group_by(Fecha) %>%
summarise_by_time(.date_var = Fecha, .by = "month",
demanda_real = mean(demanda_real, na.rm = TRUE))
energy_ts<- ts(energy_mensual$demanda_real, start = c(2000, 1), end = c(2023, 9), frequency = 12)
#Grafico de demanda de pasajeros
ts_plot(energy_ts, slider = T, title = "Demanda promedio mensual de energia en Sincelejo \n 2000-2023", Ytitle = "KWh", Xtitle = "Años")
#Descomposicion de la serie
##La descomposición de la serie de demanda mensual de energía en Sincelejo entre 2000 y 2023 puede observarse desde dos enfoques, el aditivo y el multiplicativo, ambos permiten identificar los mismos componentes como tendencia, estacionalidad y parte aleatoria, sin embargo, cada uno los interpreta de manera distinta.
##En el enfoque aditivo (Observed = Trend + Seasonal + Random) se supone que la estacionalidad y la aleatoriedad mantienen una magnitud constante en el tiempo y se suman directamente a la tendencia, por eso, al analizar la tendencia se observa un crecimiento de la demanda a lo largo del período 2000-2023 y el consumo muestra un aumento más notorio hacia los años recientes, relacionado con procesos de urbanización, crecimiento poblacional y mayor uso de equipos eléctricos.Por su parte, la estacionalidad presenta oscilaciones de magnitud constante durante toda la serie, por eso se distinguen repeticiones periódicas en determinados meses del año con incrementos y descensos que mantienen intensidad similar sin importar el nivel general de la demanda, mientras que el componente aleatorio concentra las fluctuaciones no explicadas por la tendencia ni por la estacionalidad, debido a esto, los primeros años (2000-2010) muestran irregularidades más marcadas asociables a choques externos como crisis energéticas o fenómenos climáticos, en cambio, en los años posteriores las variaciones tienden a suavizarse.
##Por su parte, en el enfoque multiplicativo (Observed = Trend × Seasonal × Random) la estacionalidad y la aleatoriedad se expresan de manera proporcional a la tendencia, por eso la tendencia muestra un crecimiento sostenido con un ascenso más evidente en la última década reflejando transformaciones socioeconómicas y demográficas, mientras que la estacionalidad se ajusta al nivel general de la serie mostrando oscilaciones más atenuadas en los primeros años y con mayor notoriedad en los períodos recientes cuando el consumo global alcanza valores más altos, además, el componente aleatorio recoge las variaciones no atribuibles a la tendencia ni a la estacionalidad, estas oscilaciones son más tenues al inicio y adquieren mayor visibilidad en los años recientes, destacando episodios de choques externos como el aumento de la demanda durante el confinamiento de 2020.
##En este análisis se trabajó con el modelo aditivo, el cual resulta adecuado porque refleja de manera consistente la tendencia creciente, los patrones estacionales recurrentes y las fluctuaciones aleatorias de la demanda de energía en Sincelejo.
ts_decompose(energy_ts,type = "both")
#B. Desestacionalice la serie y compare con la serie original.¿Que tanto se redujo el efecto calendario?
##Una vez eliminados los efectos estacionales de la serie, se aprecia que las oscilaciones ligadas al calendario se reducen, ya que la línea desestacionalizada sigue de manera muy cercana a la serie observada, pero con una trayectoria más suave y menos marcada por repuntes o caídas de corta duración,esto indica que el efecto calendario se atenuó de manera leve y las variaciones mensuales propias de ciertos momentos del año ya no resaltan tanto, aunque la forma general de la serie permanece casi idéntica. En otras palabras, la desestacionalizacion no alteró la tendencia de fondo, sino que eliminó pequeñas fluctuaciones estacionales, manteniéndose estable la dinámica general de la demanda.
demanda_descomp <- decompose(energy_ts, type = "additive")
demanda_des <- energy_ts - demanda_descomp$seasonal
demanda_energy <- data.frame("demanda_obs" = as.numeric(energy_ts)) %>% mutate(demanda_des = as.numeric(demanda_des), Fecha = energy_mensual$Fecha)
ts_plot(demanda_energy, slider = T,
title = "Demanda promedio mensual de energia en Sincelejo \n observada y desestacionalizada \n 2000-2023",
ylab("KWh"),
xlab("años"))
#1. Correlograma ¿la correclacion disminuye lenta o rapidamente a medida que nos alejamos en el tiempo?
#2.La pruena Dickey fuller(o DF aumentado). Si la serie o es estacionaria ¿Que haria para volverla estacionaria?
#probar si la serie es estacionaria
##De manera a priori la serie no parece estacionaria, ya que la media y la varianza no se mantienen constantes en el tiempo, si bien en los primeros años entre 2000 y 2010 la demanda se ubica en niveles más altos con fluctuaciones más pronunciadas, mientras que en los periodos posteriores la serie tiende a mostrar un comportamiento más estable, de modo que se evidencia un cambio en el nivel y en la dispersión de los datos, lo cual indica que las propiedades estadísticas no son constantes a lo largo del tiempo y por tanto la serie no cumple con la condición de estacionariedad.
#test de Dickey Fuller ##p-value ##Si p-value ≤ a se rechaza H₀ ##Si p-value > a no se rechaza H₀ ##Con estadístico ADF ##Si ADF ≤ Valor crítico (VC) se rechaza H₀ ##Si ADF > Valor crítico (VC) no se rechaza H₀
#Al aplicar la prueba Dickey-Fuller aumentada se obtuvo un estadístico de -1.3781, el cual no es más negativo que los valores críticos al 1%, 5% y 10%, por lo que no se puede rechazar la hipótesis nula de raíz unitaria. De manera consistente, el p-value también resulta mayor al nivel de significancia del 5%, lo cual confirma que la serie no es estacionaria y, en consecuencia, requiere transformaciones como la diferenciación para garantizar la estacionariedad antes de ajustarla a un modelo de series temporales.
#test de durbin watson
df <- ur.df(energy_ts, type = "trend", lags = 0)
summary(df)
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -43.699 -2.332 -0.471 1.914 53.296
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.349890 0.862926 -0.405 0.6854
## z.lag.1 -0.016088 0.011675 -1.378 0.1693
## tt 0.016660 0.007653 2.177 0.0303 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.97 on 281 degrees of freedom
## Multiple R-squared: 0.01712, Adjusted R-squared: 0.01012
## F-statistic: 2.447 on 2 and 281 DF, p-value: 0.0884
##
##
## Value of test-statistic is: -1.3781 2.2545 2.4469
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -3.98 -3.42 -3.13
## phi2 6.15 4.71 4.05
## phi3 8.34 6.30 5.36
dwtest(df@testreg)
##
## Durbin-Watson test
##
## data: df@testreg
## DW = 2.0209, p-value = 0.5228
## alternative hypothesis: true autocorrelation is greater than 0
#Si DW ≈ 2 no se rechaza H₀
#Si DW < 2 posible autocorrelación positiva.
#Si DW > 2 posible autocorrelación negativa.
#Con p-value
#Si p-value ≤ 0.05 se rechaza H₀
#Si p-value > 0.05 no se rechaza H₀
#En la prueba de Durbin-Watson se obtuvo un estadístico de DW = 2.02 y un p-value = 0.5228. Como el valor de DW es muy cercano a 2 y el p-value es mayor a 0.05, no se rechaza H₀, lo que indica que no existe evidencia de autocorrelación en los residuos.
#Test de correlograma
#Al observar los correlogramas, se aprecia que la función de autocorrelación (ACF) desciende lentamente y se mantiene elevada en varios rezagos, por lo tanto esto constituye un indicio de que la serie no es estacionaria. Además, al revisar la función de autocorrelación parcial (PACF), se nota que presenta un corte marcado en los primeros rezagos y posteriormente se estabiliza dentro de las bandas de confianza. En consecuencia, esta combinación de un ACF persistente y un PACF con caída abrupta sugiere que la serie conserva memoria a largo plazo,por lo tanto, se requiere aplicar diferenciación para lograr que los datos se vuelvan estacionarios.
par(mfcol = c(1, 2))
acf(energy_ts, )
pacf(energy_ts)
#Con la serie estacionaria revise nuevamente los correlogrmas (FACS Y
FACP) e identifique los valores aprobados p,d y q ¿ Que modelo ARIMA
sugiere los correlogramas?
#volver la serie estacionaria
energy_ts_diff <- diff(energy_ts, differences = 1)
plot(energy_ts_diff, main = "energy_ts diferenciada (d=1)")
#Test de dickey fuller
##Al aplicar la prueba Dickey-Fuller aumentada a la serie diferenciada, se observa que el estadístico de prueba (-17.09) es mucho menor que los valores críticos al 1%, 5% y 10%. Además, el p-value es prácticamente cero (menor a 0.05),por lo tanto, se rechaza la hipótesis nula de raíz unitaria y, en consecuencia, se concluye que la serie diferenciada es estacionaria,afirmando que el proceso de diferenciación fue efectivo para estabilizar la media y eliminar la tendencia.
df_diff <- ur.df(energy_ts_diff, type = "trend", lags = 0)
summary(df_diff)
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -44.168 -2.159 -0.369 1.873 54.277
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.747230 0.835254 -0.895 0.372
## z.lag.1 -1.020706 0.059707 -17.095 <2e-16 ***
## tt 0.009245 0.005119 1.806 0.072 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.999 on 280 degrees of freedom
## Multiple R-squared: 0.5107, Adjusted R-squared: 0.5072
## F-statistic: 146.1 on 2 and 280 DF, p-value: < 2.2e-16
##
##
## Value of test-statistic is: -17.0951 97.4168 146.1252
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -3.98 -3.42 -3.13
## phi2 6.15 4.71 4.05
## phi3 8.34 6.30 5.36
#test de durbin_watson
#Al aplicar la prueba de Durbin Watson sobre la serie diferenciada se obtuvo un valor de 2.0039, el cual está prácticamente en torno a 2, lo que sugiere que no existe evidencia de autocorrelación en los residuos,a esto se suma que el p-value arrojado fue de 0.4894, muy superior al nivel de significancia c de 0.05, por lo que no se rechazan las hipótesis nulas de ausencia de autocorrelación. Estos resultados permiten concluir que los residuos se comportan de manera independiente y, por tanto, el modelo ajustado no presenta problemas de correlación serial, confirmando así que el proceso de diferenciación fue adecuado.
dwtest (df_diff@testreg)
##
## Durbin-Watson test
##
## data: df_diff@testreg
## DW = 2.0039, p-value = 0.4894
## alternative hypothesis: true autocorrelation is greater than 0
#test de corrrelogramas
#Al observar los correlogramas de la serie diferenciada se aprecia que en la función de autocorrelación (ACF) los rezagos tienden a caer rápidamente dentro de las bandas de significancia y no se identifican picos relevantes más allá del primer rezago, lo cual indica que la serie ya no presenta autocorrelaciones significativas tras la diferenciación. De manera complementaria, la función de autocorrelación parcial (PACF) muestra un comportamiento semejante ,ya que la mayoría de los rezagos se mantienen cercanos a cero y no se distinguen cortes marcados que sugieran dependencia fuerte, por lo que en conjunto estos resultados permiten concluir que el proceso de diferenciación logró eliminar la mayor parte de la correlación serial, favoreciendo así la estacionariedad de la serie.
par(mfcol = c(1, 2))
acf(energy_ts_diff, )
pacf(energy_ts_diff)
arima_ma1 <- arima(energy_ts, c(0, 1, 1), seasonal = list(order = c( 0, 1,1), period = 12))
stargazer(arima_ma1, type = "text")
##
## =============================================
## Dependent variable:
## ---------------------------
## energy_ts
## ---------------------------------------------
## ma1 0.045
## (0.069)
##
## sma1 -1.000***
## (0.077)
##
## ---------------------------------------------
## Observations 272
## Log Likelihood -916.639
## sigma2 43.057
## Akaike Inf. Crit. 1,839.279
## =============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
#e) Una vez identificada la especificación adecuada, interprete los parámetros estimados con sentido económico, revise el ajuste del modelo, así como la normalidad de los errores. Si los errores son normales, proceda a pronosticar los siguientes 5 meses a partir de la última observación. Si no son normales, use la función “auto.arima” del paquete “forecast” para automatizar el proceso de elección del modelo y revise nuevamente el ajuste y la normalidad de los errores para pronosticar.
#Interpretacion de los parametros del modelo ARIMA(0,1,1)
##Al analizar los parámetros estimados del modelo ARIMA(0,1,1), se observa que la constante no resulta estadísticamente significativa, lo que indica que, una vez eliminada la tendencia de la serie, no existe un crecimiento o disminución sistemática en la demanda energética. En cambio, el coeficiente de media móvil de primer orden (MA1) es cercano a –1 y altamente significativo, lo que refleja que los choques o variaciones inesperadas que afectan la demanda en un periodo tienden a corregirse casi por completo en el periodo siguiente, pero en sentido contrario, esto sugiere que el consumo de energía responde a fluctuaciones de corto plazo ocasionadas por factores coyunturales, como cambios climáticos o variaciones en la actividad económica, pero mantiene una dinámica estable en el tiempo, sin acumular desequilibrios persistentes.
##El ajuste del modelo
##La comparación entre la línea azul (demanda observada) y la anaranjada (serie estimada) muestra que ambas se superponen en casi todo el periodo, lo que evidencia un buen ajuste del modelo ARIMA,lo que significa que el modelo reproduce con precisión el comportamiento real de la demanda energética, capturando su tendencia y variaciones de corto plazo sin grandes desviaciones.
demanda_energy <- demanda_energy %>%
mutate(resid = arima_ma1$residuals,
demanda_est = as.numeric(demanda_obs-resid))%>%
select(demanda_obs, demanda_est, Fecha)
ts_plot(demanda_energy, slider = T,
title = "Demanda promedio mensual de energia en Sincelejo \n observada y desestacionalizada \n 2000-2023",
ylab("KWh"),
xlab("años"))
#graficar los errores
##La gráfica de los errores muestra que los residuales se distribuyen alrededor de cero, lo que muestra que el modelo no presenta un sesgo en sus estimaciones,además, no se observan tendencias ni patrones definidos, lo cual sugiere que los errores son en su mayoría aleatorios. Sin embargo, se evidencian algunos picos de mayor magnitud en ciertos periodos,como entre 2000 y 2005 y nuevamente al rededor de 2020 lo que refleja que en esos momentos el modelo no logró ajustarse con la misma precisión que en el resto de la serie.
ts_plot(arima_ma1$residuals, slider = T,
title = "Residuos",
ylab("KWh"),
xlab("años"))
#Histograma de errores
##El histograma de los residuales revela una marcada concentración de los errores alrededor de cero, indicando que la mayoría son pequeños y que las predicciones son generalmente acertadas, aunque su distribución no sigue perfectamente la forma de una campana normal. Por su parte, el gráfico QQ-plot evidencia desviaciones de la recta teórica, especialmente en los extremos, lo que sugiere que la distribución de los errores presenta colas más pesadas de lo esperado y que la normalidad no se cumple de forma estricta.
par(mfcol = c(1, 2))
hist(arima_ma1$residuals)
qqnorm(arima_ma1$residuals)
qqline(arima_ma1$residuals, col = "pink")
#jarque.bera.test
##Hipótesis nula (H₀) los residuales siguen una distribución normal.
##Hipótesis alternativa (H₁) los residuales no siguen una distribución normal.
#El test de Jarque-Bera arroja un valor p menor a 0.05, lo que lleva a rechazar la hipótesis nula de normalidad,esto significa que los residuales no siguen una distribución normal, en concordancia con lo observado en el histograma y el QQ-plot, donde se apreciaban desviaciones en los extremos y colas más pesadas.
jarque.bera.test(arima_ma1$residuals)
##
## Jarque Bera Test
##
## data: arima_ma1$residuals
## X-squared = 6658.9, df = 2, p-value < 2.2e-16
#modelo automatico
##El procedimiento automático de selección de modelos evaluó distintas combinaciones de parámetros ARIMA y determinó que la mejor alternativa es un ARIMA(0,1,0),esto significa que, luego de diferenciar la serie una vez para lograr estacionariedad, no se identificó evidencia suficiente para incorporar términos autorregresivos ni de medias móviles, por lo que la dinámica de la serie se ajusta mejor a un proceso de caminata aleatoria, es decir, el comportamiento actual depende fundamentalmente del valor inmediato anterior más un componente aleatorio, lo cual sugiere que no existen patrones adicionales de autocorrelación que un modelo más complejo pudiera capturar.
arima_auto <- auto.arima(energy_ts,trace = T, seasonal = TRUE)
##
## Fitting models using approximations to speed things up...
##
## ARIMA(2,1,2)(1,0,1)[12] with drift : Inf
## ARIMA(0,1,0) with drift : 1910.797
## ARIMA(1,1,0)(1,0,0)[12] with drift : 1924.82
## ARIMA(0,1,1)(0,0,1)[12] with drift : 1913.399
## ARIMA(0,1,0) : 1910.62
## ARIMA(0,1,0)(1,0,0)[12] with drift : 1921.764
## ARIMA(0,1,0)(0,0,1)[12] with drift : 1911.378
## ARIMA(0,1,0)(1,0,1)[12] with drift : 1918.505
## ARIMA(1,1,0) with drift : 1913.599
## ARIMA(0,1,1) with drift : 1912.805
## ARIMA(1,1,1) with drift : 1915.305
##
## Now re-fitting the best model(s) without approximations...
##
## ARIMA(0,1,0) : 1914.516
##
## Best model: ARIMA(0,1,0)
#Ajuste del modelo
#La comparación entre la línea azul demanda observada y la anaranjada que es la serie estimada por el modelo automático evidencia un buen ajuste, ya que ambas se superponen de manera cercana a lo largo del periodo 2000-2023,indicando que el modelo logra reproducir con precisión el comportamiento real de la demanda energética en Sincelejo, capturando tanto su tendencia descendente como las fluctuaciones de corto plazo, sin presentar desviaciones significativas.
demanda_energy <- demanda_energy %>%
mutate(resid=arima_auto$residuals,
demanda_est=as.numeric(demanda_obs-resid))%>%
select(demanda_obs,demanda_est,Fecha)
ts_plot(demanda_energy, slider = T ,
title ="Demanda promedio mensual de energia en Sincelejo \n normal y ajustada\n 2000-2023", ylab("KWh"), xlab("años"))
#histograma de errores
#El análisis de normalidad de los residuos muestra que estos se concentran en torno a cero y mantienen una forma aproximadamente simétrica, entonces reflejan un comportamiento cercano al de una distribución normal,asimismo, en el gráfico Q-Q se observa que los puntos siguen de manera adecuada la línea de referencia en la parte central, sin embargo en los extremos aparecen ligeras desviaciones que evidencian colas más pesadas, lo que se debe a que en las series de tiempo reales es habitual que los errores no se ajusten de forma perfecta a la normalidad, por lo tanto ,lo relevante es que no se presenten sesgos marcados ni patrones persistentes y de esta manera puede concluirse que la suposición de normalidad se cumple razonablemente y que el modelo ofrece un buen ajuste para describir la dinámica de la demanda de energía.
par(mfcol = c(1, 2))
hist(arima_auto$residuals)
qqnorm(arima_auto$residuals)
qqline(arima_auto$residuals, col = "pink")
#test de jarque bera
#El test de Jarque-Bera arroja un valor p menor a 0.05, lo que lleva a rechazar la hipótesis nula de normalidad,esto significa que los residuales no siguen una distribución normal, en concordancia con lo observado en el histograma y el QQ-plot, donde se apreciaban desviaciones en los extremos y colas más pesadas
jarque.bera.test(arima_auto$residuals)
##
## Jarque Bera Test
##
## data: arima_auto$residuals
## X-squared = 9670.1, df = 2, p-value < 2.2e-16
#pronostico
#Aunque los residuos del modelo no cumplen con el supuesto de normalidad, esto no invalida su uso para pronóstico, ya que lo esencial es que se comporten como ruido blanco, es decir, sin autocorrelación y con varianza constante,la falta de normalidad afecta principalmente la validez de los p-values y la inferencia sobre los parámetros, pero el modelo sigue siendo útil para describir y proyectar la dinámica de la serie.
furval<-forecast(arima_auto,h=5,level = c(0.95))
furval
## Point Forecast Lo 95 Hi 95
## Oct 2023 229.9245 216.1741 243.6749
## Nov 2023 229.9245 210.4785 249.3705
## Dec 2023 229.9245 206.1081 253.7409
## Jan 2024 229.9245 202.4237 257.4253
## Feb 2024 229.9245 199.1776 260.6714
#grafica de la serie
#El pronóstico para los cinco meses siguientes muestra una línea horizontal plana, característica común en los modelos de caminata aleatoria,lo que indica que se espera que los valores de la serie se mantengan en el nivel del último dato observado, lo cual sugiere estabilidad en la demanda de energía en el período analizado, sin cambios bruscos que requieran ajustes inmediatos en la planificación o en la oferta.Sin embargo, el intervalo de confianza se ensancha progresivamente a medida que se avanza en la predicción, reflejando el aumento de la incertidumbre asociada a factores económicos externos, estacionales o de comportamiento de los consumidores, indicando que, aunque la tendencia central se mantiene estable, los valores reales podrían desviarse moderadamente de la predicción.
plot(furval)
#Bibliografia
#Box, G. E. P., & Jenkins, G. M. (1976). Time series analysis: Forecasting and control. Holden-Day.
#Dickey, D. A., & Fuller, W. A. (1979). Distribution of the estimators for autoregressive time series with a unit root. Journal of the American Statistical Association, 74(366), 427–431. https://doi.org/10.2307/2286348
#Engle, R. F. (1982). Autoregressive conditional heteroscedasticity with estimates of the variance of United Kingdom inflation. Econometrica, 50(4), 987–1007. https://doi.org/10.2307/1912773
#Gujarati, D. N., & Porter, D. C. (2010). Econometría (5.ª ed.). McGraw-Hill.
#Hamilton, J. D. (1994). Time series analysis. Princeton University Press.
#Unidad de Planeación Minero Energética – UPME. (2015). Estudio para determinar la vulnerabilidad y las opciones de adaptación del sector energético colombiano frente al cambio climático. Ministerio de Minas y Energía.