Series temporales con R (II) Mathieu Kessler Departamento de Matemática Aplicada y Estadı́stica Universidad Politécnica de Cartagena Predicción de series temporales. 1 1.1 Ejemplo Predicción con medias móviles Ilustraremos los métodos de predicción vistos en clase para series temporales con los datos de las temperaturas mensuales en San Javier, desde 1981 hasta 1990. Importar los datos del fichero sanjavier.txt en un data frame llamado por ejemplo temp.dat. Empezamos, al igual que en la práctica anterior por constituir una serie cronológica, especificando en qué unidad de tiempo empezamos y con qué frequencia tenemos observaciones. En el caso de San Javier, empezamos en el año 1981, y al tratarse de datos mensuales, cada unidad de tiempo (año) tenemos 12 datos. Utilizamos la instrucción ts, es decir time series para definir el objeto serie cronológica. temp.ts=ts(temp.dat$Tmp,start=1981,frequency=12) Los primeros métodos de predicción que hemos visto en clase corresponden a los métodos de medias móviles donde para predecir el valor futuro FT +1 de la serie e en el instante, usamos observaciones pasadas YT , YT −1 , YT −2 , etc... ponderadas. Ya vimos en la práctica anterior que las medias móviles se calculan usando la instrucción filter, pero esta vez, puesto que no queremos una ventana centrada en el momento actual sino que sólo incluya observaciones del pasado, la utilizamos con el argumento sides=1. Además los coeficientes usados en la suma ponderada se especifican en el argumento filter, proporcionando un vector con los coeficientes en orden cronológico inverso... pred.mva1=filter(temp.ts,sides=1,filter=c(0,1)) La instrucción anterior proporciona por ejemplo el proceso de medias móviles, para el cual la predicción para el instante T es la observación en el instante T − 1, FT = YT −1 . Se puede comprobar pidiendo ver el objeto pred.mva1: pred.mva1. También podemos representarlo conjuntamente con la serie temporal inicial: (ver también práctica anterior) plot(cbind(temp.ts,pred.mva1),col=3:4) Ejercicio: definir también otros dos objetos que contengan las medias móviles pero 1 que utilicen 3 y 10 observaciones respectivamente. ¿Cuál es el efecto de aumentar la amplitud de la ventana? Vimos en clase cómo se pueden evaluar y comparar métodos de predicción al usar la serie observada como “banco de prueba”: supongamos que disponemos que de un método de predicción que me permite en cualquier instante T − 1 predecir el valor de la variable en el instante T usando valores ya observados y siendo FT el valor predicho. Puedo evaluar la calidad de mi método de predicción al calcular la suma de cuadrados entre la serie observada y la serie formada por mi predicción: X SS = (Yt − Ft )2 . Para calcular en nuestro caso la suma de cuadrados asociada a mi predicción pred.mva1 por ejemplo, puedo usar: sum((pred.mva1-temp.ts)^2,na.rm=T) Hemos usamos la opción na.rm=T (NA . remove) para que la suma no tenga en cuenta los datos NA. Ejercicio: calcular la calidad de predicción de los distintos procesos de medias móviles introducidos anteriormente. 1.2 Predicción usando el método de Holt Winters El método de Holt-Winters es un método de alisado exponencial que tiene en cuenta el componente de tendencia (método de Holt, extensión del método de alisado exponencial simple) y el componente estacional (extensión por Winters del método de Holt). El proceso de predicción del método de Holt-Winters está formado por tres componentes: el nivel, la tendencia y el componente estacional. Estos tres componentes están relacionados por ecuaciones iterativas, que contienen tres parámetros: α, β, γ. Si β = γ = 0, las ecuaciones se reducen a una, y el resultado de la predicción corresponde al proceso de alisado exponencial. Si γ = 0, las ecuaciones se reducen a dos, y el resultado es el proceso de Holt, que no tiene en cuenta el componente estacional. Los valores de α, β, γ están fijados por el usuario, se suele escogerlos de manera que minimicen la suma de cuadrados usando el “banco de prueba”... Esta minimización se realiza de manera numérica. Empecemos con obtener el proceso de alisado simple: pred.hw1=HoltWinters(temp.ts,gamma=0,beta=0) Podemos directamente representar los datos junto con su predicción con plot(pred.hw1) Si queremos ver los valores predichos, podemos utilizar la función fitted: fitted(pred.hw1) 2 Podemos obtener el valor de α que resultó ser óptimo para la suma de cuadrados sobre el banco de pruebas de nuestra serie original: pred.hw1$alpha asi como el valor de la suma de cuadrados resultante: pred.hw1$SSE ¿Cómo se compara, en este caso, el alisado exponencial, con las medias móviles vistas anteriormente? Pasamos ahora a un ajuste de Holt, pero seguimos sin tener en cuenta el componente exponencial: pred.hw2=HoltWinters(temp.ts,gamma=0) plot(pred.hw2) pred.hw2$alpha pred.hw2$beta pred.hw2$SSE Y finalmente, llevamos a cabo el ajuste de Holt-Winters completo: pred.hw3=HoltWinters(temp.ts) plot(pred.hw3) pred.hw3$alpha pred.hw3$beta pred.hw3$gamma pred.hw3$SSE ¿Cuál es el mejor método de predicción para nuestra serie? Finalmente, una vez que tenemos un objeto resultado del proceso de Holt-Winters, podemos directamente llevar a cabo predicciones con la instrucción predict.HoltWinters. Admite como argumento un objeto de tipo HoltWinters, y el argumento n.ahead que nos permite especificar el horizonte de predicción: predict(pred.hw3,n.ahead=1) predict(pred.hw3,n.ahead=2) 2 Ejercicios LLevar a cabo el análisis de las series de los ı́ndices de paro (desde tercer trimestre 1976 hasta tercer trimestre 2007) y de la demanda mensual de energı́a en España (desde enero 1998) 3