Sie sind auf Seite 1von 34

Analisis de Series de Tiempo

Aplicaciones en R - Parte I

Juan Carlos Campuzano S.


Escuela Superior Polit
ecnica del Litoral

Semestre I 2013

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

1 / 34

Preliminares

Estas practicas utilizan los paquetes de R que acompa


nan a las
publicaciones Introductory Time Series with R, de Cowperwait, P.y
Metcalfe, A. (2009), Time Series Analysis with R de Ian McLeod, Hao
Yu y Esam Mahdi (2012) y Time Series Analysis with Applications in R
de Cryer, J.y Chan, K. (2008).
Por lo tanto, se aconseja instalar los siguientes paquetes antes de empezar:
R>
R>
R>
R>

install.packages("TSA",dep=TRUE)
install.packages("RColorBrewer")
install.packages("latticeExtra")
install.packages("tseries")

El documento de ayuda del paquete TSA lo puede descargar de la siguiente


direccion: http://cran.r-project.org/web/packages/TSA/TSA.pdf
Las diapositivas fueron elaboradas en Beamer con la ayuda del paquete
SASnRdisplay.
J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

2 / 34

Preliminares

Preliminares

Las series de tiempo son analizadas para entender el pasado y predecir


el futuro, permitiendo a los administradores o hacedores de poltica
tomar decisiones informados apropiadamente.
En terminos cientficos, el prop
osito del analisis de las series de tiempo
es entender o modelar el mecanismo estocastico que da movimiento a
una serie observada y predecir los valores futuros de la serie basado en
su historia y posiblemente de otras series o factores relacionados.
Los metodos de series de tiempo son utilizadas todos los das en la
toma de decisiones.
Las series de tiempo tambien suelen formar la base de simulaciones
por computadora.

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

3 / 34

Gr
afico de Series de Tiempo

Grafico de Series de Tiempo

En esta seccion el interes esta en la grafica de las series de tiempo. Dichos


graficos generalmente son el primer paso en un analisis exploratorio y
presentados en un reporte final.

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

4 / 34

Gr
afico de Series de Tiempo

Grafico de Series de Tiempo


Ejemplo 1: Paseo aleatorio

Uno de los procesos mas elemental para el analisis de series de tiempo es


un paseo aleatorio:
R> library(TSA)
R> data(rwalk)
R> plot(rwalk, ylab=Paseo Aleatorio, type=o)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

5 / 34

Gr
afico de Series de Tiempo

Grafico de Series de Tiempo


Ejemplo 2: Precios del Trigo

Este ejemplo tiene como prop


osito mostrar el uso del comando plot()
con los datos del ndice de precios del trigo en Canada (Beveridge wheat
price index).

R> library(TSA)
R> data(bev)
R> plot(bev)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

6 / 34

Gr
afico de Series de Tiempo

Grafico de Series de Tiempo


Ejemplo 2: Precios del Trigo

A
nadiendo algunas opciones adicionales al comando plot() se pueden
tener mejores resultados:
R> win.graph(width=4.875, height=2.5, pointsize=8)
R> plot(bev, ylab=indice, xlab=ano, type=o)
R> plot(bev, ylab=indice, xlab=ano, type=l)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

7 / 34

Gr
afico de Series de Tiempo

Gafico de Series de Tiempo


Ejemplo 3: Estacionalidades

En ocasiones un evento se repite sistematicamente a lo largo del tiempo y


para el analisis de series de tiempo, visualizar estos patrones resulta
s
umamente u
til:
R> data(oilfilters); plot(oilfilters, type=o, ylab=Ventas)
R> win.graph(width=4.875, height=2.5, pointsize=8)
R> plot(oilfilters, type=l, ylab=Ventas)
R> points(y=oilfilters, x=time(oilfilters), pch=as.vector(season(oilfilters)))

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

8 / 34

Gr
afico de Series de Tiempo

Grafico de Series de Tiempo


Ejemplo 4: G
afico de M
ultiples Series de Tiempo

En otras ocasiones tambien es importante graficar m


ultiples series de
tiempo:
R> www <- "http://staff.elena.aut.ac.nz/Paul-Cowpertwait/ts/cbe.dat"

R> CBE <- read.table(www, header = T)


R> CBE[1:4, ]
R>
R>
R>
R>

Elec.ts <- ts(CBE[,


Beer.ts <- ts(CBE[,
Choc.ts <- ts(CBE[,
plot(cbind(Elec.ts,

J. Campuzano (E.S.P.O.L)

3], start = 1958, freq = 12


2], start = 1958, freq = 12)
1], start = 1958, freq = 12)
Beer.ts, Choc.ts))

Series de Tiempo en R

Semestre I 2013

9 / 34

Gr
afico de Series de Tiempo

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

10 / 34

Gr
afico de Series de Tiempo

Grafico de Series de Tiempo


Ejemplo 5: Agrupaci
on y Tendencias

Sin lugar a dudas, agrupar frecuencias y visualizar tendencias es una de los


principales analisis graficos que se suelen realizar a las series de tiempo. El
ejemplo a continuacion corresponde a observaciones sobre series de
temperaturas.
En el primer paso observese la frecuencia mensual de la serie entre los
periodos inicial y final:
R>
R>
R>
R>

www <- "http://staff.elena.aut.ac.nz/Paul-Cowpertwait/ts/global.dat"


Global <- scan(www)
Global.ts <- ts(Global, st = c(1856, 1), end = c(2005, 12), fr = 12)
win.graph(width=4.875, height=2.5, pointsize=8)

R> plot(Global.ts, ylab=Temperatura, xlab=periodo)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

11 / 34

Gr
afico de Series de Tiempo

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

12 / 34

Gr
afico de Series de Tiempo

Luego, se puede proceder a agrupar las frecuencias por promedios


mensuales:
R> Global.anual <- aggregate(Global.ts, FUN = mean)
R> win.graph(width=4.875, height=2.5, pointsize=8)
R> plot(Global.anual, ylab=Temp, xlab=Per)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

13 / 34

Gr
afico de Series de Tiempo

Finalmente, se observa que desde los 70 existe incremento en las


temperaturas, por lo que sera importante analizar la tendencia:
R>
R>
R>
R>

New.series <-window(Global.ts, start = c(1970, 1), end = c(2005, 12))


New.time <-time(New.series)
win.graph(width=4.875, height=2.5, pointsize=8)
plot(New.series); abline(reg=lm(New.series~New.time))

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

14 / 34

Gr
afico de Series de Tiempo

Grafico de Series de Tiempo


Ejemplo 6: Descomposici
on de una Serie

Si existe evidencia de una tendencia en una serie, resulta u


til descomponer
la serie para estimar la tendencia y efectos estacionales. Se presenta un
ejemplo con los datos de electricidad.
R>
R>
R>
R>
R>

www <- "http://staff.elena.aut.ac.nz/Paul-Cowpertwait/ts/cbe.dat"


CBE <- read.table(www, header = T)
Elec.ts <- ts(CBE[, 3], start = 1958, freq = 12)
win.graph(width=4.875, height=3.5, pointsize=8)
plot(decompose(Elec.ts))

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

15 / 34

Gr
afico de Series de Tiempo

Tambien se puede realizar una descomposici


on multiplicativa...:
R> Elec.decom <- decompose(Elec.ts, type = "mult")
R> win.graph(width=4.875, height=3.5, pointsize=8)
R> plot(Elec.decom)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

16 / 34

Gr
afico de Series de Tiempo

... o superponer la tendencia y el componente estacional.


R> Trend <- Elec.decom$trend
R> Seasonal <- Elec.decom$seasonal
R> ts.plot(cbind(Trend, Trend * Seasonal), lty = 1:2)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

17 / 34

Correlaci
on

Funciones de autocorrelacion Procesos Estacionarios


Correlograma

El principal proposito del correlograma es detectar autocorrelaciones en las


series de tiempo luego de haberles removido y estimado la tendencia y la
variacion estacional. El siguiente ejemplo se realiza con la serie de
Pasajeros que viene en el paquete R.
R>
R>
R>
R>
R>

data(AirPassengers)
AP <- AirPassengers
AP.decom <- decompose(AP, "multiplicative")
plot(ts(AP.decom$random[7:138]))
acf(AP.decom$random[7:138])

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

18 / 34

Correlaci
on

Serie Pasajeros (estacionaria)

J. Campuzano (E.S.P.O.L)

Correlograma

Series de Tiempo en R

Semestre I 2013

19 / 34

Procesos ARMA

Analisis Procesos AR(p)

R> win.graph(width=4.875, height=3, pointsize=8)


R> data(ar1.s); plot(ar1.s, ylab=expression(Y[t]), type=o)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

20 / 34

Procesos ARMA

Correlacion entre los rezagos t y t 1

R> win.graph(width=3, height=3, pointsize=8)


R> plot(y=ar1.s,x=zlag(ar1.s),ylab=expression(Y[t]),xlab=expression(Y[t-1]), type=p)

R> acf(ar1.s)

Relacion entre rezagos

J. Campuzano (E.S.P.O.L)

Correlograma

Series de Tiempo en R

Semestre I 2013

21 / 34

Procesos ARMA

Simulacion Procesos ARMA


AR(2)

Simulemos el proceso visto en clases, un AR(2) de la forma:


Yt = 0.5Yt1 + 0.3Yt2 + t con 100 observaciones:

R> ar.sim<-arima.sim(model=list(ar=c(.5,.3)),n=100)
R> ar.sim

La funcion de autocorrelaci
on simple (acf):
R> ar.acf<-acf(ar.sim,type="correlation",plot=T)
R> ar.acf

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

22 / 34

Procesos ARMA

Las graficas del proceso anterior se obtienen de:


R>
R>
R>
R>

win.graph(width=4.875, height=3, pointsize=8)


plot(ar.sim, ylab=expression(Y[t]), type=o)
ar.acf<-acf(ar.sim,type="correlation",plot=T)
ar.acf

Yt = 0.5Yt1 + 0.3Yt2 + t

J. Campuzano (E.S.P.O.L)

Correlograma

Series de Tiempo en R

Semestre I 2013

23 / 34

Procesos ARMA

Ahora simulemos una variante del proceso anterior:


Yt = 0.5Yt1 0.3Yt2 + t con 100 observaciones:

R> ar.sim2<-arima.sim(model=list(ar=c(.5,-.3)),n=100)
R> ar.sim2

La funcion de autocorrelaci
on simple:
R> ar.acf<-acf(ar.sim2,type="correlation",plot=T)
R> ar.acf

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

24 / 34

Procesos ARMA

Las graficas del proceso anterior se obtienen de:


R>
R>
R>
R>

win.graph(width=4.875, height=3, pointsize=8)


plot(ar.sim2, ylab=expression(Y[t]), type=o)
ar.acf<-acf(ar.sim2,type="correlation",plot=T)
ar.acf

Yt = 0.5Yt1 0.3Yt2 + t

J. Campuzano (E.S.P.O.L)

Correlograma

Series de Tiempo en R

Semestre I 2013

25 / 34

Procesos ARMA

Que sucede cuando el proceso NO ES estacionario? Simulemos el proceso


Yt = 0.9Yt1 + 0.3Yt2 + t con 100 observaciones:

R> ar.sim3<-arima.sim(model=list(ar=c(.9,.3)),n=100)
R> ar.sim3

La funcion de autocorrelaci
on simple:
R> ar.acf<-acf(ar.sim3,type="correlation",plot=T)
R> ar.acf

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

26 / 34

Procesos ARMA

Las graficas del proceso anterior nos dan una pista:


R>
R>
R>
R>

win.graph(width=4.875, height=3, pointsize=8)


plot(ar.sim3, ylab=expression(Y[t]), type=o)
ar.acf<-acf(ar.sim3,type="correlation",plot=T)
ar.acf

Yt = 0.9Yt1 + 0.3Yt2 + t

J. Campuzano (E.S.P.O.L)

Correlograma

Series de Tiempo en R

Semestre I 2013

27 / 34

Procesos ARMA

Simulacion Procesos ARMA


MA(2)

Ahora simulemos un MA(2) de la forma: Yt = t 0.7t1 + 0.1t2 con


100 observaciones:
R> ma.sim<-arima.sim(model=list(ma=c(-.7,.1)),n=100)
R> ma.sim
La grafica del proceso anterior se obtiene de:
R> win.graph(width=4.875, height=3, pointsize=8)
R> plot(ma.sim, ylab=expression(e[t]), type=o)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

28 / 34

Procesos ARMA

Las funciones de autocorrelaci


on simple y parcial:
R>
R>
R>
R>

ma.acf<-acf(ma.sim,type="correlation",plot=T)
ma.acf
ma.pacf<-acf(ma.sim,type="partial",plot=T)
ma.pacf

Funcion de autocorrelaci
on
simple ACF

J. Campuzano (E.S.P.O.L)

Funci
on de autocorrelacion
parcial PACF

Series de Tiempo en R

Semestre I 2013

29 / 34

Procesos ARMA

Simulacion Procesos ARMA


ARMA(2,2)

Ahora simulemos un ARMA(2,2) de la forma:


Yt = 0.5Yt1 0.2Yt2 + t 0.4t1 + 0.3t2 con 100 observaciones:

R> arma.sim<-arima.sim(model=list(ar=c(.5,-.2),ma=c(-.4,.3)),n=100)

R> arma.sim

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

30 / 34

Procesos ARMA

El proceso anterior se vera como:


R> require("tseries")
R> win.graph(width=4.875, height=3, pointsize=8)
R> ts.plot(arma.sim)

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

31 / 34

Procesos ARMA

Las funciones de autocorrelaci


on simple y parcial:
R> arma.acf<-acf(arma.sim,type="correlation",plot=T)
R> arma.acf
R> arma.pacf<-acf(arma.sim,type="partial",plot=T)
R>arma.pacf

Funcion de autocorrelaci
on
simple ACF

J. Campuzano (E.S.P.O.L)

Funci
on de autocorrelacion
parcial PACF

Series de Tiempo en R

Semestre I 2013

32 / 34

Procesos ARMA

Para recordar
El orden de un proceso AR(p) se analiza en la funcion de
autocorrelacion parcial, pacf, mientras la estacionariedad se analiza
en la funcion de autocorrelaci
on simple, acf.
El orden de un proceso MA(q) se analiza en la funcion de
autocorrelacion simpre, acf, mientras que la invertibilidad se analiza
en la funcion de autocorrelaci
on parcial, pacf.

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

33 / 34

Bibliografa

Bibliografa

Cowperwait, P., Metcalfe, A. (2009) Introductory Time Series with


R. Springer.
A. Ian McLeod, Hao Yu, Esam Mahdi (2012) Time Series Analysis
with R. Handbook of Statistics. Volume 30. Pages 661- 712.
Elsevier
Cryer, J., Chan, K. (2008) Time Series Analysis with Applications in
R. Springer

J. Campuzano (E.S.P.O.L)

Series de Tiempo en R

Semestre I 2013

34 / 34

Das könnte Ihnen auch gefallen