Caso de Estudio 5 - Análisis en la Producción Anual de Energias Renovables en México

Héctor Leal, Luis Marín, José Orozco, Aldo Mendívil

24/3/2022

Análisis en la Producción Anual de Energías Renovables en México

El sector energético de México es dominado por las fuentes no renovables de energía, esto ha jugado un papel decisivo para el desarrollo económico de México por su influencia directa en el apartado productivo del país. Toda la sociedad requiere energía, pero es importante señalar que la producción y el uso de energía tiene una incidencia en el medio ambiente.

Imágen Ilustrativa 1

Las fuentes energéticas de mayor impacto al ambiente son el carbón mineral y los hidrocarburos los cuales afectan principalmente a los cuerpos de agua, suelos y vida silvestre, así como a la salud humana; he aquí la importancia de usar energías renovables.

Energías Renovables

Las fuentes de energía renovable se definen como la energía disponible a partir de procesos permanentes y naturales, con posibilidades técnicas de ser explotadas económicamente, el Balance Nacional de Energía considera fuentes de energía renovables a la hidroenergía, geoenergía, energía eólica y biomasa; el biogás.

Energías No Renovables

La fuentes de energía no renovables son aquellas que se extraen de los depósitos geológicos que se formaron a partir de biomasa, así como los combustibles secundarios producidos a partir de un combustible fósil.

Análisis de series de tiempo (TSA)

En el siguiente análisis de series de tiempo se analizará la variación anual en la generación de energías renovables, la cual muestra el cambio en la generación de energía renovable en relación con el año anterior, medido en Tera vatios-hora.

También generaremos un modelo que intente predecir el comportamiento de la generación de energía y posteriormente evaluaremos su exactitud.

Nota: Los datos representan la suma de la energía hidroeléctrica, solar, eólica, geotérmica, undimotriz y mareomotriz, y bioenergía de México.

Datos y Paquetes

Importación de paquetes

Los paquetes a utilizar son los siguientes:

library(pacman)
p_load("tidyverse", "lubridate", "forecast", "TTR", "MLmetrics", "tseries", "fpp", "TSstudio", "xfun", "plotly")

Datos

Los datos a utilizar son proporcionados por la ágina Our World In Data (Nuestro mundo en Datos) que puede accederse a través del siguiente, Enlace la cual provee datos de diversos indicadores, de los diferentes paises alrededor del mundo, pero en este caso nos enfocaremos en México y la variación anual de las energias renovables.

Los datos principales seran importados desde el archivo energiaMexico.csv, el cual fue descargado del sitio anteriormente mencionado.

dataEnergiaMexico <- read_csv("energiaMexico.csv")
## Rows: 54 Columns: 4
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (2): Entity, Code
## dbl (2): Year, Renewables
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.

Importando y graficando datos

La siguiente serie de tiempo nos muestra la variacion del uso de energias renovables medido en Tera vatios-hora, desde el año 1966 hasta el 2019 en todo mexico, esta suma del uso de energias abarca desde la energia solar, eólica, geotérmica,etc.

datos<-ts(dataEnergiaMexico$Renewables , frequency = 2 ,start = c(1966, 1),end = c(2019,1))
e <- plot_ly(data = dataEnergiaMexico, x = dataEnergiaMexico$Year , y = dataEnergiaMexico$Renewables , mode = 'lines', type="scatter", name="Energías Renovables") %>%  layout(title = 'Generación de Energías Renovables México' ,
         yaxis = list(zeroline = FALSE, title = 'Tera Vatios-Hora'),
         xaxis = list(zeroline = FALSE, title = 'Año'), legend = list(font = list(size = 15)))
e

Buscando datos Faltantes

anyNA(datos)
## [1] FALSE

Esto signigica que no tengo ningún valor faltante.

Descomposición de la serie de tiempo

La descomposición de series de tiempo es usada para identificar componentes, reensamblando las partes para construir un pronóstico. Por ende, se procederá a realizar la descomposición de la serie de tiempo anteriormente realiza esto con el fin de conocer los diversos componentes de la serie y la forma en que estos se relacionan entre sí.

datos_dc <- datos %>%
  decompose(type="multiplicative") %>%
  autoplot()
datos_dc

  1. Usando un modelo de suavizado exponencial
  • Validación cruzada

La validación cruzada es una técnica para evaluar modelos de ML mediante el entrenamiento de varios modelos de ML en subconjuntos de los datos de entrada disponibles y evaluarlos con el subconjunto complementario de los datos.

test_datos <- tail(datos, 11) # 20 porciento de los datos para pruebas
train_datos <- head(datos, length(datos)-11) # 80 porciento de los datos para entrenamiento
  • Holt-Winters
datos_ses <- HoltWinters(train_datos, seasonal = "multiplicative", )
## Warning in HoltWinters(train_datos, seasonal = "multiplicative", ): optimization
## difficulties: ERROR: ABNORMAL_TERMINATION_IN_LNSRCH
datos_ses
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component.
## 
## Call:
## HoltWinters(x = train_datos, seasonal = "multiplicative")
## 
## Smoothing parameters:
##  alpha: 0.3
##  beta : 0.1
##  gamma: 0.1
## 
## Coefficients:
##             [,1]
## a  -6.645383e-04
## b  -2.882748e-03
## s1  3.637485e+01
## s2  1.004569e+03

Forecasting

datos_forecast <- forecast(object = datos_ses, h = 11)

Visualizando resultados

datos %>%
  autoplot(series = "Datos Reales") +
  autolayer(datos_forecast$fitted, series = "Datos Entrenamiento") +
  autolayer(datos_forecast$mean , series = "Datos de Prueba") +
  theme_minimal()
## Warning: Removed 2 row(s) containing missing values (geom_path).

Evaluar la precisión del modelo

eval_ses <- accuracy(datos_forecast, test_datos)
eval_ses
##                     ME     RMSE      MAE       MPE     MAPE      MASE
## Training set  1.496986 16.44708 12.02487 473.03479 623.0552 0.8509709
## Test set     12.616405 22.11698 18.88570  59.44102 176.9720 1.3364951
##                    ACF1 Theil's U
## Training set -0.2278151        NA
## Test set     -0.4370722  2.048954

Deacuerdo con la prueba de precisión, el modelo tiene un error medio del 176% Por lo que nuestro modelo no es capaz de predecir el comportamiento de la generación de energía

Utilizando el modelo SARIMA o ARIMA

Los modelos SARIMA captan el comportamiento puramente estacional de una serie, en forma similar, como hemos visto, se realiza para la componente regular o no estacional. Una serie con influencia solamente por la componente estacional puede ser descrito por un modelo SARIMA (P,D,Q)

Empezaremos haciendo una prueba al conjunto de datos

adf.test(datos)
## Warning in adf.test(datos): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  datos
## Dickey-Fuller = -6.3293, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

Deacuerdo con el valor de P, los datos no son estacionarios

Análisis de ajuste

datos_diff <- datos

datos_diff %>%
  autoplot()

##Analizando la serie de tiempo por medio de un modelo ARIMA

datos_auto <- auto.arima(y = train_datos, seasonal = T)
summary(datos_auto)
## Series: train_datos 
## ARIMA(1,0,0)(1,0,0)[2] with non-zero mean 
## 
## Coefficients:
##           ar1     sar1    mean
##       -0.5603  -0.5238  2.1217
## s.e.   0.0893   0.0908  0.4057
## 
## sigma^2 = 90.19:  log likelihood = -351.14
## AIC=710.29   AICc=710.73   BIC=720.55
## 
## Training set error measures:
##                      ME     RMSE      MAE      MPE     MAPE      MASE
## Training set 0.01953984 9.347419 6.799857 63.41859 95.99005 0.4812093
##                    ACF1
## Training set 0.03216383

Visualizacion grafica de los datos reales versus el modelo SARIMA

train_datos %>%
  autoplot(series= "Datos Reales") +
  autolayer (datos_auto$fitted, series = "SARIMA auto") +
  theme_minimal()

Analisis de los cambios diferenciales en la serie de tiempo

tsdisplay(datos_diff)

Conclusión

Como pudimos observar a lo largo del análisis, incluso utilizando dos métodos diferentes, es difícil de predecir el comportamiento de la generación de energías renovables en México, pues este se comporta de manera errática, pues puede verse afectado por factores ambientales, sociales, económicos y políticos, lo que lleve a una mayor o menor generación de energía respecto al año anterior, por lo que concluimos que la generación de energías renovables en México no depende de un tiempo en específico.

Descargas

Descarga este código

xfun::embed_file("A8U1_Equipo6.Rmd")

Download A8U1_Equipo6.Rmd

Datos Energia

xfun::embed_file("energiaMexico.csv")

Download energiaMexico.csv

Referencias Electrónicas

Secretaría de Energía (2018) “Balance Nacional de Energía 2009, 2018”. Secretaría de Energía. http://dgeiawf.semarnat.gob.mx:8080/ibi_apps/WFServlet?IBIF_ex=D2_R_ENERGIA01_01&IBIC_user=dgeia_mce&IBIC_pass=dgeia_mce