Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Series de Tiempo en R parte I (Series estacionarias)

  • Login to see the comments

Series de Tiempo en R parte I (Series estacionarias)

  1. 1. An´alisis de Series de TiempoAplicaciones en R - Parte IJuan Carlos Campuzano S.Escuela Superior Polit´ecnica del LitoralSemestre I 2013J. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 1 / 34
  2. 2. PreliminaresEstas pr´acticas utilizan los paquetes de R que acompa˜nan a laspublicaciones ”Introductory Time Series with R”, de Cowperwait, P.yMetcalfe, A. (2009), ”Time Series Analysis with R” de Ian McLeod, HaoYu 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> install.packages("TSA",dep=TRUE)R> install.packages("RColorBrewer")R> install.packages("latticeExtra")R> install.packages("tseries")El documento de ayuda del paquete TSA lo puede descargar de la siguientedirecci´on: http://cran.r-project.org/web/packages/TSA/TSA.pdfLas diapositivas fueron elaboradas en Beamer con la ayuda del paqueteSASnRdisplay.J. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 2 / 34
  3. 3. PreliminaresPreliminaresLas series de tiempo son analizadas para entender el pasado y predecirel futuro, permitiendo a los administradores o hacedores de pol´ıticatomar decisiones informados apropiadamente.En t´erminos cient´ıficos, el prop´osito del an´alisis de las series de tiempoes entender o modelar el mecanismo estoc´astico que da movimiento auna serie observada y predecir los valores futuros de la serie basado ensu historia y posiblemente de otras series o factores relacionados.Los m´etodos de series de tiempo son utilizadas todos los d´ıas en latoma de decisiones.Las series de tiempo tambi´en suelen formar la base de simulacionespor computadora.J. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 3 / 34
  4. 4. Gr´afico de Series de TiempoGr´afico de Series de TiempoEn esta secci´on el inter´es est´a en la gr´afica de las series de tiempo. Dichosgr´aficos generalmente son el primer paso en un an´alisis exploratorio ypresentados en un reporte final.J. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 4 / 34
  5. 5. Gr´afico de Series de TiempoGr´afico de Series de TiempoEjemplo 1: Paseo aleatorioUno de los procesos m´as elemental para el an´alisis de series de tiempo esun 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
  6. 6. Gr´afico de Series de TiempoGr´afico de Series de TiempoEjemplo 2: Precios del TrigoEste ejemplo tiene como prop´osito mostrar el uso del comando plot()con los datos del ´ındice de precios del trigo en Canad´a (Beveridge wheatprice 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
  7. 7. Gr´afico de Series de TiempoGr´afico de Series de TiempoEjemplo 2: Precios del TrigoA˜nadiendo algunas opciones adicionales al comando plot() se puedentener 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
  8. 8. Gr´afico de Series de TiempoG´afico de Series de TiempoEjemplo 3: EstacionalidadesEn ocasiones un evento se repite sistem´aticamente a lo largo del tiempo ypara el an´alisis de series de tiempo, visualizar estos patrones resultas´umamente ´util: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
  9. 9. Gr´afico de Series de TiempoGr´afico de Series de TiempoEjemplo 4: G´afico de M´ultiples Series de TiempoEn otras ocasiones tambi´en es importante graficar m´ultiples series detiempo: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> Elec.ts <- ts(CBE[, 3], start = 1958, freq = 12R> Beer.ts <- ts(CBE[, 2], start = 1958, freq = 12)R> Choc.ts <- ts(CBE[, 1], start = 1958, freq = 12)R> plot(cbind(Elec.ts, Beer.ts, Choc.ts))J. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 9 / 34
  10. 10. Gr´afico de Series de TiempoJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 10 / 34
  11. 11. Gr´afico de Series de TiempoGr´afico de Series de TiempoEjemplo 5: Agrupaci´on y TendenciasSin lugar a dudas, agrupar frecuencias y visualizar tendencias es una de losprincipales an´alisis gr´aficos que se suelen realizar a las series de tiempo. Elejemplo a continuaci´on corresponde a observaciones sobre series detemperaturas.En el primer paso obs´ervese la frecuencia mensual de la serie entre losperiodos inicial y final:R> www <- "http://staff.elena.aut.ac.nz/Paul-Cowpertwait/ts/global.dat"R> Global <- scan(www)R> Global.ts <- ts(Global, st = c(1856, 1), end = c(2005, 12), fr = 12)R> 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
  12. 12. Gr´afico de Series de TiempoJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 12 / 34
  13. 13. Gr´afico de Series de TiempoLuego, se puede proceder a agrupar las frecuencias por promediosmensuales: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
  14. 14. Gr´afico de Series de TiempoFinalmente, se observa que desde los ’70 existe incremento en lastemperaturas, por lo que ser´ıa importante analizar la tendencia:R> New.series <-window(Global.ts, start = c(1970, 1), end = c(2005, 12))R> New.time <-time(New.series)R> win.graph(width=4.875, height=2.5, pointsize=8)R> 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
  15. 15. Gr´afico de Series de TiempoGr´afico de Series de TiempoEjemplo 6: Descomposici´on de una SerieSi existe evidencia de una tendencia en una serie, resulta ´util descomponerla serie para estimar la tendencia y efectos estacionales. Se presenta unejemplo con los datos de electricidad.R> www <- "http://staff.elena.aut.ac.nz/Paul-Cowpertwait/ts/cbe.dat"R> CBE <- read.table(www, header = T)R> Elec.ts <- ts(CBE[, 3], start = 1958, freq = 12)R> win.graph(width=4.875, height=3.5, pointsize=8)R> plot(decompose(Elec.ts))J. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 15 / 34
  16. 16. Gr´afico de Series de TiempoTambi´en 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
  17. 17. Gr´afico de Series de Tiempo... o superponer la tendencia y el componente estacional.R> Trend <- Elec.decom$trendR> Seasonal <- Elec.decom$seasonalR> 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
  18. 18. Correlaci´onFunciones de autocorrelaci´on Procesos EstacionariosCorrelogramaEl principal prop´osito del correlograma es detectar autocorrelaciones en lasseries de tiempo luego de haberles removido y estimado la tendencia y lavariaci´on estacional. El siguiente ejemplo se realiza con la serie dePasajeros que viene en el paquete R.R> data(AirPassengers)R> AP <- AirPassengersR> AP.decom <- decompose(AP, "multiplicative")R> plot(ts(AP.decom$random[7:138]))R> acf(AP.decom$random[7:138])J. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 18 / 34
  19. 19. Correlaci´onSerie Pasajeros (estacionaria) CorrelogramaJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 19 / 34
  20. 20. Procesos ARMAAn´alisis 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
  21. 21. Procesos ARMACorrelaci´on entre los rezagos t y t − 1R> 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)Relaci´on entre rezagos CorrelogramaJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 21 / 34
  22. 22. Procesos ARMASimulaci´on Procesos ARMAAR(2)Simulemos el proceso visto en clases, un AR(2) de la forma:Yt = 0.5Yt−1 + 0.3Yt−2 + εt con 100 observaciones:R> ar.sim<-arima.sim(model=list(ar=c(.5,.3)),n=100)R> ar.simLa funci´on de autocorrelaci´on simple (acf):R> ar.acf<-acf(ar.sim,type="correlation",plot=T)R> ar.acfJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 22 / 34
  23. 23. Procesos ARMALas gr´aficas del proceso anterior se obtienen de:R> win.graph(width=4.875, height=3, pointsize=8)R> plot(ar.sim, ylab=expression(Y[t]), type=’o’)R> ar.acf<-acf(ar.sim,type="correlation",plot=T)R> ar.acfYt = 0.5Yt−1 + 0.3Yt−2 + εt CorrelogramaJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 23 / 34
  24. 24. Procesos ARMAAhora simulemos una variante del proceso anterior:Yt = 0.5Yt−1 − 0.3Yt−2 + εt con 100 observaciones:R> ar.sim2<-arima.sim(model=list(ar=c(.5,-.3)),n=100)R> ar.sim2La funci´on de autocorrelaci´on simple:R> ar.acf<-acf(ar.sim2,type="correlation",plot=T)R> ar.acfJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 24 / 34
  25. 25. Procesos ARMALas gr´aficas del proceso anterior se obtienen de:R> win.graph(width=4.875, height=3, pointsize=8)R> plot(ar.sim2, ylab=expression(Y[t]), type=’o’)R> ar.acf<-acf(ar.sim2,type="correlation",plot=T)R> ar.acfYt = 0.5Yt−1 − 0.3Yt−2 + εt CorrelogramaJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 25 / 34
  26. 26. Procesos ARMAQu´e sucede cuando el proceso NO ES estacionario? Simulemos el procesoYt = 0.9Yt−1 + 0.3Yt−2 + εt con 100 observaciones:R> ar.sim3<-arima.sim(model=list(ar=c(.9,.3)),n=100)R> ar.sim3La funci´on de autocorrelaci´on simple:R> ar.acf<-acf(ar.sim3,type="correlation",plot=T)R> ar.acfJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 26 / 34
  27. 27. Procesos ARMALas gr´aficas del proceso anterior nos dan una pista:R> win.graph(width=4.875, height=3, pointsize=8)R> plot(ar.sim3, ylab=expression(Y[t]), type=’o’)R> ar.acf<-acf(ar.sim3,type="correlation",plot=T)R> ar.acfYt = 0.9Yt−1 + 0.3Yt−2 + εt CorrelogramaJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 27 / 34
  28. 28. Procesos ARMASimulaci´on Procesos ARMAMA(2)Ahora simulemos un MA(2) de la forma: Yt = εt − 0.7εt−1 + 0.1εt−2 con100 observaciones:R> ma.sim<-arima.sim(model=list(ma=c(-.7,.1)),n=100)R> ma.simLa gr´afica 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
  29. 29. Procesos ARMALas funciones de autocorrelaci´on simple y parcial:R> ma.acf<-acf(ma.sim,type="correlation",plot=T)R> ma.acfR> ma.pacf<-acf(ma.sim,type="partial",plot=T)R> ma.pacfFunci´on de autocorrelaci´onsimple ACFFunci´on de autocorrelaci´onparcial PACFJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 29 / 34
  30. 30. Procesos ARMASimulaci´on Procesos ARMAARMA(2,2)Ahora simulemos un ARMA(2,2) de la forma:Yt = 0.5Yt−1 − 0.2Yt−2 + εt − 0.4εt−1 + 0.3εt−2 con 100 observaciones:R> arma.sim<-arima.sim(model=list(ar=c(.5,-.2),ma=c(-.4,.3)),n=100)R> arma.simJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 30 / 34
  31. 31. Procesos ARMAEl proceso anterior se ver´ıa 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
  32. 32. Procesos ARMALas funciones de autocorrelaci´on simple y parcial:R> arma.acf<-acf(arma.sim,type="correlation",plot=T)R> arma.acfR> arma.pacf<-acf(arma.sim,type="partial",plot=T)R>arma.pacfFunci´on de autocorrelaci´onsimple ACFFunci´on de autocorrelaci´onparcial PACFJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 32 / 34
  33. 33. Procesos ARMAPara recordarEl orden de un proceso AR(p) se analiza en la funci´on deautocorrelaci´on parcial, pacf, mientras la estacionariedad se analizaen la funci´on de autocorrelaci´on simple, acf.El orden de un proceso MA(q) se analiza en la funci´on deautocorrelaci´on simpre, acf, mientras que la invertibilidad se analizaen la funci´on de autocorrelaci´on parcial, pacf.J. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 33 / 34
  34. 34. Bibliograf´ıaBibliograf´ıaCowperwait, P., Metcalfe, A. (2009) ”Introductory Time Series withR. Springer.A. Ian McLeod, Hao Yu, Esam Mahdi (2012) ”Time Series Analysiswith R”. Handbook of Statistics. Volume 30. Pages 661- 712.ElsevierCryer, J., Chan, K. (2008) ”Time Series Analysis with Applications inR”. SpringerJ. Campuzano (E.S.P.O.L) Series de Tiempo en R Semestre I 2013 34 / 34

×