Predicción de series temporales. 1 Ejemplo

Anuncio
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
Descargar