#Se instalan los paquetes “forecast” y “fpp2”, el primero es para aplicar métodos de pronóstico, el segundo y tercero son para crear gráficos interesantes.
#install.packages("forecast")
#install.packages("fpp2")
library(forecast)
## Warning: package 'forecast' was built under R version 4.0.5
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(fpp2)
## Warning: package 'fpp2' was built under R version 4.0.5
## -- Attaching packages ---------------------------------------------- fpp2 2.4 --
## v ggplot2 3.3.5 v expsmooth 2.3
## v fma 2.4
## Warning: package 'ggplot2' was built under R version 4.0.5
## Warning: package 'fma' was built under R version 4.0.5
## Warning: package 'expsmooth' was built under R version 4.0.5
##
library(ggplot2)
#Utilizamos la misma serie de tiempo que en el capítulo 4 sección 4.6 (Suavización exponencial simple)
ventas<-c(125,132,155,135,152,147,140,154,153,177,179)
#Definimos la variable “ventas” y aplicamos la función de series de tiempo “ts” comenzando en el periodo 1 con frecuencia 1, es decir, en este caso mes a mes.
ventas<-ts(ventas,start=1, frequency=1)
ventas
## Time Series:
## Start = 1
## End = 11
## Frequency = 1
## [1] 125 132 155 135 152 147 140 154 153 177 179
#Graficamos la serie de tiempo
plot(ventas)
#Definimos la variable Fit_ses para aplicar la función de ses con un alpha de 0.1. Se obtiene el pronóstico para periodo 12 y los intervalos de predicción. El pronóstico para el periodo 12 es de 145.2211 con los respectivos intervalos de predicción Lo (Bajo) y Hi (Alto)
fit_ses<-ses(ventas,h=1, initial ="simple", alpha=0.1)
fit_ses
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 12 145.2211 116.764 173.6782 101.6997 188.7425
#Se realiza un resumen de modelo con alpha=0.1, incluye algunos métricos de la exactitus en el pronóstico, por ejemplo el MAPE.
summary(fit_ses)
##
## Forecast method: Simple exponential smoothing
##
## Model Information:
## Simple exponential smoothing
##
## Call:
## ses(y = ventas, h = 1, initial = "simple", alpha = 0.1)
##
## Smoothing parameters:
## alpha = 0.1
##
## Initial states:
## l = 125
##
## sigma: 22.2052
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 18.38283 22.20521 18.38283 11.54382 11.54382 1.531902 0.1629924
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 12 145.2211 116.764 173.6782 101.6997 188.7425
#Graficamos los históricos y el punto de pronóstico(145.2211)
plot(fit_ses)
#Definimos la variable Fit_ses para aplicar la función de ses con un alpha de 0.7. Se obtiene el pronóstico para periodo 12 y los intervalos de predicción. El pronóstico para el periodo 12 es de 176.1714 con los respectivos intervalos de predicción Lo (Bajo) y Hi (Alto). El resultado obtenido es el mismo que obtuvimos en la sección 4.6 de este libro corriéndolo manualmente.
fit_ses2<-ses(ventas,h=1, initial ="simple", alpha=0.7)
fit_ses2
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 12 176.1714 159.2721 193.0706 150.3262 202.0165
#Se obtiene un resumen de este método con la serie de tiempo dada,lo reelevante es observar el MAPE=6.72, se minimiza con respecto a los otros parámetros tomados alpha=0.1 y alpha=0.90
summary(fit_ses2)
##
## Forecast method: Simple exponential smoothing
##
## Model Information:
## Simple exponential smoothing
##
## Call:
## ses(y = ventas, h = 1, initial = "simple", alpha = 0.7)
##
## Smoothing parameters:
## alpha = 0.7
##
## Initial states:
## l = 125
##
## sigma: 13.1865
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 6.645631 13.18654 10.42727 3.968638 6.723464 0.8689388 -0.3755289
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 12 176.1714 159.2721 193.0706 150.3262 202.0165
#Graficamos los históricos y el punto de pronóstico (176.1714)
plot(fit_ses2)
#Definimos la variable Fit_ses para aplicar la función de ses con un alpha de 0.9. Se obtiene el pronóstico para periodo 12 y los intervalos de predicción. El pronóstico para el periodo 12 es de 178.5597 con los respectivos intervalos de predicción Lo (Bajo) y Hi (Alto).
fit_ses3<-ses(ventas,h=1, initial ="simple", alpha=0.9)
fit_ses3
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 12 178.5597 161.3105 195.8089 152.1793 204.94
summary(fit_ses3)
##
## Forecast method: Simple exponential smoothing
##
## Model Information:
## Simple exponential smoothing
##
## Call:
## ses(y = ventas, h = 1, initial = "simple", alpha = 0.9)
##
## Smoothing parameters:
## alpha = 0.9
##
## Initial states:
## l = 125
##
## sigma: 13.4596
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 5.410068 13.45962 10.58351 3.164563 6.923181 0.8819592 -0.5116393
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 12 178.5597 161.3105 195.8089 152.1793 204.94
#Graficamos los históricos y el punto de pronóstico (178.5597)
plot(fit_ses3)
#Correr el modelo mediante un alpha automático que considera el menor error en las métricas de exactitud en el pronóstico, simplemente no se define el parámetro alpha.
fit_ses4<-ses(ventas,h=1, initial ="simple")
fit_ses4
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 12 176.6382 159.7491 193.5274 150.8085 202.4679
#Se obtiene un resumen de este método con la serie de tiempo dada,lo relevante es que el alpha se calcula en automatico.
summary(fit_ses4)
##
## Forecast method: Simple exponential smoothing
##
## Model Information:
## Simple exponential smoothing
##
## Call:
## ses(y = ventas, h = 1, initial = "simple")
##
## Smoothing parameters:
## alpha = 0.7282
##
## Initial states:
## l = 125
##
## sigma: 13.1787
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 6.446426 13.17866 10.43875 3.838956 6.745867 0.8698956 -0.3957395
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 12 176.6382 159.7491 193.5274 150.8085 202.4679
#Graficamos los históricos y el punto de pronóstico (176.6382)
plot(fit_ses4)
#Fuente: Elaboración propia