Documentos de Académico
Documentos de Profesional
Documentos de Cultura
7-Series Temporales en R
7-Series Temporales en R
Area
de Biodiversidad y Conservacion, Universidad Rey Juan Carlos,
Departamental 1 DI. 231, c/ Tulipan s/n. E-28933 Mostoles (Madrid),
Espa
na. E-mail: luis.cayuela@urjc.es.
2
Departamento de Matematicas, Facultad de Ciencias, Modulo CXVI,
Despacho 207-B, Universidad Autonoma de Madrid, Campus de Cantoblanco,
E-28049 Madrid, Espa
na. E-mail: ana.justel@uam.es.
1
1 Este
Indice
1. Introducci
on a las series temporales
1.3.2. Representaci
on grafica de series temporales en R . . . . .
11
12
15
19
3. Alisado exponencial
19
21
22
24
4. Extracci
on de se
nales
28
4.1. Medias m
oviles . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
31
33
34
35
5.1.3. Orden de los polinomios autorregresivos y de medias moviles de la estructura regular y estacional estacionarias . .
41
5.2. Estimaci
on de los parametros . . . . . . . . . . . . . . . . . . . .
52
5.3. Validaci
on del modelo . . . . . . . . . . . . . . . . . . . . . . . .
54
5.4. Predicci
on de nuevos valores . . . . . . . . . . . . . . . . . . . . .
57
6. Referencias
58
3
1.
1.1.
Series temporales en R
Introducci
on a las series temporales
Qu
e es una serie temporal?
400
300
200
100
10
12
Mes
Datos de precipitaci
on mensual a lo largo de 12 meses. Cada observaci
on proviene de
una variable (precipitaci
on del mes de enero, precipitaci
on del mes de febrero, precipitaci
on del mes de marzo, etc.) con su propia distribuci
on. En la gr
afica se dibujan
variables con distribuci
on normal por simplicidad, pero las distribuciones pueden ser
de cualquier tipo.
1.2.
Series temporales en R
Tipos de series
800
600
400
1900
1920
1940
1880
200
a) Serie estacionaria
1960
1980
380
370
360
350
Concentracin de CO2
1994
1996
1998
2000
2002
2004
500
300
100
Nmero de pasajeros
1950
1952
1954
1956
1958
1960
Serie estacionaria (a), no estacionaria con tendencia y estacionalidad (b) y no estacionaria con variabilidad que crece con el tiempo (c).
1.3.
1.3.1.
Series temporales en R
Series temporales en R
Objetos de clase ts
R es un lenguaje orientado a objetos. Mediante el smbolo de asignacion <creamos objetos que quedan almacenados en la memoria virtual del ordenador
y con los que iremos trabajando a lo largo de cada sesion de trabajo.
> objeto1 <- matrix(rnorm(15), nrow=5, ncol=3)
> str(objeto1)
num [1:5, 1:3] -0.147 0.716 -0.04 1.202 1.007 ...
La funci
on str() nos permite explorar la estructura de cada uno de los objetos
que vamos creando en R. Un objeto de clase matrix tendra sus dimensiones
[filas, columnas] definidas entre corchetes. Es conveniente utilizar con
regularidad esta funci
on para explorar la informacion contenida en los
distintos objetos.
Existen infinidad de tipos de objetos en R. Las matrices, los arreglos de datos
(data.frame), los vectores y las listas suelen contener datos de alg
un tipo. Para
almacenar informaci
on de variables que cambian con el tiempo existe un tipo
de objeto en R que permite definir las caractersticas de dicha serie para
facilitar su posterior manejo y analisis. Este objeto es de clase ts y puede
crearse con la funci
on ts() del paquete stats.
Si tenemos un arreglo de datos con dos columnas, la primera representando
una variable temporal, y la segunda representando una variable cualquiera,
podemos convertir esta a un objeto de clase ts especificando los argumentos de
la funci
on ts() de la forma adecuada.
> args(ts)
Series temporales en R
Time-Series [1:146] from 1864 to 2009: -1.02 -1.24 0.54 -1.38 2.81 1.7 -3.01 -1.01 -0.76 Esta sera la forma m
as sencilla de crear un objeto de clase ts, en donde
tendramos datos anuales de valores del ndice NAO, en una serie continua de
datos que comenzara en el a
no 1864 y acabara en el a
no 2009. Ojo! si hay
datos faltantes hay que especificarlo de forma explcita en la serie con NA.
Pero tambien podra ser que nuestros datos representan valores mensuales. En
este caso debemos de especificar un nuevo argumento en la funcion ts(),
frequency, que determinara el n
umero de valores que hay por a
no, y el
argumento start como un vector numerico en donde el primer dgito hara
referencia al a
no y el segundo dgito hara referencia al mes6 . Recordemos que
un vector numerico puede crearse facilmente con la funcion c(). Si la frecuencia
que especificamos es 4 o 12 R reconoce por defecto que se trata de trimestres
(quarter ) o meses, respectivamente, y activa las etiquetas correspondientes.
> ts(1:10, frequency = 4, start = c(1959, 2))
1959
1960
1961
6 La
Series temporales en R
Feb
Mar
Apr
May
Jun
-0.95393998 0.86116985 -0.98645740 -0.97678299 -1.17211622
-0.79716793 -0.32831986 -1.40296401 0.49686089 -0.07024899
-1.25874448 1.32577148 -0.24936067 -0.19621560 1.06231438
Aug
Sep
Oct
Nov
Dec
-0.05858343 0.20745216 0.49932902 -0.22004997 -0.66612395
0.55103751 0.76235622 -0.34647623 0.07652863 -0.37713045
A veces vamos a tener, no una, sino varias variables, medidas a lo largo del
tiempo. En este caso, podemos generar un objeto de clase mts, que es
exactamente igual a los objetos de clase ts, salvo que estructura la informacion
en columnas, correspondiendo cada columna a una variable que cambia en el
tiempo. Para extraer la informacion de una de estas variables podemos utilizar
los operadores de asignaci
on tpicamente usados para matrices y arreglos de
datos. De esta forma podemos convertir facilmente un objeto de clase mts a ts
y viceversa.
> z <- ts(matrix(rnorm(30), 10, 3), start=c(1961, 1), frequency=12)
> class(z)
[1] "mts" "ts"
> z
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
1961
1961
1961
1961
1961
1961
1961
1961
1961
1961
Series 1
Series 2
Series 3
-0.50065692 0.65077592 0.17484459
1.14484769 0.75465852 -0.49647263
1.51191408 -0.08893152 -1.61067163
-1.14078222 0.16735933 0.16118175
-1.65024821 0.70602928 0.17575646
-0.70086340 -0.35602571 -2.77200506
-0.46873251 -0.21203090 -2.98020837
-1.64260759 1.01786411 -0.05092256
-0.04227781 0.55503428 0.13267087
0.70680184 1.17766785 1.69026036
1.3.2.
Series temporales en R
Representaci
on gr
afica de series temporales en R
La representaci
on m
as habitual de las series temporales es el grafico temporal.
Se representan los valores de las variables en el eje de ordenadas,
consecutivamente y respetando el orden de llegada de los datos. Se suelen unir
los puntos con rectas. Es importante que manejemos con cierta soltura los
argumentos de las funciones graficas para poder personalizar los graficos que
obtengamos. Para ello se puede consultar la ayuda de la funcion par().
ndice NAO
1900
1950
2000
1.0
>
>
>
>
0.8
0.6
0.4
1975
1978
0.2
0.0
% de parasitismo
1981
1984
1987
1990
1993
1996
1999
2002
2005
2008
Series temporales en R
los cuales suelen tener sus propias funciones graficas para representacion de
datos temporales. La misma figura del ejemplo anterior la obtendramos
utilizando directamente un objeto de clase ts como argumento principal de la
funci
on plot().
4
0
ndice NAO
1900
1950
2000
Gr
afica del valor del ndice NAO invernal desde 1864 a 2009 utilizando un objeto de
clase ts como argumento principal de la funci
on plot().
En realidad, la funci
on plot(), que es una funcion generica, act
ua aqu como la
funci
on plot.ts(), cuya ayuda puede ser consultada para ver mas detalles sobre
los argumentos que pueden usarse. Si se utiliza como argumento principal un
objeto de clase mts entonces lo que se obtiene es la representacion grafica de
todas las variables que hay en ese objeto.
> parasit.mean <- aggregate(parasit[,1:3],list(parasit$Yr),mean)
> str(parasit.mean)
'data.frame':
$ Group.1
:
$ Puestas
:
$ Nacidas
:
$ Parasitismo:
int
num
num
num
34 obs. of 4 variables:
1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 ...
203 229 238 245 225 ...
184 207 218 222 166 ...
0.0977 0.1012 0.085 0.0974 0.2684 ...
10
Series temporales en R
240
220
200
220 180
Puestas
180
140
Nacidas
Parasitismo
1975
1980
1985
1990
1995
2000
2005
Series temporales en R
Existe adem
as una interfaz gr
afica de R bastante nueva para el tratamiento de
series temporales llamada TTAinterface. Esta escrita para la version 2.14+ de
R por lo que ser
a necesario actualizar la version de R si tenemos instalada una
versi
on anterior. Esta interfaz permite realizar analisis de series temporales por
medio de una interfaz gr
afica amigable. Para instalar esta interfaz podemos
escribir en la consola el siguiente codigo:
> install.packages("TTAinterfaceTrendAnalysis", dep=T)
M
as informaci
on sobre esta interfaz en TTAinterface.
Se puede encontrar toda una lista detallada de paquetes que contienen
funciones relacionadas con el tratamiento de series temporales en CRAN Task
View: Time Series Analysis. Como siempre pasa en R, pueden existir dos o mas
funciones dentro de distintos paquetes que hagan lo mismo o cosas parecidas,
por lo que conviene tener cuidado y leer bien las paginas de ayuda de las
funciones antes de usarlas. Tambien pueden consultarse los siguientes vnculos,
que contienen tutoriales e informacion sobre el uso de series temporales en R:
RBloggers.
Time Series Data Library.
2.
2.1.
Modelar la tendencia
Tomemos como primer ejemplo, unos datos con tendencia, que intentaremos
modelar con un modelo de regresion. Estos datos estan contenidos en el objeto
rwalk del paquete TSA.
12
>
>
>
>
Series temporales en R
library(TSA)
data(rwalk)
par(cex.axis=1.5, cex.lab=1.5, cex=1.5)
plot(rwalk, ylab="y", type="o")
10
20
30
40
50
60
Time
Median
0.06391
3Q
0.63064
Max
2.22128
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.007888
0.297245 -3.391 0.00126 **
time(rwalk) 0.134087
0.008475 15.822 < 2e-16 ***
--Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 1.137 on 58 degrees of freedom
Multiple R-squared: 0.8119,
Adjusted R-squared: 0.8086
F-statistic: 250.3 on 1 and 58 DF, p-value: < 2.2e-16
La recta de regresi
on est
a definida por dos parametros: el intercepto y la
pendiente. En este caso el intercepto vale -1.008 y la pendiene 0.1341. Se puede
representar la recta de regresi
on sobre el grafico con la funcion grafica de bajo
nivel abline().
13
Series temporales en R
10
20
30
40
50
60
Time
60
48
1.5
48
42
Fitted values
2
1
60
Cook's distance
48
0.00
Theoretical Quantiles
54
Standardized residuals
2
1
0
1
Standardized residuals
60
Residuals vs Leverage
60
42
Normal QQ
Fitted values
1.0
0.5
0.0
Residuals
ScaleLocation
42
Standardized residuals
Residuals vs Fitted
0.02
48
0.04
0.06
Leverage
Series temporales en R
frente al tiempo.
>
>
>
>
residuos
10
20
30
40
50
60
Tiempo
Gr
afico de los residuos de un modelo lineal frente al tiempo.
En esta gr
afica, los residuos en intervalos proximos de tiempo tienden a tomar
valores parecidos, algo que es raro que ocurra por azar. Otra cosa que se
observa es que parece que hay mas variacion en el u
ltimo tercio de la serie en
comparaci
on con los dos primeros tercios.
2.2.
Modelar la estacionalidad
15
Series temporales en R
10
0
10
Temperatura (C)
20
1964
1966
1968
1970
1972
1974
1976
Evoluci
on temporal de la temperatura media mensual (en grados Celsius) en Dubuque,
Iowa.
Podemos ajustar un modelo lineal a estos datos, una vez mas, con la funcion
lm(). Deberemos previamente obtener el nombre de cada mes para cada una de
las observaciones. Esto podemos hacerlo facilmente con la funcion season() del
paquete TSA.
> month <- season(tempdub)
> lm.temp <- lm(tempdub~month)
> summary(lm.temp)
Call:
lm(formula = tempdub ~ month)
Residuals:
Min
1Q
-8.2750 -2.2479
Median
0.1125
3Q
1.8896
Max
9.8250
Coefficients:
(Intercept)
monthFebruary
monthMarch
monthApril
monthMay
monthJune
monthJuly
monthAugust
monthSeptember
monthOctober
monthNovember
monthDecember
--Signif. codes:
***
**
***
***
***
***
***
***
***
***
***
***
Series temporales en R
Median
0.1125
3Q
1.8896
Max
9.8250
Coefficients:
monthJanuary
monthFebruary
monthMarch
monthApril
monthMay
monthJune
monthJuly
monthAugust
monthSeptember
monthOctober
monthNovember
monthDecember
--Signif. codes:
17
5
0
5
Residuos
10
>
>
>
>
>
>
>
>
>
Series temporales en R
M
J
J O
SD M
FM
JF
M
J
O
JM N
M
A
F
A A
N M
D
A A SO
A
J
J MA DJ
JJSNJM J D JAO
A A N
S
AJ
A
D
F
S
N
J
J
N
J
M
J
J
J
J
S J
NDF
O
F ON J
S F JSON A
JAS A ASO
F
M
JJ
A
F
M
M AO FA
J O M DJ
A
A
M D MS
MMJ JFA
M OND
D
J
S
N
MA N
M
O
A
J
J
F
J
D
M
J
M
1964
1966
1968
1970
1972
1974
1976
5
0
5
Residuos
10
Tiempo
J
J
J
J
J
J
J
JJ
JJ
J
M
M
D
F
F
F
F
F
F
F
F
F
20
M
M
M
D
D
D
D
D
M
M
M
D
D
D
N
N
N
N
N
N
N
N
N
N
A
A
A
A
A
A
A
A
A
A
O
O
O
O
O
O
O
O
O
M
M
M
M
M
M
M
M
M
J
S
S
S
S
S
S
S
A
A
A
J
A
J
J
J
J A
A
A
J A
J
J
J
J
J
J
J
M
M
30
40
50
60
70
Valores predichos
Gr
afico de los residuos de un modelo lineal frente al tiempo y frente a los valores
predichos (J = January, F = February, M = March, A = April, M = May, J = June,
J = July, A = August, S = September, O = October, N = November, D = December).
18
Series temporales en R
$pvalue
[1] 0.216
$observed.runs
[1] 65
$expected.runs
[1] 72.875
$n1
[1] 69
$n2
[1] 75
$k
[1] 0
Datos que incluyesen tendencia y estacionalidad de forma simultanea podran
ser modelados mediante modelos lineales utilizando factores y covariables
(an
alisis de tipo ANCOVA).
2.3.
3.
Alisado exponencial
Series temporales en R
ajustan a la evoluci
on de la serie. Los parametros pueden variar en el tiempo y
las observaciones m
as recientes tienen mas peso en la prediccion que las mas
alejadas. Aunque el alisado exponencial puede implementarse facilmente en R
sin tener un conocimiento estadstico muy profundo, es un modelo poco u
til
para explicar la evoluci
on de una serie temporal, y tampoco podemos hacer
inferencia, ya que no se asume una estructura estocastica de las observaciones.
Hay tres tipos de alisado exponencial:
1. Alisado exponencial simple - Se emplea para series sin tendencia ni
estacionalidad. El modelo del alisado exponencial simple depende de un
par
ametro, alpha, que modula la importancia que tiene sobre el presente
las observaciones pasadas. Su valor oscila entre 0 y 1. Si alpha toma un
valor pr
oximo a 0 las predicciones a lo largo de la serie son muy similares
entre s, y se modifican poco con la nueva informacion. El caso extremo
se produce cuando alpha es cero, lo que implicara que la prediccion es
una constante a lo largo del tiempo. Si alpha, por el contrario, toma un
valor pr
oximo a 1 la prediccion se va adaptando al u
ltimo valor
observado, por lo que se puede decir que los valores alejados en el tiempo
no tienen mucha influencia sobre la prediccion.
2. Alisado de Holt - Se emplea para series con tendencia y sin
estacionalidad. El modelo depende de dos parametros, alpha y beta. El
par
ametro beta modula, en este caso, la importancia que tiene sobre la
pendiente estimada en tiempo t las observaciones pasadas. Al igual que
para alpha, los valores de beta oscilan entre 0 y 1. Si beta toma un valor
pr
oximo a 0 entonces la pendiente es constante o casi constante, es decir,
cambia poco a lo largo de la serie temporal. Si beta toma un valor
pr
oximo a 1, la predicci
on de la pendiente se va adaptando al u
ltimo
valor observado y las observaciones de las pendientes mas alejadas en el
tiempo no tienen apenas influencia sobre la prediccion.
3. Alisado de Holt-Winters - Se emplea para series con tendencia y
estacionalidad. Depende de tres parametros, alpha, beta y gamma. El
par
ametro gamma modula la importancia que tiene sobre la prediccion
en tiempo t las observaciones hechas en el mismo periodo de tiempos
pasados. Gamma oscila entre 0 y 1. Si gamma es 0 la prediccion en
tiempo t va a tomar un valor constante que va a depender de todas las
observaciones pasadas dentro de ese mismo periodo. Si gamma es 1 la
prediccion en tiempo t va a depender solamente de la observacion hecha
en tiempo t-p, siendo p la frecuencia (por ejemplo t = 12 para
observaciones mensuales).
En R se pueden realizar los tres tipos de alisados con una u
nica funcion: la
funci
on HoltWinters() del paquete stats.
> args(HoltWinters)
function (x, alpha = NULL, beta = NULL, gamma = NULL, seasonal = c("additive",
"multiplicative"), start.periods = 2, l.start = NULL, b.start = NULL,
20
Series temporales en R
3.1.
Series temporales en R
>
>
>
>
>
2
0
2
4
ndice NAO
1860
Valores observados
Valores predichos
1880
1900
1920
1940
1960
1980
2000
Valores observados del ndice NAO invernal y predicciones utilizando un alisado exponencial simple.
Como vemos las predicciones no se ajustan muy bien a los valores observados.
Desde luego no parece un buen modelo, pero es posiblemente mas informativo
que modelar utilizando para ello solamente la media de los valores observados.
3.2.
Alisado de Holt
Vamos a probar ahora un modelo con tendencia. Utilizaremos para ello los
datos de crecimiento poblacional en los Estados Unidos. Esta informacion esta
contenida en un objeto de clase ts llamado uspop, que se encuentra en el
paquete datasets. Los valores representan millones de habitantes registrados en
censos de 10 a
nos para el periodo 1790-1970.
22
Series temporales en R
plot(aliholt, ylab="Poblaci
on (millones hbts)", xlab="", main="")
title("Poblaci
on de los EEUU")
labs <- c("Valores observados", "Valores predichos")
legend("topleft", lty=c(1,1), col=c("black", "red"), legend=labs)
150
100
50
0
200
1850
1900
1950
Series temporales en R
Podramos estar interesados en hacer predicciones mas alla del rango de los
valores observados. Podemos para ello utilizar la funcion predict(), que en
realidad hace un llamamiento a la funcion predict.HoltWinters(). Es importante
saber esto porque mientras que para utilizar la funcion sera suficiente con
escribir predict(), para consultar la ayuda de la funcion tendremos que escribir
?predict.HoltWinters. La funci
on predict() necesita como argumento principal
un objeto de clase HoltWinters. Podemos especificar el n
umero de intervalos de
tiempo para el que queremos las predicciones con el argumento n.ahead. En
este caso n.ahead=5 implicara predicciones para los proximos 50 a
nos (5
decadas) a partir de la u
ltima observacion de la serie. Finalmente, podemos
calcular intervalos de prediccion con el argumento prediction.interval=TRUE.
Estos intervalos se calculan utilizando la varianza de los errores de prediccion.
>
>
>
>
>
>
300
200
100
0
1850
1900
1950
2000
3.3.
Alisado de Holt-Winters
Series temporales en R
HoltWinters(x = co2)
Smoothing parameters:
alpha: 0.3610268
beta : 0
gamma: 0.3532495
Coefficients:
[,1]
a
378.85957267
b
0.14625000
s1
3.87967405
s2
4.20043381
s3
4.49202098
s4
5.16172899
s5
5.39725075
s6
3.22497018
s7
-3.94239470
s8
-9.96979940
s9
-9.31512179
s10 -4.68811780
s11 -0.05222415
s12
2.53410175
En este caso, tenemos un efecto temporal muy marcado para la pendiente
(beta = 0.009), lo que indicara una pendiente casi constante a lo largo de toda
la serie temporal, con un coeficiente de b = 0.12 para t+1. El efecto de las
observaciones pasadas es intermedio para la constante (alpha = 364.761) y
para la estacionalidad (gamma = 0.472). Si miramos los coeficientes s para ver
el efecto de la estacionalidad en t+1 vemos que la concentracion de CO2
predicha es m
axima para el mes de mayo (s5 = 3.282) y mnima para el mes
de septiembre (s9 = -3.411). El grafico resultante con las observaciones y las
predicciones lo obtendrasmos con el siguiente codigo:
25
380
370
Valores observados
Valores predichos
360
350
>
>
>
>
Series temporales en R
1996
1998
2000
2002
2004
>
>
>
>
>
>
370
390
Valores observados
Valores predichos
IC de las predicciones
350
1995
2000
2005
2010
2015
Series temporales en R
Nmero de pasajeros
>
>
>
>
Valores observados
Valores predichos
1950
1952
1954
1956
1958
1960
N
umero de pasajeros en lneas aereas internacionales para el periodo 1949-1960.
s3
s4
s5
s6
s7
s8
s9
s10
s11
s12
Series temporales en R
0.9717369
1.0304825
1.0476884
1.1805272
1.3590778
1.3331706
1.1083381
0.9868813
0.8361333
0.9209877
La representaci
on gr
afica de las predicciones del modelo se hara de la misma
forma.
>
>
>
>
>
Nmero de pasajeros
1950
1952
1954
1956
1958
1960
Numero de pasajeros en lneas aereas internacionales y predicciones utilizando un alisado de Holt-Winters con un modelo multiplicativo para la funci
on de predicci
on para
el periodo 1949-1960.
4.
Extracci
on de se
nales
28
Series temporales en R
4.1.
Medias m
oviles
Series temporales en R
to 2005:
to 2005:
to 2005:
to 2005:
5.19 ...
30
Series temporales en R
370
360
370
0
5
1.0
0.0
1.0
random
10
seasonal
5360
365
trend
375
350
observed
380
1994
1996
1998
2000
2002
2004
Time
Extracci
on de se
nales para la serie de concentraci
on de CO 2 (ppm) para el periodo
1959-1997 utilizando medias m
oviles con la funci
on decompose().
4.2.
Otra forma m
as sofisticada de realizar la descomposicion aditiva es utilizando
la funci
on stl() del paquete stats. La funcion stl() realiza una extraccion de
se
nales utilizando regresi
on polinomica local (local polynomial regression
fitting, loess). La principal diferencia con medias moviles es la forma de extraer
la tendencia, que es mediante regresion polinomica local. El polinomio se
ajusta utilizando los mnimos cuadrados, dando mas peso a los puntos
cercanos al punto cuya respuesta esta siendo estimado y menos peso a los
puntos m
as lejanos. Muchos de los detalles de este metodo, tales como el grado
del polinomio y el modelo de pesos, son flexibles, y se pueden modificar
cambiando los argumentos establecidos por defecto. La componente estacional
se extr
ae de la misma forma que en el caso anterior.
> args(stl)
function (x, s.window, s.degree = 0, t.window = NULL, t.degree = 1,
l.window = nextodd(period), l.degree = t.degree, s.jump = ceiling(s.window/10),
t.jump = ceiling(t.window/10), l.jump = ceiling(l.window/10),
robust = FALSE, inner = if (robust) 1 else 2, outer = if (robust) 15 else 0,
na.action = na.fail)
NULL
31
Series temporales en R
>
>
>
>
370
370
1.0
0.0
remainder
1.0
360
365
trend
375
10
seasonal
350
360
data
380
1994
1996
1998
2000
2002
2004
time
Extracci
on de se
nales para la serie de concentraci
on de CO 2 (ppm) para el periodo
1959-1997 utilizando loess (local polynomial regression fitting) con la funci
on stl().
5.
Existe una clase propia de modelos parametricos que permite modelar series
temporales estacionarias y no estacionarias: los modelos ARIMA
(Autoregressive Integrated Moving Average). Estos modelos incluyen los
modelos AR (Autoregressive), MA (Moving Averages) y ARMA
(Autoregressive Moving Averages) para series estacionarias, extendiendolos a
series no estacionarias. Cuando las series son no estacionarias podemos
32
Series temporales en R
q (B)Q (B S )
at
p (B)P (B S )
donde:
d es el n
umero de diferencias regulares para la estacionariedad.
s es la estacionalidad.
D es el n
umero de diferencias estacionales para la estacionariedad.
p y q es son los ordenes del ARMA regular.
P y Q es son los ordenes del ARMA regular.
q (B)
p (B)
Q (B S )
(B S )
at es la perturbaci
on aleatoria o innovacion (ruido blanco).
Para ajustar modelos ARIMA hay que seguir una serie de pasos. Esto es lo que
se conoce como metodologa de Box-Jenkins. Los pasos a seguir son:
1. Identificaci
on del modelo ARIMA.
2. Estimaci
on de los par
ametros.
3. Validaci
on del modelo. Si el modelo no es valido hay que volver al punto
1. Si el modelo es v
alido se pasa al siguiente punto.
4. Predicci
on de nuevos valores.
5.1.
Identificaci
on del modelo
33
5.1.1.
Series temporales en R
La hip
otesis de la varianza constante se exige en las condiciones de
estacionariedad, pero es frecuente observar que la varianza aumenta con el
nivel de la serie. En este caso la transformacion logartmica ayuda a
homogeneizar su comportamiento. Para decidir si hace falta la transformacion
logartmica se utiliza el gr
afico de la serie original o se agrupan los datos en
bandas homogeneas, dentro de las cuales se calculan los principales estadsticos
(media, varianza) que luego se representan en graficos de caja o graficos de
rango-medias.
>
>
>
>
>
>
>
350000
250000
150000
Kilowatios/hora
Varianza no constante
1975
1980
1985
1990
1995
2000
2005
1995
2000
2005
Time
12.8
12.4
12.0
log(Kilowatios/hora)
Varianza constante
1975
1980
1985
1990
Time
Generaci
on de electricidad mensual (en millones de kilowatios/hora) de enero de 1973
a diciembre de 2005 en EEUU y su transformaci
on logartmica para homogeneizar la
varianza.
34
5.1.2.
Series temporales en R
La decisi
on se basa en la combinacion de tres criterios:
Gr
aficos de la serie.
Desviaciones tpicas de las transformaciones.
Correlograma.
Test de races unitarias, como por ejemplo el test de Dikey-Fuller
aumentado.
Gr
aficos de la serie El gr
afico de una serie estacionaria no debe presentar
comportamientos tendenciales o estacionales. Si presenta alguno de estos
comportamientos, podemos tomar diferencias regulares y/o estacionales para
intentar convertirla en estacionaria. En R podemos utilizar la funcion diff()
para diferenciar las series temporales. Esta funcion tiene un argumento lag que
permite especificar los retardos. De esta manera, un lag=1 sera una diferencia
para la parte regular y un lag=12 sera una diferencia para la parte estacional
si tuvieramos observaciones mensuales. Si queremos aplicar una diferencia
regular primero y una diferencia estacional despues, utilizaremos dos veces la
funci
on diff() de forma consecutiva, como en el ejemplo que se muestra a
continuaci
on para concentraciones de CO2 .
35
>
>
>
>
>
>
>
>
>
Series temporales en R
350
360
370
380
Serie original
1994
1996
1998
2000
2002
2004
1994
1998
2000
2002
2004
1996
1996
1998
2000
2002
2004
1996
1998
2000
2002
2004
El gr
afico de una serie estacionaria no debe presentar comportamientos tendenciales
o estacionales. En caso de que estos comportamientos aparezcan en la serie original,
podemos tomar diferencias regulares y/o estacionales para convertirla a estacionaria.
36
Series temporales en R
37
Series temporales en R
0.2
0.0
0.2
0.4
0.6
0.5
1.0
1.5
0.4
0.0
0.2
0.5
1.0
1.5
Gr
afico de autocorrelaci
on de una serie estacionaria y una serie no estacionaria.
38
library(TSA)
data(tempdub)
par(cex.axis=1.5, cex.lab=1.5, cex.main=1.5)
acf(tempdub, ylab="", xlab="", main="")
0.5
0.0
0.5
>
>
>
>
Series temporales en R
0.5
1.0
1.5
Gr
afico de autocorrelaci
on de temperaturas medias mensuales.
El gr
afico de autocorrelaci
on muestra los valores de correlacion entre las
observaciones en tiempo t y t-1, t y t-2 y as sucesivamente. Cada barra
representa un retardo. Los valores en el eje x representan los a
nos y cada barra
representa un mes. Hay 12 barras en cada a
no representando cada barra la
correlaci
on entre un mes y el mes anterior, un mes y dos meses anteriores y as
sucesivamente. En este caso vemos que hay correlaciones positivas
significativas entre un mes y los meses mas proximos (1 y 2 retardos) y un mes
y el mismo mes al siguiente a
no (12 retardos y valores proximos). Tambien hay
correlaciones negativas significativas con 4, 5, 6, 7 y 8 retardos. Podemos
representar m
as o menos retardos modificando el argumento lag.max. Si
aumentamos el n
umero de retardos a 40 o 50 veremos que se produce un
decrecimiento lento de los retardos estacionales. Esto quiere decir que en t=12
la correlaci
on es alta, en t=24 algo menor, en t=36 algo menor y as
sucesivamente. Las lneas discontnuas representan el valor por encima del cual
la correlaci
on es significativa. Esto apunta a un proceso no estacionaria
estacional, por lo que sera necesario diferenciar la serie para intentar
convertirla en estacionaria.
Tomemos ahora el ejemplo de concentraciones de CO2 .
39
Series temporales en R
0.2 0.0
0.2
0.4
0.6
0.8
Gr
afico de autocorrelaci
on de las concentraciones mensuales de CO 2 (ppm).
40
5.1.3.
Series temporales en R
41
Series temporales en R
50
100
150
200
150
200
150
200
50
100
50
100
Simulaci
on de series temporales con una estructura autorregresiva, de medias m
oviles
y autorregresiva de medias m
oviles. No se pueden distinguir estos procesos a simple
vista y mucho menos el orden p y q de influencia de las observaciones e innovaciones
pasadas, respectivamente.
42
Series temporales en R
>
>
>
>
>
>
>
>
>
>
>
0.6
0.4 0.2
0.0
0.2
0.2
0.2
0.4
0.4
0.6
10
15
20
15
20
0.2
0.6
0.0
0.4
0.2
0.2
0.4
0.0
0.6
0.2
10
10
15
20
10
15
20
43
Series temporales en R
>
>
>
>
>
>
0.6
0.2
0.2
10
15
20
0.8
0.4
0.0
0.4
10
15
20
Series temporales en R
>
>
>
>
>
>
>
>
>
>
>
0.4
0.2
0.2
0.0
0.1
0.0
0.2
0.1
0.3
0.2
10
15
20
15
20
0.4
0.3
0.1
0.2
0.0
0.1
0.2
10
10
15
20
10
15
20
45
Series temporales en R
Xt = at 1 at1 2 at2
Se asume at N (0, a ) independiente (ruido blanco gaussiano).
Un MA(2) es siempre estacionario, y es invertible8 si 1 y 2 cumplen ciertas
condiciones.
La ACF de un proceso MA(2) solo tiene los dos primeros valores no nulos. La
PACF puede presentar aspectos muy distintos.
>
>
>
>
>
>
0.2
0.0
0.2
0.4
0.6
10
15
20
15
20
0.6
0.2
0.2
0.6
10
46
Series temporales en R
>
>
>
>
>
>
0.2
10
15
20
0.2
0.2
0.6
10
15
20
Series temporales en R
0.4
0.2
0.0
0.2
0.5
1.0
1.5
Siguiendo con el ejemplo de concentraciones de CO2 , vamos a ver, una vez que
se ha convertido a estacionaria la serie, cual sera la estructura optima del
modelo ARMA interpretando la ACF y la PACF. Vimos en la seccion 5.1.2
que necesit
abamos 1 diferencia regular y 1 diferencia estacional para convertir
la serie en estacionaria.
> co2.stat <- diff(diff(co2, 1), 12)
Ahora que tenemos la serie estacionaria, vamos a explorar la funcion de
autocorrelaci
on y de autocorrelacion parcial para ver si tenemos alguna idea de
cual pudiera ser la estructura optima del modelo ARMA.
48
Series temporales en R
0.4
0.0
0.2
ACF de CO2
0.0
0.5
1.0
1.5
2.0
2.5
2.0
2.5
0.4
0.2
0.0
0.2
PACF de CO2
0.0
0.5
1.0
1.5
Funciones de autocorrelaci
on (ACF) y autocorrelaci
on parcial (PACF) para la serie
estacionarizada de concentraciones de CO2 .
49
MA(q)
AR(p)
Series temporales en R
Estacionariedad
Invertibilidad
ACF
Siempre
Depende
Se corta
tras q
retardos
Hay que
comprobarlo
Siempre
Estructura
exponencial o
sinusoidal
PACF
Estructura
exponencial o
sinusoidal
Se corta
tras p
retardos
Predicciones
q predicciones
distintas de cero
sin estructura
Infinitas
predicciones
distintas de cero
pero que tienden a
cero en su
estructura
exponencial o
sinusoidal
Adem
as, conviene tener en cuenta que:
Los modelos AR, MA y ARMA son capaces de describir el
comportamiento de los procesos estacionarios con una cantidad peque
na
de par
ametros.
En los AR, la ACF y las predicciones decrecen a cero como mezcla de
exponenciales y sinusoidales.
En los MA, la ACF y las predicciones se prolongan q periodos sin
estructura.
Los modelos ARMA combinan las propiedades de los procesos AR y MA.
La funci
on de autocorrelacion parcial sirve para determinar el orden de
los procesos AR.
En general, una serie temporal puede mostrar:
Dependencia regular, que se representa con un modelo ARMA regular.
Dependencia estacional, que se representa con un modelo ARMA
estacional.
El modelo ARMA multiplicativo incorpora ambas dependencias con menos
par
ametros. Se multiplican las estructuras regular y estacional. Que tipo de
ACF podemos esperar en un modelo ARMA con dependencia regular y
estacional?
En los primeros retardos estara la ACF correspondiente a la parte
regular del modelo.
En los retardos estacionales estara la ACF correspondiente a la parte
estacional del modelo.
A la derecha e izquierda de los retardos estacoinales aparecera la
estructura regular (con el mismo signo o contrario).
50
Series temporales en R
>
>
>
>
>
>
>
>
>
>
>
0.1
0.0
0.1
0.2
MA(1)MA(1)
0.0
0.5
1.0
1.5
2.0
2.5
1.5
2.0
2.5
1.5
2.0
2.5
0.0
0.2
0.4
AR(1)MA(1)
0.0
0.5
1.0
0.0
0.2
0.4
0.6
AR(1)AR(1)
0.0
0.5
1.0
Selecci
on autom
atica del modelo ARMA Podemos utilizar tambien la
funci
on armasubsets() del paquete TSA para realizar una seleccion automatica
de la estructura
optima del modelo ARMA, una vez que la serie se ha
convertido a estacionaria y siempre que no tenga estacionalidad estacionaria.
Los argumentos de esta funci
on se muestran a continuacion:
> args(armasubsets)
function (y, nar, nma, y.name = "Y", ar.method = "ols", ...)
NULL
El argumento principal, y, es un objeto de clase ts. El argumento nar especifica
el m
aximo orden del proceso autorregresivo (AR), y el argumento nma
especifica el m
aximo orden del proceso de medias moviles (MA).
51
errorlag5
errorlag4
errorlag3
errorlag2
errorlag1
Ylag5
Ylag4
Ylag3
Ylag2
Ylag1
library(TSA)
par(cex.axis=1.5, cex.main=1.5)
bestco2 <- armasubsets(co2.stat, nar=5, nma=5)
plot(bestco2)
(Intercept)
>
>
>
>
Series temporales en R
26
24
23
BIC
19
16
12
7.7
3.3
5.2.
Estimaci
on de los par
ametros
La estimaci
on es compleja (sobre todo cuando hay MA) y requiere el uso de
algoritmos de b
usqueda de soluciones optimas. R nos va a dar una tabla de
estimaci
on de los coeficientes, generalmente muy sencilla de interpretar. En R
podemos realizar la estimaci
on de los parametros con la funcion arima() del
paquete stats. Los paquetes TSA y forecast tambien tienen sus propias
52
Series temporales en R
sma1
-0.8206
0.1137
Coefficients:
ma1
-0.5792
s.e.
0.0791
Series temporales en R
sma1
-0.8206
0.1137
5.3.
Validaci
on del modelo
54
>
>
>
>
>
Series temporales en R
0.15 0.05
0.05
0.15
0.5
1.0
1.5
0.2
0.1
0.0
0.1
0.5
1.0
1.5
Funciones de autocorrelaci
on (ACF) y autocorrelaci
on parcial (PACF) para los residuos estandarizados del modelo ARIMA para la serie de concentraciones de CO2 .
55
Series temporales en R
Box-Ljung test
data: residuals from arima.co2
X-squared = 7.051, df = 10, p-value = 0.7206
En cualquiera de los dos casos, no se puede rechazar la hipotesis nula, por lo
que asumimos que las primeras 12 autocorrelaciones son nulas. Podemos
cambiar el n
umero de autocorrelaciones con el argumento lag en cualquiera de
las dos funciones.
La representaci
on gr
afica de la serie de residuos estandarizados. El
gr
afico de los residuos debe mostrar que los residuos varan en torno al
cero, sin tendencias, la varianza es constante y no hay valores atpicos.
Aproximadamente el 95 % de los residuos estandarizados deben estar
entre -2 y 2 desviaciones tpicas.
>
>
>
>
>
1994
1996
1998
2000
2002
2004
Representaci
on gr
afica de los residuos estandarizados del modelo ARIMA para la serie
de concentraciones de CO2 .
Finalmente, podemos utilizar la funcion tsdiag() para sacar todos estos graficos
de forma conjunta. La funci
on tsdiag() es una funcion generica y por ello puede
dar problemas a la hora de obtener todos los graficos de forma conjunta
especificando u
nicamente el modelo ARIMA.
56
Series temporales en R
Standardized Residuals
1996
1998
2000
2002
2004
0.1
0.0
0.1
ACF of Residuals
Time
10
15
20
0.6
0.4
0.0
0.2
Pvalues
0.8
1.0
Lag
10
15
20
Number of lags
Evaluaci
on del modelo ARIMA con la funci
on tsdiag().
5.4.
Predicci
on de nuevos valores
57
>
>
>
>
>
Series temporales en R
370
380
390
400
410
2006
2008
2010
2012
2014
Representaci
on gr
afica de las predicciones del modelo ARIMA para la serie de concentraciones de CO2 .
M
as f
acil todava. Podemos utilizar la funcion plot.Arima() del paquete TSA
para sacar gr
aficos de las predicciones. La ventaja de utilizar esta funcion es
que ya saca directamente la serie historica junto a las predicciones.
> tit <- "Predicciones del modelo ARIMA para el periodo 1998-2008"
> plot(arima.co2, n.ahead=120, xlab="", ylab="", main=tit, type="l")
350
360
370
380
390
400
410
1995
2000
2005
2010
2015
Representaci
on gr
afica de la serie temporal de concentraciones de CO2 y las predicciones del modelo ARIMA.
6.
Referencias
Box, G.E.P., Jenkins, G.M. & Reinsel, G. (1996). Time series analysis:
forecasting and control. Prentice-Hall.
Cryer, J.D. & Chank, K.-S. (2008). Time series analysis with
applications in R. Second Edition. Springer, USA.
58
Series temporales en R
Pe
na S
anchez, D. (2005). Analisis de series temporales. Alianza
Editorial, Madrid.
Shumway, R.H. & Stoffer, D.S. (2006). Time series analysis and its
applications with R examples. Springer, USA.
59