Ejemplo: Análisis de la demanda eléctrica mensual de Australia

Para el análisis de series de tiempo en R, se puede almacenar la información en el objeto ts empleando la función ts(). El empleo basico es de la siguiente forma:

serie <- ts(data, frequency= ,start=)

(Tipo de dato, Frecuencia, Start-ejemplo)

(Anual, 1, 2000)

(Trimestral, 4, c(2000,2))

(Mensual,12,c(2000,9))

(Diario, 7 o 365.25 1 o, c(2000,234))

(Semanal, 52.18, c(2000,23))

Se instala la libreria fpp2, que contiene:

-Datos de series de tiempo (ejemplos)

-La libreria forecast, que contiene funciones de pronóstico

-La libreria ggplot2, que contiene funciones para graficos

-Se instala y se carga mediante install.packages(“fpp2”)y library(fpp2) respectivamente

Análisis de datos

Para el análisis de datos, esta libreria fpp2 nos permite emplear las siguientes funciones:

-autoplot(), para graficar la serie de tiempo

-ggseasonplot(), para graficar la estacionalidad de una serie de tiempo

-ggsubseriesplot(), para graficar subseries

-ggAcf(), para graficar la autocorrelación, donde:

*Tiene valores positivos entonces indica tendencia

*Tiene valores positivos y negativos indica estacionalidad

*Valores dentro de los límites indican ruido

-stl(), permite realizar una descomposición de estacionalidad y tendencia.

Pronóstico Para el pronóstico, podemos emplear las siguientes funciones:

-arima(), modelo arima empleando indices

-auto.arima(), modelo arima, calcula los indices automaticamente

Ajuste del modelo Para ajustar el modelo podemos emplear las siguientes funciones:

fitted(), obtiene pronostico con la data historica

accuracy(), determina errores de pronostico

Ahora, hagamos la práctica con datos de la demanda mensual de energia eléctrica en Australia desde enero 1980 hasta agosto 1995:

Para este ejemplo se cargan los datos desde excel.

#libreriafpp2
library(fpp2)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## ── Attaching packages ────────────────────────────────────────────── fpp2 2.5 ──
## ✔ ggplot2   3.4.2     ✔ fma       2.5  
## ✔ forecast  8.21      ✔ expsmooth 2.3
## 
library(readxl)
base <- read_excel("D:/Demanda_electricidad_mensual.xlsx")
data <- base[1:180,]
test <- base[181:188,]

#creación de la serie de tiempo histórica

data <- ts(data$ENER, frequency=12,start=1980)

#creación de la serie de tiempo para validación
test <- ts(test$ENER, frequency=12,start=1995)

#Grafico de datos
autoplot(data)+xlab("Tiempo")+ylab("GWh")+ggtitle("Demanda en el tiempo")

ggseasonplot(data)+ggtitle("Demanda agrupada por estaciones")

ggsubseriesplot(data)+ggtitle("Demanda por estación")

Análisis de patron de la serie de tiempo

autoplot(stl(data, s.window=7))

Pronóstico mediante auto.arima

modelo1 <- auto.arima(data)
modelo1
## Series: data 
## ARIMA(0,1,1)(1,1,2)[12] 
## 
## Coefficients:
##           ma1     sar1     sma1     sma2
##       -0.6867  -0.7071  -0.0336  -0.5744
## s.e.   0.0548   0.4096   0.4030   0.3035
## 
## sigma^2 = 48945:  log likelihood = -1142.26
## AIC=2294.51   AICc=2294.89   BIC=2310.1
#grafico de datos
autoplot(forecast(modelo1),h=16)+ xlab("Tiempo") + ylab("Demanda")+ autolayer(test, serie="Real")

#análisis del modelo
autoplot(data)+    
    autolayer(fitted(modelo1), series="Ajuste")

accuracy(modelo1)
##                     ME     RMSE      MAE        MPE     MAPE      MASE
## Training set -4.256141 210.5291 157.8358 -0.0486745 1.399429 0.3660768
##                    ACF1
## Training set -0.0261825
accuracy(modelo1)
##                     ME     RMSE      MAE        MPE     MAPE      MASE
## Training set -4.256141 210.5291 157.8358 -0.0486745 1.399429 0.3660768
##                    ACF1
## Training set -0.0261825
checkresiduals(modelo1)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,1)(1,1,2)[12]
## Q* = 31.738, df = 20, p-value = 0.04618
## 
## Model df: 4.   Total lags used: 24

PARA TENER EN CUENTA:

El MAE (Mean Absolute Error) y el RMSE (Root Mean Squared Error) son dos medidas de evaluación de errores utilizadas comúnmente en la evaluación de modelos de predicción o regresión.

El MAE es una medida de la magnitud promedio de los errores en una predicción. Se calcula como la media de los valores absolutos de las diferencias entre las predicciones y los valores observados. Un MAE bajo indica que el modelo está produciendo predicciones precisas.

El RMSE, por otro lado, es una medida de la magnitud promedio de los errores al cuadrado en una predicción. Se calcula como la raíz cuadrada de la media de las diferencias al cuadrado entre las predicciones y los valores observados. Un RMSE bajo también indica que el modelo está produciendo predicciones precisas, pero penaliza más los errores grandes que el MAE.

En resumen, el MAE y el RMSE son medidas útiles para evaluar el desempeño de los modelos de predicción o regresión.

El MAE es útil cuando los errores tienen una distribución simétrica y penaliza igualmente los errores positivos y negativos.

El RMSE es más adecuado cuando los errores tienen una distribución asimétrica y penaliza más los errores grandes.

Ambas medidas se pueden utilizar para comparar diferentes modelos o para ajustar los parámetros del modelo para mejorar la precisión de las predicciones.


By Julieth Cerón
Predición Económica y Big Data 2023