Caso de estudio: Método de Holt-Winters
Las técnicas de pronóstico exponencial permiten obtener excelentes
aproximaciones de las series de tiempo. En general, estas técnicas asignan un
mayor peso a las observaciones recientes y un menor peso a las observaciones
más antiguas. A estas técnicas también se les conoce cómo técnicas de
suavizado exponencial, y tienen como características importantes que son
intuitivas, computacionalmente eficientes y generalmente son aplicables a una
gran cantidad de series de tiempo. Las técnicas de suavizado exponencial se
utilizan dependiendo de las componentes básicas de la serie de acuerdo a la
siguiente relación:
● Suavizado exponencial simple: Se utiliza para datos sin tendencia o
estacionalidad.
● Método de Holt: Se utiliza para datos con tendencia, pero sin
estacionalidad.
● Método de Holt-Winters: Se utiliza para datos con tendencia y
estacionalidad.
El método de Holt-Winters es un método de pronóstico de triple exponente
suavizante, que tiene como ventaja que puede adaptarse a medida que nueva
información real está disponible. Como se mencionó en la relación anterior,
otra gran ventaja del método Holt-Winters es que este considera nivel,
tendencia y estacionalidad [1].
Caso planteado
A continuación, se presenta un caso propuesto de una aplicación directa a los
negocios. Consideremos como ejemplo a una empresa que requiere estimar
sus ingresos en ventas de todo el año siguiente. El objetivo de la predicción
será decidir si se invertirá una fuerte suma de dinero a la creación de un nuevo
departamento para la empresa, o será necesario esperar un poco más de
tiempo.
Consideremos los datos de ingresos por cada mes del año de acuerdo a la
serie de tiempo mostrada en la Figura 1.
Figura 1. Serie temporal de las ventas de 2008 a 2012.
El primer paso es analizar la serie para hacer un bosquejo breve de la
tendencia de la serie de tiempo. El Código 1 muestra la manera de realizar
dicho bosquejo en R. La Figura 2 muestra la tendencia estimada en color azul,
y en una sombra gris la variabilidad de la serie.
#----------------------------------------------------------------------------------
#Código 1. Gráfica de la serie de tiempo y su tendencia estimada.
library(readr)
library(dplyr)
library(forecast)
options(repr.plot.width = 6, repr.plot.height = 3)
ggplot(Info, aes(x = Mes, y = Ventas)) + geom_line() +
geom_smooth(method = 'lm') +labs(x = "Fecha", y = "Ventas mensuales")
Ventas.ts = ts(Ventas, start = c(2013,1), frequency = 12)
print(Ventas.ts)
Figura 2. Estimación de la tendencia y variabilidad de la serie de tiempo.
El segundo paso es la descomposición de la serie en sus tres componentes: la
tendencia, la estacional y su componente aleatoria. El Código 2 muestra la
manera de descomponer la serie en R. la instrucción es descompose. La
tendencia se calcula utilizando la media móvil, el efecto estacional se calcula
promediando los valores de cada unidad de tiempo para todos los periodos
(por ejemplo, todos los meses de enero si la serie es mensual) y luego
centrando el resultado. Finalmente, los residuos se obtienen restando a la
serie observada las dos componentes anteriores. Ojo!!, La descomposición solo
es totalmente adecuada si se dispone de un número completo de periodos (por
ejemplo, un múltiplo de 12 si la serie es mensual).
#----------------------------------------------------------------------------------
#Código 2. Descomposicion de la serie temporal
Ventas.ts.desc = decompose(Ventas.ts)
plot(Ventas.ts.desc,xlab='Año')
Figura 3. Descomposición de la serie temporal en tendencia, estacional y aleatorio.
La Figura 3 muestra el resultado de descomponer a la serie temporal. La
primera fila es la de la serie temporal observada, la segunda fila muestra a la
tendencia. En esta fila se observa que la serie no es estacionaria. La serie
presenta una tendencia a crecer semi-linealmente. De la tercera fila se
observa una estacionalidad marcada (las ventas aumentan cerca del final de
cada año). Además, la amplitud de las fluctuaciones en la fila cuatro
aumentaron con el tiempo, por lo que la variabilidad tampoco es constante.
Ya que la serie tiene tendencia y estacionalidad, se propone el método de
Holt-Winters para realizar la predicción solicitada, sin embargo, es necesario
estabilizar la variabilidad. Para estabilizar la variabilidad se utiliza el logaritmo.
Esta transformación funciona bien cuando la variabilidad es proporcional al
nivel de la serie, y este es el caso. El Código 3 muestra la manera de
transformar a la serie temporal por medio del logaritmo y como aplicar el
método Holt-Winters en R con la función HoltWinters.
#----------------------------------------------------------------------------------
Código 3. Estabilización de la variabilidad y Aplicación de Método Holt-Winters
VentasLog <- log(Ventas.ts)
VentasLogHW <- HoltWinters(VentasLog)
VentasLogHW
options(repr.plot.width = 6, repr.plot.height = 4) plot(VentasLogHW,main="Estimacion
Holt-Winters",xlab='Año',ylab='Observado/predicho')
Figura 4. Datos reales contra los estimados por Holt-Winters.
La Figura 4 muestra los datos observados y los datos predichos por el método
Holt-Winters mientras se sigue estimando. Finalmente, el Código 4 muestra la
manera de estimar los siguientes 12 meses con R y el paquete Forecast.
#----------------------------------------------------------------------------------
Código 4. Predicción del siguiente año
VentasAñoSig <- forecast(VentasLogHW, h=12)
plot(VentasAñoSig)
VentasAñoSig)
La Figura 5 muestra la estimación final para el siguiente año. En color azul se
muestra la serie estimada, sin embargo, debido a que existe un rango de error
en la estimación, es que se muestra una sombra en la predicción, la sombra
más angosta tiene por defecto un nivel de confianza del 80%, y la sombra de
mayor anchura tiene un nivel de confianza del 95%.
Figura 5. Predicción por Holt-Winters para el siguiente año.
Referencias
● (2019). Retrieved from
https://administration21.files.wordpress.com/2017/01/pronc3b3sticos-holtwinters-o
mr-nov2016.pdf