Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contents
1 Regresión Dinámica 2
1.1 Pronósticos con modelo de regresión dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Practica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Modelos TBATS 14
3.1 Datos de gasolina de EE.UU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Datos del centro de llamadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Modeos TBATS para la demanda de electricidad . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Su futuro en la predicción 18
1
Contents
1 Regresión Dinámica
Hasta ahora hemos utilizado modelos de predicción que utilizan solo el historial de la serie temporal, pero no
utilice ninguna otra información. Pero a menudo hay información adicional disponible que nos ayudará a
hacer mejores predicciones. Por ejemplo, si estamos pronosticando ventas mensualmente, entonces podríamos
utilizar la inversión publicitaria del mes para mejorar nuestras predicciones, o quizás, información sobre las
actividades de la competencia. La regresión dinamica es una forma de combinar esta información con el
historial de la serie temporal en un solo modelo. Este modelo de regresión lineal parece un modelo de
regresión lineal estándar.
Tiene la variable a pronósticar en el lado izquierdo y varias variables predictoras en el lado derecho. Estos
proporcionan la información externa que deseamos utilizar al realizar pronósticos. La diferencia con la
regresión ordinaria está en el término de error.
En regresión dinámica, el término de error es un ARIMA, mientras que en regresión ordinaria, el término de
error es ruido blanco. Este proceso ARIMA es donde se incorpora la información histórica sobre la serie
temporal. Veamos un ejemplo:
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(ggplot2)
library(fpp2)
## -- Attaching packages ---------------------------------------------- fpp2 2.4 --
## v fma 2.4 v expsmooth 2.3
##
autoplot(uschange[,1:2],facets = TRUE) +
xlab("Año") + ylab("") +
ggtitle("Los cambios trimestrales son el consumo de EE. UU. y el ingreso personal")
2
Los cambios trimestrales son el consumo de EE. UU. y el ingreso personal
2
Consumption
0
−1
−2
2.5
Income
0.0
−2.5
fit
## Series: uschange[, "Consumption"]
## Regression with ARIMA(1,0,2) errors
##
## Coefficients:
## ar1 ma1 ma2 intercept xreg
## 0.6922 -0.5758 0.1984 0.5990 0.2028
## s.e. 0.1159 0.1301 0.0756 0.0884 0.0461
##
## sigma^2 = 0.3219: log likelihood = -156.95
## AIC=325.91 AICc=326.37 BIC=345.29
En este caso se ha ajustado una regresión lineal a la variable de ingreso, y luego se eligió un modelo
ARIMA(1,0,2) para los errores. Como es habitual, los coeficientes ARIMA no son particularmente
3
interpretables, pero el coeficiente de regresión es interpetable. Aquí, vemos que el cambio de consumo
aumenta en 0.25 puntos porcentuales cuando los ingresos cambian en 1 punto porcentual.
En los modelos de regresión dinámica, la parte de regresión tiene el cuenta la variable predictora, mientras
que el modelo ARIMA se encarga de la dinámica de las series de tiempo a corto plazo.
Al igual que con todos los modelos de pronóstico, debemos verificar que los residuos se vean como ruido
blanco.
checkresiduals(fit)
Residuals from Regression with ARIMA(1,0,2) errors
−1
−2
30
0.1
20
ACF
df$y
0.0
10
−0.1
0
4 8 12 16 20 24 −2 −1 0 1 2
Lag residuals
##
## Ljung-Box test
##
## data: Residuals from Regression with ARIMA(1,0,2) errors
## Q* = 5.8916, df = 5, p-value = 0.3169
##
## Model df: 3. Total lags used: 8
Note que la prueba de Ljung-Box aquí tiene un valor p por encima de 0.05, lo que significa que estos residuos
se ven como ruido blanco.
4
Forecasts from Regression with ARIMA(1,0,2) errors
1
Cambio Porcentual
−1
−2
1.2 Practica
1.2.1 Predicción de ventas teniendo en cuenta los gastos de publicidad
La función auto.arima se ajustará a un modeo de regresión dinámica con errores ARIMA. El único cambio
en la forma en que lo usó anteriormente es que ahora usará el argumento xreg que contiene una matriz de
variables de regresión.
En este ejercicio, modelará datos de ventas con regresión contra gastos de publicidad, con un error ARMA
para tener en cuenta cualquier correlación serial en los errores de regresión. Los datos advert comprenden
24 meses de gastos de ventas y publicidad para una empresa de repuestos para automóviles.
# Gráfiquemos la serie de ambas variables
autoplot(advert, facets = TRUE)
5
25
20
15
advert
10
5
advert
90
sales
85
80
0 5 10 15 20 25
Time
# Ajustamos el modelo ARIMA
fit <- auto.arima(advert[, "sales"], xreg = advert[, "advert"], stationary = TRUE)
# Consultamos el modelo. Aumento de las ventas por cada unidad aumento de la publicidad
salesincrease <- coefficients(fit)[3]
6
Forecasts from Regression with ARIMA(1,0,0) errors
90
Sales
85
80
0 10 20 30
Month
La regresión dinámica le permite incluir otra información externa en su pronóstico.
k
X
yt = β0 + [αk sk (t) + γk ck (t)] + et
k=1
Cuantos más términos incluyamos en el modelo, más complicado será nuestro patrón estacional. Elijamos K
mayúscula para controlar cuántos términos se incluyen. Los valores αk y γk son coeficientes en nuestro
modelo de regresión, porque la estacionalidad está siendo modelada por términos de Fourier, normalmente
utilizamos un modelo ARIMA no estacional para el error. Una diferencia importante entre manejar la
estacionalidad de esta manera y usar un modelo ARIMA estacional, es que los términos de Fourier asumen
que el patrón estacional no cambia con el tiempo, mientras que un modelo ARIMA estacional permite que el
patrón estacional evolucione con el tiempo.
El modelo puede incluir otras variables predictoras además de los términos de Fourier. Solo necesitan
agregarse a la matriz xreg. Todo el proceso está mayormente automatizado. Lo único que debe hacer usted
7
mismo es seleccionar K. Comience con K igual a 1 y aumente lentamente hasta que el valor de AIC deje de
disminuir. K no puede ser más de la mitad del periodo estacional. La ventaja de usar términos de Fourier, en
comparación con otros enfoques para modelar la estacionalidad, es que pueden manejar la estacionalidad
cuando el periodo estacional m es muy grande. Por ejemplo, con datos semanales donde m es
aproximadamente 52, datos diarios donde m podría ser 365 si hay estacionalidad anual y datos subdiarios
donde podria ser incluso mayor.
2.1 Practicas:
2.1.1 Predicción con datos semanales
Con datos semanales, es difícil manejar la estacionalidad usando modelos ETS o ARIMA ya que la duración
de la temporada es demaciado grande (aproximadamente 52). En su lugar, puede usar regresión armonica
que usa senos y cosenos para modelar la estacionalidad.
La función fourier() facilita la generación de los armómicos necesarios. Cuanto mayor sea el orden (K), más
ondulatorio se permite que sea el patrón estacional. Con K=1, es una curva sinusoidal simple. Puede
seleccionar el valor de K minimizando el valor AIC. Como vio anteriormente, fourier toma una serie de
tiempo requerida, la cantidad requerida de términos de Fourier para generar y la cantidad opcional de filas
que necesita para pronosticar.
Los datos gasoline comprenden datos semanales sobre productos terminados de gasolina para motores de
EE.UU. En este ejercicio, ajustará una regresión armónica a este conjunto de datos y pronosticará los
proximos 3 años.
# Establecer regresores armonicos de orden 13
harmonics <- fourier(gasoline, K = 13)
# Trazar pronosticos fc
autoplot(fc)
8
Forecasts from Regression with ARIMA(0,1,2) errors
10
9
gasoline
9
Forecasts from Linear regression model
40000
35000
30000
taylor
25000
20000
4 8 12 16
Time
# Comprobar los residuos de ajuste
checkresiduals(fit)
10
Residuals from Linear regression model
2000
−2000
2 4 6 8 10 12
1.0
300
0.5 200
ACF
df$y
100
0.0
0
0 336 672 1008 −2000 0 2000
Lag residuals
##
## Breusch-Godfrey test for serial correlation of order up to 672
##
## data: Residuals from Linear regression model
## LM test = 3938.9, df = 672, p-value < 2.2e-16
Note que los residuos del modelo ajustado no superan las pruebas, pero los pronósticos son bastante buenos.
11
400
300
calls
200
100
0
0 10 20 30
Time
# Configurar la matriz xreg
xreg <- fourier(calls, K = c(10, 0))
12
Residuals from Regression with ARIMA(5,0,1) errors
150
100
50
0
−50
−100
0 10 20 30
0.08 1000
750
0.04
ACF
df$y
500
0.00
250
0
−0.04
0 845 1690 2535 −100 −50 0 50 100 150
Lag residuals
##
## Ljung-Box test
##
## data: Residuals from Regression with ARIMA(5,0,1) errors
## Q* = 6846.8, df = 1684, p-value < 2.2e-16
##
## Model df: 6. Total lags used: 1690
# Trazar pronosticos para 10 dias habiles por delante
fc <- forecast(fit, xreg = fourier(calls, c(10, 0), h = 10*169))
autoplot(fc)
13
Forecasts from Regression with ARIMA(5,0,1) errors
400
300
calls
200
100
0
0 10 20 30
Time
Ahora ha adquirido mucha experiencia en el uso de técnicas de pronóstico complejas.
3 Modelos TBATS
Un modelo TBATS combina muchos de los componentes de los modelos que ya hemos utilizado en un solo
marco automatizado.
Incluye términos trigonométricos para la estacionalidad. Estos son similares a los términos de Fourier que
usamos en la regresión armónica. Excepto que aquí la estacionalidad puede cambiar con el tiempo. Incluye
una transformación de Box-Cox. Tiene errores ARMA como una regresión dinámica. Tiene términos de nivel
y tendencia, similar a un modelo ETS. Y todo está automatizado. El número de términos similares a Fourier,
la transformación de Box-Cox, el error ARMA. Todo esto los hace muy convenientes, pero también algo
peligrosos ya que a veces las opciones automáticas no son tan buenas. Veamos algunos ejemplos.
14
Forecasts from TBATS(1, {0,0}, −, {<52.18,12>})
10
9
Barriles por dia
15
Forecasts from TBATS(0.574, {0,0}, 0.987, {<169,6>, <845,3>})
2000
1500
Llamadas
1000
500
20 25 30 35
Semanas
Este ejemplo es el volumen de llamadas cada 5 minutos a un banco norteamericano. La función tbats es la
lenta para series de tiempo muy largas, por lo que solo estoy usando los últimos meses de datos. De todos
modos, más datos no supondrían una gran diferencia para los pronósticos.
Aquí, el parámetro de trasnformación de Box-Cox es 0.571, tan cerca de una raíz cuadrada. No hay término
ARMA ni parámetro de amortiguación. Los términos similares a Fourier están en dos grupos porque hay dos
tipos de estacionalidad. Hay 169 períodos de 5 minutos en una jornada laboral y 845 períodos en una semana
laboral de 5 días. Se incluyen 6 pares de términos para la estacionalidad diaria y 4 pares de términos para la
estacionalidad semanal. En este caso, los intervalos de predicción parecen un poco amplios, pero los
pronósticos se ven bien.
En resumen, un modelo TBATS es muy general y maneja una amplia gamma de series de tiempo. Es
especialmente útil para datos con grandes períodos estacionales y múltiples períodos estacionales. Como dije
anteriormente, tbats es convenientemente automático, pero a veces la automatización no es perfecta. Lo he
usado en muchas series de tiempo diferentes y parece que los intervalos de predicción suelen ser demaciado
amplios, aunque los pronósticos puntuales pueden parecer correctos. La automatización también hace que
todo sea bastante lento, especialmente en periodos de tiempo prolongados, porque necesita probar muchas
formas diferentes de armar el modelo.
16
Componente Sentido
1 Parámetro de transformación BoxCox
{0,0} error ARMA
- Parámetro de amortiguación
{<51.18, 14>} Período estacional, términos de Fourier
Los datos gas contienen la producción mensual de gas de Australia. Una gráfica de los datos muestra que la
varianza ha cambiado mucho con el tiempo, por lo que necesita una transformación. La estacionalidad
también ha cambiado de forma con el tiempo, y hay una fuerte tendencia. Esto la convierte en una serie
ideal para probar la función tbats() que está diseñada para manejar estas características.
# Trazar los datos gas
autoplot(gas)
60000
40000
gas
20000
0
1960 1970 1980 1990
Time
# Ajustar un modelo TBATS a los datos de gas
fit <- tbats(gas)
17
Forecasts from TBATS(0.082, {0,0}, 0.992, {<12,5>})
100000
75000
gas
50000
25000
0
1960 1970 1980 1990 2000
Time
# Registre el parametro BoxCox y el orden de los terminos
# de Fourier
lambda <- 0.082
K <- 5
4 Su futuro en la predicción
A este punto usted ha finalizado el curso de predicción con R. !Bien hecho¡ Hemos cubierto mucho material,
pero estoy seguro de que sabe que en realidad solo hemos arañado la superficie de los modelos de pronóstico.
su futuro en la predicción requerirá que practique con los métodos que hemos cubierto y que aprendera más
sobre estos métodos y otros enfoques de la predición a medida que adquiera más experiencia.
Como mencioné al comienzo de este curso, tengo un libro de texto en línea que cubre todo el material de este
curso con más detalle, así como algunos otros enfoques para la predicción. Ese sería un buen lugar para
comenzar a desarrollar aún más su pronóstico.
Pero probablemente la mejor manera de aprender en esta etapa es practicar pronósticos con muchas series de
tiempo diferentes, usando muchos métodos diferentes. Con el tiempo desarrollará una intuición de lo que
funciona bien en diferentes contextos.
18