Caso de Estudio 5 - Análisis del consumo de gas anual en México

Equipo 4: Carlos Angulo, Fernando Bocardo, Josue Flores, Oscar Roman

24/3/2022

Análisis del consumo de gas anual en México

El GLP es uno de los energéticos más utilizados en México, al punto de ser identificada como la nación con el mayor consumo anual. El uso del gas LP es fundamental para los consumidores mexicanos. A partir de su uso en los hogares se puede cocinar alimentos y calentar agua.

Gas licuado de petróleo(GLP)

¿Qué es el gas LP? El gas licuado de petróleo, conocido comúnmente como gas LP, es un combustible que proviene de la mezcla de dos hidrocarburos principales: el propano y el butano. Se le conoce como gas licuado porque se encuentra en estado líquido y porque se obtiene principalmente por medio de un proceso de refinación del petróleo.

Análisis de series de tiempo (TSA)

A continuacion se mostrara un análisis de series de tiempo el cual nos permite analizar el comportamiento del consumo anual del GLP en México de 1966 hasta 2019.

Datos y Paquetes

Importación de paquetes

Los paquetes que se utilizaron son los siguientes:

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

Datos

Los datos a utilizar son sacadas de la siguiente pagina: https://ourworldindata.org/country/mexico

dataGasMexico <- read_csv("annual-change-gas_mexico.csv")
## Rows: 54 Columns: 4
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (2): Entity, Code
## dbl (2): Year, Gas
## 
## 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 grafica muestra la serie de tiempo del consumo anual que tiene el Gas LP en México, empezando del año 1966 hasta el 2019

datos<-ts(dataGasMexico$Gas, frequency = 2 ,start = c(1966, 1),end = c(2019,1))
e <- plot_ly(data = dataGasMexico, x = dataGasMexico$Year , y = dataGasMexico$Gas, mode = 'lines', type="scatter", name="Gas") %>%  layout(title = 'Consumo de gas en México' ,
         yaxis = list(zeroline = FALSE, title = 'TWh'),
         xaxis = list(zeroline = FALSE, title = 'Año'), legend = list(font = list(size = 15)))
e

Buscando datos Faltantes

anyNA(datos)
## [1] FALSE

Esto significa no hay valores faltante

Descomposición de la serie de tiempo

La descomposición de series de tiempo deconstruye una serie de tiempo en varios componentes, cada uno de los cuales representa una de las categorías subyacentes de patrones

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

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

La validación cruzada o cross-validation es una técnica utilizada para evaluar los resultados de un análisis estadístico y garantizar que son independientes de la partición entre datos de entrenamiento y prueba.

test_datos <- tail(datos, 11)  #20% para pruebas
train_datos <- head(datos, length(datos)-11) #80% 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  22.3379643
## b   0.6786307
## s1  1.7578945
## s2  0.7117851

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.232047 21.83827 16.17108 -508.42008 657.0695 1.047354
## Test set     -6.110332 26.56957 23.67103  -89.67134 128.8620 1.533103
##                    ACF1 Theil's U
## Training set  0.4178301        NA
## Test set     -0.6841288 0.9019048

Viendo la prueba con los datos, el modelo tiene un promedio de error del 128%, por lo que este no es capaz de predecir el consumo del gas

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)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  datos
## Dickey-Fuller = -3.409, Lag order = 4, p-value = 0.0567
## alternative hypothesis: stationary

De acuerdo con el valor de P, los datos no son estacionarios

Análisis de ajuste

datos_diff <- datos

datos_diff %>%
  autoplot()

Analisis de ajuste

datos_auto <- auto.arima(y = train_datos, seasonal = T)
summary(datos_auto)
## Series: train_datos 
## ARIMA(1,0,1) with non-zero mean 
## 
## Coefficients:
##          ar1      ma1     mean
##       0.7965  -0.5511  13.5557
## s.e.  0.1243   0.1645   3.5062
## 
## sigma^2 = 263.9:  log likelihood = -402.43
## AIC=812.87   AICc=813.31   BIC=823.13
## 
## Training set error measures:
##                     ME     RMSE      MAE       MPE     MAPE      MASE
## Training set 0.1897213 15.99028 12.08065 -840.2523 937.6974 0.7824285
##                     ACF1
## Training set -0.03206988

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

En conclusión creo que es difícil predecir estos datos solo con esto ya que depende de muchos otros factores como lo podrían ser la economía, población e incluso factores sociales. Esto podría hacer que el consumo de gas suba a baje respecto al año anterior.

Descarga este código

xfun::embed_file("Caso de Estudio 5.Rmd")

Download Caso de Estudio 5.Rmd