Está en la página 1de 19

Métodos de Referencia

y
precisión de Pronóstico

Juan Isaula
Contents
Pronósticos y Futuros Potenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Muestras de Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Intervalos del Pronóstico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Métodos de Pronósticos Ingenuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Valores Ajustados y Residuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Ejemplo: Producción de petróleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Los residuos deben verse como ruido blanco . . . . . . . . . . . . . . . . . . . . . . . . . 10
Verificar Residuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Conjunto de Prueba y Entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Errores de Pronóstico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Medidas de precisión del pronóstico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
accuary() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Evaluación de la precisión del pronóstico de los métodos no estacionales . . . . . . . . . 14
Evaluación de la precisión del pronóstico de los métodos estacionales . . . . . . . . . . . 15
Validación cruzada de series temporales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
tsCV function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Uso de tsCV() para la validación cruzada de series temporales . . . . . . . . . . . . . . . 17

1
Pronósticos y Futuros Potenciales 2

Pronósticos y Futuros Potenciales


Muestras de Futuros
Aquí hay una serie de tiempo que muestra el total de visitantes anuales a Australia. Queremos
pronosticar esta serie para los próximos 10 años.

Imagine que ajustamos un modelo estadístico a los datos disponibles. Discutiremos los posibles
modelos más adelante en este curso. Luego podemos tomar ese modelo y ejecutarlo en el tiempo para
simular posibles valores futuros para esta serie.
En el gráfico que te presento a continuación,

Los valores rojos muestran un futuro simulado. Los valores negros son el pasado observado. Cada vez
que simulamos a partir del modelo, obtenemos un futuro alternativo diferente.
Mientras continuamos simulando construimos una distribución de posibles futuros, vea el siguiente
gráfico se muestran algunas rutas.
Pronósticos y Futuros Potenciales 3

estas forman una distribución de los futuros potenciales.

el pasado ha sucedido y ahora está arreglado, pero el futuro todavía esta lleno de muchas posibilidades.
Las lineas de colores de la figura anterior no son pronósticos. Son futuros simulados. Un pronóstico es
la media o la mediana de estos futuros potenciales.
Pronósticos y Futuros Potenciales 4

Intervalos del Pronóstico

Este gráfico muestra las medias de las distribuciones futuras como una linea azul. Esto es lo que
llamamos pronósticos puntuales o, a veces, simplemente pronósticos. No esperamos que los valores
futuros sigan esta línea, es simplemente el promedio de lo que nuestro modelo dice que es posible.
En la siguiente gráfica, las regiones sombreadas son intervalos de predicción. Estos se basan en los
percentiles de los futuros potenciales. - La región más oscura es un intervalo del 80%. - La región más
clara es un intervalo del 95%.

El gráfico predeterminado para los pronósticos en R se ve así con la región del 80% y el 95% mostrada.
A medida de que lleguen las observaciones futuras, después de haber hecho el pronóstico, esperamos
que la mitad de ellos estén por encima de la linea azul y por debajo. Esperamos que el 80% de los
valores futuros se encuentren dentro de la región sombreada oscura y el 20% fuera de ella. Esperamos
que el 95% de los valores futuros se encuentren dentro de la región sombreada y solo el 5% fuera de ella.

Métodos de Pronósticos Ingenuos


Como dijimos previamente, un pronóstico es la media o la mediana de los futuros simulados de una
serie de tiempo.
El método de pronósticos más simple es usar la observación más reciente; esto se denomina pronóstico
ingenuo y se puede implementar en una función homónima. Esto es lo mejor que se puede hacer para
muchas series de tiempo, incluida la mayoría de los datos de precios de acciones, e incluso si no es un
buen método de pronóstico, proporciona un punto de referencia útil para otros métodos de pronóstico.
Pronósticos y Futuros Potenciales 5

Para datos estacionales, una idea relacionada es usar la temporada correspondiente del último año de
datos. Por ejemplo, si desea pronosticar el volumen de ventas para el próximo mes de marzo, usaría el
volumen de ventas del mes de marzo anterior. Esto se implementa con la función snaive(), es decir,
estacional ingenua
Para ambos métodos de pronóstico, puede establecer el segundo argumento h, que especifica la
cantidad de valores que desea pronosticar: como se muestra en el código a continuación, tienen
diferentes valores predeterminados. La salida resultante es un objeto de clase forecast. Esta es la clase
central de objetos en el paquete forecast, y hay muchas funciones para manejarlos, incluidos summary()
y autoplot().
naive(y, h =10)
**snaive(y, h =2*frequency(x))**
Probaremos estas dos funciones en la serie goog y la serie ausbeer, respectivamente. Veamos:
library(forecast)

## Registered S3 method overwritten by 'quantmod':


## method from
## as.zoo.data.frame zoo
library(fpp2)

## -- Attaching packages ---------------------------------------------- fpp2 2.4 --


## v ggplot2 3.3.6 v expsmooth 2.3
## v fma 2.4
##
library(knitr)
# Usemos naive() para pronosticar la serie goog para los
# próximos 20 valores y guardelos en fcgoog.
fcgoog <- naive(goog, h = 20)

# Trace y resuma los pronósticos usando autoplot() y summary()


autoplot(fcgoog)
Pronósticos y Futuros Potenciales 6

Forecasts from Naive method


900

800

700
goog

600

500

400

0 250 500 750 1000


Time
summary(fcgoog)

##
## Forecast method: Naive method
##
## Model Information:
## Call: naive(y = goog, h = 20)
##
## Residual sd: 8.7343
##
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.4212612 8.734286 5.829407 0.06253998 0.9741428 1 0.03871446
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 1001 813.67 802.4765 824.8634 796.5511 830.7889
## 1002 813.67 797.8401 829.4999 789.4602 837.8797
## 1003 813.67 794.2824 833.0576 784.0192 843.3208
## 1004 813.67 791.2831 836.0569 779.4322 847.9078
## 1005 813.67 788.6407 838.6993 775.3910 851.9490
## 1006 813.67 786.2518 841.0882 771.7374 855.6025
## 1007 813.67 784.0549 843.2850 768.3777 858.9623
## 1008 813.67 782.0102 845.3298 765.2505 862.0895
## 1009 813.67 780.0897 847.2503 762.3133 865.0266
## 1010 813.67 778.2732 849.0667 759.5353 867.8047
## 1011 813.67 776.5456 850.7944 756.8931 870.4469
## 1012 813.67 774.8948 852.4452 754.3684 872.9715
## 1013 813.67 773.3115 854.0285 751.9470 875.3930
## 1014 813.67 771.7880 855.5520 749.6170 877.7230
Pronósticos y Futuros Potenciales 7

## 1015 813.67 770.3180 857.0220 747.3688 879.9711


## 1016 813.67 768.8962 858.4437 745.1944 882.1455
## 1017 813.67 767.5183 859.8217 743.0870 884.2530
## 1018 813.67 766.1802 861.1597 741.0407 886.2993
## 1019 813.67 764.8789 862.4610 739.0505 888.2895
## 1020 813.67 763.6114 863.7286 737.1120 890.2280
# Use snaive() para pronosticar los siguientes 16 valores de la
# serie ausbeer y guardelos en fcbeer.
fcbeer <- snaive(ausbeer, h = 16)

# Trace y resuma los pronósticos de fcbeer la misma manera que


# lo hizo para fcgoog
autoplot(fcbeer)

Forecasts from Seasonal naive method


600

500
ausbeer

400

300

200
1960 1980 2000
Time
summary(fcbeer)

##
## Forecast method: Seasonal naive method
##
## Model Information:
## Call: snaive(y = ausbeer, h = 16)
##
## Residual sd: 19.3259
##
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 3.098131 19.32591 15.50935 0.838741 3.69567 1 0.01093868
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
Valores Ajustados y Residuos 8

## 2010 Q3 419 394.2329 443.7671 381.1219 456.8781


## 2010 Q4 488 463.2329 512.7671 450.1219 525.8781
## 2011 Q1 414 389.2329 438.7671 376.1219 451.8781
## 2011 Q2 374 349.2329 398.7671 336.1219 411.8781
## 2011 Q3 419 383.9740 454.0260 365.4323 472.5677
## 2011 Q4 488 452.9740 523.0260 434.4323 541.5677
## 2012 Q1 414 378.9740 449.0260 360.4323 467.5677
## 2012 Q2 374 338.9740 409.0260 320.4323 427.5677
## 2012 Q3 419 376.1020 461.8980 353.3932 484.6068
## 2012 Q4 488 445.1020 530.8980 422.3932 553.6068
## 2013 Q1 414 371.1020 456.8980 348.3932 479.6068
## 2013 Q2 374 331.1020 416.8980 308.3932 439.6068
## 2013 Q3 419 369.4657 468.5343 343.2438 494.7562
## 2013 Q4 488 438.4657 537.5343 412.2438 563.7562
## 2014 Q1 414 364.4657 463.5343 338.2438 489.7562
## 2014 Q2 374 324.4657 423.5343 298.2438 449.7562

Valores Ajustados y Residuos


Una forma de verificar si nuestro método pronóstico es bueno es intentar pronosticar lo que ya hemos
visto.
Los pronósticos de un paso adelante de los datos ya vistos se denominan “valores ajustados”. Es decir,
cada valor ajustado es un pronóstico basado en todos los datos hasta la observación anterior incluida. Si
nuestro método de pronóstico ha involucrado la estimación de cualquier parámetro, estos parametros
generalmente se calculan utilizando todos los datos disponibles. Por lo tanto, los pronósticos calculados
con los mismos datos no son realmente pronósticos, ya que hemos hecho trampa al usar los datos al
construir nuestro modelo de pronóstico. sin embargo, pueden ser útiles. Un residual es la diferencia
entre una observación y su valor ajustado. Esto es lo que sobra que no predijimos. Si nuestro método de
pronóstico es bueno, los residuos deberían verse como ruido blanco.

Ejemplo: Producción de petróleo


Los datos trazados aquí son la producción anual de petróleo en Arabia Saudita. Podríamos intentar
pronosticar esto usando el método ingenuo. Los valores ajustados del método ingenuo también se
muestran en el gráfico. Recuerde que el método ingenuo simplemente usa la observación más reciente
como pronóstico para futuras observaciones. Por lo tanto, la linea verde es igual a la linea roja, pero
desplazada por año. Los residuos son las distancias verticales entre estas dos lineas.
fc <- naive(oil)
autoplot(oil, series = 'Data') + xlab('Año')+
autolayer(fitted(fc), series = 'Ajuste')+
ggtitle('Oil producción de petroleo en Arabia Saudita')
Valores Ajustados y Residuos 9

Oil producción de petroleo en Arabia Saudita

500

400

series
oil

Ajuste
300 Data

200

100
1970 1980 1990 2000 2010
Año
Aquí se grafican los residuos
autoplot(residuals(fc))

0
residuals(fc)

−100

1970 1980 1990 2000 2010


Time
Esperamos que parezcan ruido blanco, porque eso significaría que el método de pronóstico que usamos
capturó toda la información disponible en los datos.
Valores Ajustados y Residuos 10

Los residuos deben verse como ruido blanco


Hay cuatro supociones básicas que haremos sobre los residuos, dos son esenciales y dos son
simplemente convenientes. El primer supuesto esencial es:
• que los residuos no deben estar correlacionados. De lo contrario, hay información en los residuos
que debería haber sido capturada por el método de pronóstico.
• A continuación, suponemos que los residuos tienen media cero. Si eso no fuera cierto, el
pronóstico estaría sesgado y podriamos solucionar el problema facilmente ajustando los
pronósticos hasta que los residuos tengan una media cero.
Las siguientes dos suposiciones no son realmente esenciales, solo hacen la vida más facil:
• Suponemos que los residuos tienen varianza constante y,
• suponemos que están distribuidos normalmente.
Estas dos suposiciones se utilizan para calcular los intervalos de confianza. Anteriormente, les dije que
los residuos deberían verse como ruido blanco. el ruido blanco satisfaríaa los supuestos 1, 2 y 3.
Entonces, el realidad, estamos pidiendo algo un poco más de nuestros residuos:
• deberían verse como ruido blanco gaussiano.
Hay una función muy conveniente disponible para que usted verifique estas supociones. Simplemente
pase el objeto de pronóstico a la función checkresiduals(), esta producira un gráfico de tiempo, un
gráfico de ACF, un histograma y realizará una prueba de Ljung-Box en los residuos.
checkresiduals(fc)

Residuals from Naive method

−100

1970 1980 1990 2000 2010

0.3 15
0.2

0.1 10
ACF

df$y

0.0

−0.1 5

−0.2

−0.3 0
5 10 15 −100 0 100
Lag residuals
##
## Ljung-Box test
##
## data: Residuals from Naive method
## Q* = 12.59, df = 10, p-value = 0.2475
##
## Model df: 0. Total lags used: 10
Valores Ajustados y Residuos 11

Verificar Residuales
En este caso, la prueba de Ljung-Box tiene un valor p muy por encima del umbral 0.5, por lo que no hay
problema con las autocorrelaciones: se parecen a lo que cabría esperar del ruido blanco. Eso lo
confirma la trama de ACF. El histograma se parece bastante a una curva normal, aunque posiblemente
haya un valor atípico en el lado negativo. Acostúmbrese a verificar siempre sus residuales antes de
proceder a producir los pronósticos. Si termina con alguna falta de normalidad o alguna
autocorrelación en sus residuos, no se desespere. Los pronósticos puntuales aún pueden ser buenos se
pueden utilizar. Son los intervalos de predicción los que puden ser demasiado amplios o demasiado
estrechos, y no deben tomarse demasiado serio.

Comprobación de residuos de series temporales


Cuando se aplica un método de pronósticos, es importante verificar siempre que los residuos se
comporten bien (es decir, que no haya valores atípicos ni patrones) y que parezcan ruido blanco. Los
intervalos de predicción se calculan asumiendo que los residuos también se distribuyen normalmente.
Puede utilizar checkresiduals() para verificar estas características; dará los resultados de una prueba de
Ljung-Box.
Hasta ahora no ha utilizado la función de canalización ( %>%), pero esta es una buena oportunidad
para presentarla. Cuando hay muchas funciones anidadas, las funciones de tubería hacen que el código
sea mucho más fácil de leer. Para ser consistente, siempre siga una función con paréntesis para
diferenciarla de otros objetos, incluso si no tiene argumentos.
En este ejercicio, probará las funciones anteriores en los pronósticos equivalentes a lo que produjo en el
ejercicio anterior ( fcgoog obtenido después de aplicar naive()a goog y fcbeer obtenido después de
aplicar snaive() a ausbeer).
# Usando la función %>% ejecute checkresiduals() un pronostico
# equivalente a fcgoog.
goog %>% naive() %>%checkresiduals()

Residuals from Naive method

50

0 200 400 600 800 1000

0.05 120

80
0.00
ACF

df$y

40
−0.05

0
0 5 10 15 20 25 30 0 50 100
Lag residuals
##
## Ljung-Box test
Conjunto de Prueba y Entrenamiento 12

##
## data: Residuals from Naive method
## Q* = 13.123, df = 10, p-value = 0.2169
##
## Model df: 0. Total lags used: 10
# Se parecen a ruido blanco (TRUE o FALSE)
googwn <- TRUE

# Comprobar el residuo de la snaive() estacinal # aplicado a la serie ausbeer.


ausbeer %>% snaive() %>% checkresiduals()

Residuals from Seasonal naive method


60

30

−30

−60
1960 1970 1980 1990 2000 2010

0.3
30
0.2
ACF

df$y

20
0.1

0.0 10

−0.1
0
4 8 12 16 20 24 −40 0 40
Lag residuals
##
## Ljung-Box test
##
## data: Residuals from Seasonal naive method
## Q* = 60.535, df = 8, p-value = 3.661e-10
##
## Model df: 0. Total lags used: 8
# Parecen Ruido blanco
beerwn <- FALSE

Conjunto de Prueba y Entrenamiento


Para probar realmente qué tan bueno es su método de pronóstico, no hay sustituto para usarlo para
pronosticar observaciones futuras.
Probablemente no quieras esperar unos años para ver cómo va.
En su lugar, puede ocultar algunas observaciones al final de la serie y luego tratar de pronosticarlas.
¡Sin espiar!
Conjunto de Prueba y Entrenamiento 13

• Si observa las observaciones ocultas y eso influye en sus pronósticos, entonces no es una prueba
justa. Las observaciones que se utilizan para elaborar sus pronósticos se denominan conjunto de
entrenamiento
• Las observaciones restantes forman el conjunto de prueba.
Es fácil construir un modelo muy complicado sobre los datos de entrenamiento que tiene pequeños
residuos y parece un gran ajuste. Pero produce pésimos pronósticos. Esto se llama sobreajuste. La
comprobación del rendimiento previsto en el conjunto de prueba ayuda a superar el problema del
ajuste excesivo del conjunto de entrenamiento.

Ejemplo: producción de petróleo de Arabia Saudita


En este ejemplo, dividimos los datos en conjuntos de entrenamiento y prueba usando la función de
window(). Mantenemos los datos de los últimos 10 años para realizar pruebas y calcular pronósticos
ingenuos. Debido a que no hay parámetros asociados con un pronóstico ingenuo, en realidad no tiene
mucho sentido usar un conjunto de prueba en este ejemplo. Pero el principio es importante y
utilizaremos este enfoque cuando tengamos modelos de pronóstico más complicados.
entrenamiento <- window(oil, end = 2003)
test <- window(oil, start = 2004)
fc <- naive(entrenamiento, h=10)
autoplot(fc) + autolayer(test, series = 'Data de prueba')

Forecasts from Naive method

800

600
entrenamiento

series
Data de prueba
400

200

1970 1980 1990 2000 2010


Time
Conjunto de Prueba y Entrenamiento 14

Errores de Pronóstico
Los errores de pronóstico son las diferencias entre las observaciones del conjunto de prueba y los
pronósticos puntuales. Esto es diferente de los residuos de dos maneras:
• Los residuos están en el conjunto de entrenamiento, mientras que los errores de pronóstico están
en el conjunto de prueba.
• Los residuos se basan en pronósticos de un paso, mientras que los errores de pronóstico pueden
provenir de cualquier horizonte de pronóstico.
Calculamos la precisión de nuestro método utilizando los errores de pronóstico calculados en los datos
de prueba.

Medidas de precisión del pronóstico


Hay varias formas de medir la precisión del pronóstico. Podemos tomar el error absoluto medio, el
error cuadrático medio o el error porcentual medio. Todos estos son ampliamente utilizados y sus
ecuaciones se muestran aquí. Pero hay problemas con estas simples medidas. Si queremos comparar la
precisión del pronóstico entre dos series en escalas muy diferentes, no podemos comparar el MAE o el
MSE porque su tamaño depende de la escala de los datos. MAPE es mejor para las comparaciones, pero
solo si todos nuestros datos son positivos y no tienen ceros ni valores pequeños. MAPE también asume
que hay un cero natural, por lo que no se puede usar con pronósticos de temperatura, por ejemplo, ya
que las escalas Fahrenheit y Celsius tienen puntos cero arbitrarios. Una solución es el error escalado
absoluto medio o MASE, que es como el MAE pero está escalado para que pueda compararse entre
series.
• Observacion: yt
• Pronóstico: yt
• Error de Pronóstico: et  yt − yt

accuary()
Una vez más, R nos facilita la vida al proporcionar una función que hace la mayor parte del trabajo por
nosotros. El comando de accuary() calcula todas estas medidas, además de algunas otras que no
discutiremos aquí. Las medidas del conjunto de entrenamiento se basan en los residuos, mientras que
las medidas del conjunto de prueba se basan en los errores de pronóstico. En la mayoría de los casos,
estamos interesados en las medidas de error del conjunto de prueba. Por sí solos, estos no nos dicen
mucho. Pero cuando comparamos diferentes métodos de pronóstico con los mismos datos, estos serán
muy útiles para decirnos qué funciona y qué no.
accuracy(fc,test)

## ME RMSE MAE MPE MAPE MASE ACF1


## Training set 9.87358 52.56156 39.42504 2.506565 12.570647 1.0000000 0.1801528
## Test set 21.60250 35.09832 29.97666 3.963914 5.777875 0.7603458 0.4029519
## Theil's U
## Training set NA
## Test set 1.184862

Evaluación de la precisión del pronóstico de los métodos no estacionales


En ciencia de datos, un conjunto de entrenamiento es un conjunto de datos que se utiliza para descubrir
posibles relaciones. Un conjunto de prueba es un conjunto de datos que se utiliza para verificar la
fuerza de estas posibles relaciones. Cuando separa un conjunto de datos en estas partes, generalmente
asigna más datos para entrenamiento y menos para pruebas.
Una función que se puede usar para crear conjuntos de entrenamiento y prueba es subset.ts(), que
devuelve un subconjunto de una serie temporal donde los argumentos opcionales starty endse
especifican mediante valores de índice.
Como vio anteriormente, otra función, accuracy(), calcula varias estadísticas de precisión de pronóstico
dados los pronósticos y las observaciones reales correspondientes. Es lo suficientemente inteligente
como para encontrar las observaciones relevantes si le da más de las que está pronosticando.
Conjunto de Prueba y Entrenamiento 15

Las medidas de precisión proporcionadas incluyen la raíz del error cuadrático medio (RMSE), que es la
raíz cuadrada del error cuadrático medio (MSE). Minimizar RMSE, que corresponde a una precisión
creciente, es lo mismo que minimizar MSE.
La serie temporal precargada goldcomprende los precios diarios del oro durante 1108 días. Aquí, usará
los primeros 1000 días como un conjunto de entrenamiento y calculará los pronósticos para los 108 días
restantes. Éstos se compararán con los valores reales de estos días mediante las funciones de pronóstico
simple naive(), que utilizó anteriormente en este capítulo, y meanf(), que brinda pronósticos iguales a la
media de todas las observaciones. Deberá especificar la palabra clave h(que especifica la cantidad de
valores que desea pronosticar) para ambos.
# Cree los datos de entrenamiento como train
train <- subset(gold, end = 1000)

# Calcule los pronosticos naive() y guardelos en naive_fc


naive_fc <- naive(train, h = 108)

# Calcule pronosticos medios y guardelos en median_fc


mean_fc <- meanf(train, h = 108)

# Use accuary() para calcular las estadisticas RMSE


accuracy(naive_fc, gold)

## ME RMSE MAE MPE MAPE MASE


## Training set 0.1079897 6.358087 3.20366 0.0201449 0.8050646 1.014334
## Test set -6.5383495 15.842361 13.63835 -1.7462269 3.4287888 4.318139
## ACF1 Theil's U
## Training set -0.3086638 NA
## Test set 0.9793153 5.335899
accuracy(mean_fc, gold)

## ME RMSE MAE MPE MAPE MASE


## Training set -4.239671e-15 59.17809 53.63397 -2.390227 14.230224 16.981449
## Test set 1.319363e+01 19.55255 15.66875 3.138577 3.783133 4.960998
## ACF1 Theil's U
## Training set 0.9907254 NA
## Test set 0.9793153 6.123788
# Asigne uno de los pronosticos como mejores pronosticos
bestforecasts <- naive_fc

Ha comparado dos tipos de pronósticos en función de su RMSE.

Evaluación de la precisión del pronóstico de los métodos estacionales


Como aprendió en el primer capítulo, la window() función especifica el starty endde una serie de
tiempo utilizando los tiempos relevantes en lugar de los valores de índice. Cualquiera de esos dos
argumentos se puede formatear como un vector como c(year, period)el que también usó anteriormente
como argumento para ts(). Una vez más, el período se refiere al trimestre aquí.
Aquí, utilizará los números de visitantes trimestrales de Melbourne ( vn[, “Melbourne”]) para crear tres
conjuntos de entrenamiento diferentes, omitiendo los últimos 1, 2 y 3 años, respectivamente.
Inspeccione los datos precargados vnen su consola antes de comenzar el ejercicio; esto lo ayudará a
determinar el valor correcto que debe usar para la palabra clave h(que especifica la cantidad de valores
que desea pronosticar) en sus métodos de pronóstico.
Luego, para cada conjunto de entrenamiento, calcule el próximo año de datos y finalmente compare el
error porcentual absoluto medio (MAPE) de los pronósticos usando accuracy(). ¿Por qué crees que
varían tanto los MAPE?
Validación cruzada de series temporales 16

Validación cruzada de series temporales


Hasta ahora, hemos utilizado esta configuración de evaluación tradicional.

El problema es que es un desperdicio. Tenemos un conjunto de prueba relativamente pequeño, y es


posible que podamos sacar conclusiones que funcionen para ese conjunto de prueba pero que no sean
confiables para el futuro. La validación cruzada de series de tiempo es una solución a este problema.
En la validación cruzada de series de tiempo, tenemos una serie de conjuntos de entrenamiento y
prueba. Suponiendo que estamos interesados en pronósticos de un paso, la configuración se vería así.

Para cada fila, los puntos azules muestran el conjunto de entrenamiento y el punto rojo el conjunto de
prueba. Los puntos blancos no se utilizan. Cada conjunto de entrenamiento consta de solo una
observación más que el conjunto de entrenamiento anterior. De esta forma, se pueden usar muchas más
observaciones en el conjunto de prueba y podemos evaluar qué tan bueno es el método para el
pronóstico de un paso promediando el error sobre todos esos pequeños conjuntos de prueba. Esto se
conoce en econometría como “evaluación de pronóstico sobre un origen móvil”. (¡Por alguna razón, a
los econometristas nunca se les ocurren nombres memorables!) El origen del pronóstico es el tiempo al
final de los datos de entrenamiento. Y avanza en el tiempo. De ahí el nombre. Pero me gusta llamarlo
como 2 pasos adelante, y 3 pasos por delante. Parece mucho trabajo por hacer, pero hay una función R
ordenada que hace todo por ti.

tsCV function
tsCV aplica un método de pronóstico en una secuencia de conjuntos de entrenamiento calculados a
partir de una serie temporal. Funciona así,
e <- tsCV(oil,forecastfunction = naive, h=1)
mean(eˆ2, na.rm = TRUE)

## [1] 2355.753
Los errores de previsión resultantes se guardan en el objeto e. Es posible que falten algunos valores,
especialmente al comienzo de la serie, porque simplemente no es posible calcular el pronóstico cuando
el error de entrenamiento es demasiado pequeño. Necesita calcular sus propias medidas de error
cuando usa esta función. He calculado el error cuadrático medio de la raíz para usted aquí como
ejemplo. Este es en realidad un ejemplo extraño, porque el método ingenuo no tiene parámetros para
estimar. Por lo tanto, tsCV producirá los mismos valores que la función de residuos en este caso.
Validación cruzada de series temporales 17

sq <- function(u){uˆ2}
for(h in 1:10)
{
oil %>% tsCV(forecastfunction = naive, h = h) %>%
sq() %>% mean(na.rm = TRUE) %>% print()
}

## [1] 2355.753
## [1] 4027.511
## [1] 5924.514
## [1] 7950.841
## [1] 9980.589
## [1] 12072.91
## [1] 14054.23
## [1] 15978.92
## [1] 17687.33
## [1] 19058.95
Aquí hay un uso más sofisticado de la función. Estoy calculando el error cuadrático medio para
diferentes horizontes de pronóstico en función de la validación cruzada de series temporales. El
operador de tubería es útil aquí para simplificar mi código. Sin embargo, necesitaba escribir mi propia
función cuadrada porque el enfoque habitual no funciona dentro de una secuencia de tuberías.
Además, necesito terminar con el comando de impresión o no se imprimirá nada. Observe cómo
aumenta el RMSE con el horizonte de pronóstico. Cuanto más adelante pronostiquemos, menos
precisos serán nuestros pronósticos.
En resumen, la validación cruzada de series de tiempo es muy útil para seleccionar un buen modelo de
pronóstico. En general, una buena regla es elegir el modelo con el RMSE más pequeño. Si un horizonte
de pronóstico en particular es de interés, calcule el RMSE con validación cruzada en ese horizonte. De
esa manera, está eligiendo el mejor modelo de pronóstico para su propósito.

Uso de tsCV() para la validación cruzada de series temporales


La tsCV()función calcula errores de validación cruzada de series temporales. Requiere que especifique
la serie temporal, el método de pronóstico y el horizonte de pronóstico.
Aquí, utilizará tsCV()para calcular y trazar los valores de MSE hasta 8 pasos por delante, junto con el
naive()método aplicado a los googdatos. El ejercicio utiliza ggplot2 gráficos con los que quizás no esté
familiarizado, pero hemos proporcionado suficiente código para que pueda resolver el resto.
# Calcule errores de validación cruzada para hasta 8 pasos por delante
e <- tsCV(goog, forecastfunction = naive, h = 8)

# Calcule los valores de MSE y elimine los valores faltantes


mse <- colMeans(eˆ2, na.rm = TRUE)

# Trazar los valores de MSE contra el horizonte de pronóstico


data.frame(h = 1:8, MSE = mse) %>%
ggplot(aes(x = h, y = MSE)) + geom_point()
Validación cruzada de series temporales 18

500

400
MSE

300

200

100

2 4 6 8
h
Las visualizaciones son una excelente manera de obtener una comprensión más profunda de su modelo.

También podría gustarte