Suavización exponencial simple con tendencia:
Suavización exponencial de Brown y de Holt
Grupo 1
Suavización exponencial simple con tendencia
Esta técnica de suavizacion se basa en la atenuación de los valores de la serie de tiempo, obteniendose el valord e estos de manera exponenecial; es decir, los datos se ponderan, dandole un amyor peso a las observaciones recientes y menor peso a las mas antiguas. Al ams reciente se le otorga el valor de \(\alpha\), a la observación inmediata anterior se le otorga \(\alpha(1-\alpha)\), a la siguiente observacion inmediata anterior se le da el peso de ponderación de \(\alpha(1-\alpha)^2\) y asi sucesivamente hasta completar el nuemro d evalores observados en la serie de tiempo, todo este proceso nos conlleva a la siguiente expresion para realizar el cálculo de la Suavización Exponencial Simple (SES):
\[P_{t+1}=\alpha*Y_t+\alpha*(1-\alpha)*Y_{t-1}+\alpha*(1-\alpha)^2*Y_{t-2}+...+\alpha*(1-\alpha)^{n-1}*Y_{t-(n-1)}\]
Una expresión equivalente es:
\[P_{t+1}=\alpha*Y_t+(1-\alpha)*P_{t}\]
De donde se tiene que:
\(Y_t:\) Es el valor de la serie en el periodo \(t\).
\(P_{t+1}:\) Es el pronostico o prediccion para el periodo \(t+1\)
\(P_{t}:\) Es el pronostico o prediccion en el periodo \(t\)
\(\alpha:\) Es el factor de suavización, (\(0\leq \alpha \leq1\))
El valor de la serie suavizada en el periodo \(t+1\) es igual a \(\alpha\) veces el valor de la serie de tiempo en el periodo \(t\), mas \(1-\alpha\) veces el valor predicho en el periodo \(t\).
Es por ello que se requiere la existencia de un valor inicial \(P_0\), el cual puede ser un promedio de los datos anteriores o simplemente el primer valro de la serie
Método de suavizado exponencial Doble
Método de Brown
El método de suavización exponencial de Brown (Pindyck, 2001) produce una serie de datos suavizada a partir de una serie de datos históricos, ya que la nueva serie está constituida por promedios de valores de la serie original. Como en el caso de la suavización exponencial simple es muy importante fijar de manera de correcta el parámetro \(\alpha\), entre 0 y 1.
Se menciona una regla práctica: “Si los datos presentan fuertes fluctuaciones o gran aleatoriedad se deben usar valores de alpha cercanos a 0; es decir, que si el parámetro de suavización alpha está próximo a cero, el valor inicial de la serie influirá durante muchos períodos de tiempo. Por el contrario, con valores de alpha próximos a uno, desaparecerá rápidamente la influencia del valor histórico” (Pérez, 2005).
En este método se calcula primero una suavizacion exponencial simple para cada valor de la serie y luego se vuelve a calcular otra suavizacion expoencial sobre los datos resultantes de la primera:
Suavización Exponencial Simple
\[P_{t}=\alpha*Y_t+(1-\alpha)*P_{t-1}\]
Suavización Exponencial Doble
\[Y'_{t}=\alpha*P_t+(1-\alpha)*Y'_{t-1}\]
Donde:
\(P_t:\) Es el valor atenuado según el modelo de SES en el tiempo \(t\).
\(P_{t-1}:\) Es el valor atenuado según el modelo de SES en el tiempo \(t-1\).
\(Y'_{t}:\) Es el valor pronosticado sobre la segunda suavizaciónexpoencial en el tiempo \(t\)
\(Y'_{t-1}:\) Es el valor pronosticado sobre la segunda suavizaciónexpoencial en el tiempo \(t-1\)
\(Y_{t}:\) Es el valor experimental de los datos de la serie temporal \(t+1\)
\(\alpha:\) Constante de suavización exponencial, (\(0\leq \alpha \leq1\))
Pronóstico Futuro
Par realizar este pronóstico, se utiliza una interpolación lineal en la que se contempla la compoennete de tendencia (Segunda Suavización Exponencial) de la siguiente forma:
\[\widehat{Y}_{t+j}=a_t+j*(b_j)\]
Considerando:
\[a_t=2*P_t-Y'_t\]
\[b_t=(\frac{\alpha}{1-\alpha})*(P_t-Y't)\]
De donde tenemos:
\(\widehat{Y}_{t+j}:\) Valor pronosticado agregando la tendencia lineal para el periodo \(t+j\)
\(a_t:\) Ordenada de origen para modelo lineal en el tiempo \(t\)
\(b_t:\) Pendiente de tendencia lineal en el periodo t
\(j:\) Cantidad de periodos a pronosticas (\(j=1;2;3;...\))
\(\alpha:\) es la única variable que debe ser determinada de manera experimental sobre los valores disponibles en los datos de la serie temporal
Ejemplo Aplicativo - Brown
Se ha utilizado la siguiente serie de datos trimestrales con respecto a las ventas en miles de dolares de un producto en el periodo 2010-2015
Ajuste suavizado exponencial Doble
## datos
x <-ts(data = c(13.98, 16.81, 16.60, 17.86,
17.10, 19.80, 19.79, 22.94,
20.72, 24.02, 23.56, 25.43,
23.43, 24.70, 27.56, 28.63,
29.86, 27.42, 28.59, 30.41,
33.41, 28.80, 34.96, 34.69),
freq = 4,
start = c(2010, 1))
x.fit <- window(x, start = c(2010, 1), end = c(2014, 4))
x.fit
## Qtr1 Qtr2 Qtr3 Qtr4
## 2010 13.98 16.81 16.60 17.86
## 2011 17.10 19.80 19.79 22.94
## 2012 20.72 24.02 23.56 25.43
## 2013 23.43 24.70 27.56 28.63
## 2014 29.86 27.42 28.59 30.41
library(stats)
m1 <- HoltWinters(x,
alpha = 0.15,
beta = FALSE,
gamma = FALSE)
m2 <- HoltWinters(x,
alpha = 0.99,
beta = FALSE,
gamma = FALSE)
m3 <- HoltWinters(x,
alpha = NULL,
beta = FALSE,
gamma = FALSE)
m1;m2;m3
## Holt-Winters exponential smoothing without trend and without seasonal component.
##
## Call:
## HoltWinters(x = x, alpha = 0.15, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.15
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 29.49612
## Holt-Winters exponential smoothing without trend and without seasonal component.
##
## Call:
## HoltWinters(x = x, alpha = 0.99, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.99
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 34.69209
## Holt-Winters exponential smoothing without trend and without seasonal component.
##
## Call:
## HoltWinters(x = x, alpha = NULL, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.7080986
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 34.33259
Gráfica de ajuste.
options(repr.plot.width=10, repr.plot.height=6)
plot(x,
type = 'o',
lwd = 3,
ylim = c(13,35))
lines(m1$fitted[,1], col ="red", lwd=2)
lines(m2$fitted[,1], col ="green", lwd=2)
lines(m3$fitted[,1], col ="blue", lwd=2)
legend("topleft",
c("Serie Real","m1","m2","m3"),
lwd = c(3,2,2),
col = c('black','orangered2','green','blue'),
bty = "n")
grid()
Para evaluar un mejor modelo se presenta la sumatoria de errores al cuadrado. \(SSE = \sum_{t=1}^{T} {e_{t}^2}\) definido para los modelos cpon alpha variante
## [1] 534.5356
## [1] 141.1155
## [1] 124.3967
Para este caso el modelo ajustado automaticamente fue el mejor, esto se comprueba en el excel desarrollado y adjunto.
Pronostico suavizamiento exponencial
## 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
##
exp=ses(x,h=1,initial = "simple",alpha = NULL)
plot(exp,main = "Suavizado exponencial",xlab = "año",ylab = "miles")
##
## Forecast method: Simple exponential smoothing
##
## Model Information:
## Simple exponential smoothing
##
## Call:
## ses(y = x, h = 1, initial = "simple", alpha = NULL)
##
## Smoothing parameters:
## alpha = 0.7081
##
## Initial states:
## l = 13.98
##
## sigma: 2.2767
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 1.197619 2.276664 1.9037 4.745934 7.526428 0.5715958 -0.5239573
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2016 Q1 34.33257 31.4149 37.25023 29.87039 38.79475
Al analizar los modelos se debe recurrir a una evaluación en cuanto a los pesos de error que estos nos brinden, como es el caso de las metricas de precision ME, RMSE, MAE, MPE, etc.
Revisar el archivo excel Brown.xlsx
Método de suavizado exponencial de Holt
Holt (1957) amplió la suavización exponencial simple al suavización exponencial lineal para permitir la previsión de datos con tendencias. La suavización exponencial de Holt, es una técnica de pronóstico que extiende la suavización exponencial simple para incluir una componente de tendencia. El pronóstico para el método de alisamiento exponencial lineal de Holt se encuentra utilizando dos constantes de alisamiento, \(\alpha\) y \(\beta\) (con valores entre 0 y 1), y tres ecuaciones:
\[ \begin{align*} & \text{Nivel de Suavizacion:} \quad L_t = \alpha y_t + (1 - \alpha)(L_{t-1} + T_{t-1}) \\ & \text{Tendencia de Suavizacion:} \quad T_t = \beta(L_t - L_{t-1}) + (1 - \beta)T_{t-1} \\ & \text{Pronostico:} \quad F_{t+h} = L_t + hT_t \end{align*} \]
Donde:
- \(y_t\) es la observación actual.
- \(L_t\) es el nivel estimado en el tiempo \(t\).
- \(T_t\) es la tendencia estimada en el tiempo \(t\).
- \(\alpha\) y \(\beta\) son parámetros de suavización (\(0 < \alpha, \beta < 1\)).
- \(h\) es el horizonte de pronóstico.
La primera ecuación, que representa el nivel de suavización, pondera la observación actual \(y_t\) con \(\alpha\) y la suma ponderada del nivel anterior \(L_{t-1}\) y la tendencia anterior \(T_{t-1}\) con \(1-\alpha\). Esto refleja la importancia relativa de la observación actual y el nivel/tendencia anteriores en la estimación del nivel actual.
La segunda ecuación modela la suavización de la tendencia, donde la diferencia entre los niveles actuales y anteriores se pondera por \(\beta\), y se suma con \((1-\beta)T_{t-1}\). Esto incorpora la nueva información sobre la tendencia, ajustada por la tendencia anterior.
Finalmente, la tercera ecuación calcula el pronóstico futuro \(F_{t+h}\) sumando el nivel actual \(L_t\) y \(h\) veces la tendencia \(T_t\). Esto proyecta la tendencia actual en el horizonte de pronóstico \(h\).
En el caso especial en que \(\alpha=\beta\), el método de Holt es equivalente al “suavizado exponencial doble de Brown” (Brown 1959).Brown utilizó un argumento de descuento para llegar a sus ecuaciones de previsión, por lo que \(1-\alpha\) representa el factor de descuento común aplicado tanto a los componentes de nivel como de tendencia.
Un caso especial interesante de este método se produce cuando \(\beta=0\). Entonces [ \[\begin{align*} & \text{Nivel de Suavizacion:} \quad L_t = \alpha y_t + (1 - \alpha)(L_{t-1} + T) \\ & \text{Pronostico:} \quad F_{t+h} = L_t + hT_t \end{align*}\] ]
Este método se conoce como “SES con deriva”, que está estrechamente relacionado con el “método Theta” de previsión de Assimakopoulos y Nikolopoulos (2000). La conexión entre estos métodos fue demostrada por Hyndman y Billah (2003).
La elección de los valores para los parámetros \(\alpha\) y \(\beta\) en el método de suavizado exponencial de Holt es crucial para obtener pronósticos precisos. Estos parámetros determinan la rapidez con la que el modelo reacciona a las nuevas observaciones y ajusta la tendencia. Algunas estrategias comunes para seleccionar estos valores son:
Método de Ensayo y Error Ensayo y error es una forma simple pero efectiva de ajustar los parámetros. Puedes probar diferentes combinaciones de \(\alpha\) y \(\beta\), evaluar el rendimiento del modelo en datos históricos y ajustar los valores según sea necesario. Comienza con valores razonables, como 0.1 o 0.3, y ajusta según los resultados.
Validación Cruzada (Cross-Validation):
- Divide tus datos en conjuntos de entrenamiento y prueba.
- Entrena el modelo en el conjunto de entrenamiento y evalúalo en el conjunto de prueba.
- Repite este proceso con diferentes combinaciones de \(\alpha\) y \(\beta\) y selecciona aquellas que minimizan el error de pronóstico en el conjunto de prueba.
Optimización Numérica: Algunas herramientas y bibliotecas estadísticas proporcionan funciones de optimización numérica que buscan automáticamente los mejores valores para los parámetros. Estas funciones buscan minimizar una métrica de error, como el error cuadrático medio (MSE), en los datos históricos.
Juicio de Experto: En algunos casos, el conocimiento experto del dominio puede ser útil para elegir valores iniciales. Por ejemplo, si se espera que la serie temporal tenga una tendencia fuerte, puedes dar más peso a la componente de tendencia ajustando \(\beta\) en consecuencia.
En resumen, el método de suavizado exponencial de Holt busca adaptarse tanto a la tendencia como a los cambios en los niveles, haciendo que sea adecuado para series temporales con patrones de tendencia a largo plazo. No hay una regla única para todos, y la elección de \(\alpha\) y \(\beta\) puede depender de la naturaleza específica de los datos.
Ejemplo Aplicativo
Asumase que se tiene la siguiente serie temporal de ventas trimestrales en miles de dólares para un producto en el periodo 2010-2015.
Ajustaremos el modelo de suavizado exponencial de Holt a esta serie temporal:
## datos
x <- ts(data = c(13.98, 16.81, 16.60, 17.86, 17.10, 19.80, 19.79, 22.94,
20.72, 24.02, 23.56, 25.43, 23.43, 24.70, 27.56, 28.63,
29.86, 27.42, 28.59, 30.41, 33.41, 28.80, 34.96, 34.69),
freq = 4,
start = c(2010, 1))
plot(x)
## Qtr1 Qtr2 Qtr3 Qtr4
## 2010 13.98 16.81 16.60 17.86
## 2011 17.10 19.80 19.79 22.94
## 2012 20.72 24.02 23.56 25.43
## 2013 23.43 24.70 27.56 28.63
## 2014 29.86 27.42 28.59 30.41
## Holt-Winters exponential smoothing with trend and without seasonal component.
##
## Call:
## HoltWinters(x = x.fit, alpha = 0.4, beta = 0.5, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.4
## beta : 0.5
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 30.0566573
## b 0.5293631
## fit upr lwr
## 2015 Q1 30.58602 34.43141 26.74063
## 2015 Q2 31.11538 35.59984 26.63093
## 2015 Q3 31.64475 37.08295 26.20655
## 2015 Q4 32.17411 38.83452 25.51370
## [1] 25.80286
El Error Cuadrático Medio (MSE) es una métrica comúnmente utilizada para evaluar la precisión de un modelo de pronóstico. Se calcula como la media de los cuadrados de las diferencias entre los valores pronosticados y los valores reales.
\[ \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (Y_i - \hat{Y}_i)^2 \]
Donde:
- \(n:\) Es el número de observaciones
- \(Y_i:\) Son los valores reales
- \(\hat{Y}_i\) Son los valores pronosticados
Este valor de MSE te dará una medida de cuán bien se ajusta tu modelo a los datos observados. Un MSE más bajo indica un mejor ajuste del modelo. Puedes usar esto como una métrica para comparar diferentes combinaciones de \(\alpha\) y \(\beta\) y seleccionar aquellas que minimizan el MSE.
## [1] 4.318951
El MAD, o Desviación Absoluta Media (por sus siglas en inglés, Mean Absolute Deviation), es otra métrica comúnmente utilizada para evaluar la precisión de un modelo de pronóstico. A diferencia del MSE, el MAD se calcula tomando la media de las diferencias absolutas entre los valores pronosticados y los valores reales. La fórmula del MAD es la siguiente:
\[ \text{MAD} = \frac{1}{n} \sum_{i=1}^{n} |Y_i - \hat{Y}_i| \]
Donde:
- \(n:\) Es el número de observaciones
- \(Y_i:\) Son los valores reales
- \(\hat{Y}_i\) Son los valores pronosticados
El MAD es útil porque proporciona una medida de la magnitud promedio de los errores de pronóstico, independientemente de la dirección de los errores (es decir, no penaliza más los errores positivos que los errores negativos). Similar al MSE, un MAD más bajo indica un mejor ajuste del modelo.
options(repr.plot.width=10, repr.plot.height=6)
plot(x, type = "o", lwd = 3)
lines(m$fitted[,1], col="red", lwd = 2)
lines(y[,1], col="blue", lwd = 2)
legend("topleft",
c("Real", "Ajuste Holt", "Pronóstico Holt"),
lwd = c(3, 2, 2),
col = c('black', 'red', 'blue'),
bty = "n")
grid()