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.