Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cap2 RF
Cap2 RF
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
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
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
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.
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)
800
700
goog
600
500
400
##
## 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
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
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
−100
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.
50
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
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
• 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.
800
600
entrenamiento
series
Data de prueba
400
200
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.
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)
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)
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.
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.