[R-es] Matriz series temporales

Oscar Perpiñan Lamigueiro oscar.perpinan en upm.es
Sab Oct 22 22:48:11 CEST 2011


Hola,

Con el paquete zoo puedes crear una serie temporal multivariante.
Reutilizo parte del código de Carlos para construir el data.frame
inicial:

lin.dat<-"idProvincia Provincia a2002.iv a2003.i a2003.ii a2003.iii
a2003.iv a2004.i
1 BUENOS_AIRES 1497515 2426758 3317094 3981913 3982320 4082995
2 CAPITAL_FEDERAL 8458 173672 222065 217656 211537 221983
3 CATAMARCA  8533 23602 103840 139583 155490 165681
4 CHACO 142589 240029 400891 581510 569630 550476
5 CHUBUT 38847 61930 99964 121983 135666 133713
6 CORDOBA 138281 471660 1002984 1240039 1245946 1414945
"

dat.df <- read.table(textConnection(lin.dat), header=TRUE)
closeAllConnections()


library(zoo)

## El índice temporal lo defino con la clase yearqtr
idx <- as.yearqtr(seq(2002.25, 2004, by=.25))
## Los datos son todo el data.frame menos las dos primeras columnas
## Además, le doy la vuelta
datos <- t(dat.df[,-c(1,2)])
## Construyo el objeto zoo
z <- zoo(datos, idx)
## Y le pongo nombres a las variables
names(z) <- dat.df$Provincia

##Represento toda la serie temporal en un único gráfico
library(lattice)
xyplot(z, superpose=TRUE, auto.key=list(space='right'))

## Se puede acceder a una de las variables con "$" o con [] como en el
## caso de un data.frame
z$CATAMARCA
z[,"CATAMARCA"]
xyplot(z$CATAMARCA)


Saludos.

Oscar.

 El
Sat, 22 Oct 2011 22:07:20 +0200 Carlos Ortega
<cof en qualityexcellence.es> escribió:
> Hola,
> 
> De esta forma con un bucle sí que cicla sobre cada provincia y genera
> el objeto ts...
> 
> 
> lin.dat<-"idProvincia Provincia a2002.iv a2003.i a2003.ii a2003.iii
> a2003.iv a2004.i
> 1 BUENOS_AIRES 1497515 2426758 3317094 3981913 3982320 4082995
> 2 CAPITAL_FEDERAL 8458 173672 222065 217656 211537 221983
> 3 CATAMARCA  8533 23602 103840 139583 155490 165681
> 4 CHACO 142589 240029 400891 581510 569630 550476
> 5 CHUBUT 38847 61930 99964 121983 135666 133713
> 6 CORDOBA 138281 471660 1002984 1240039 1245946 1414945
> "
> 
> dat.df <- read.table(textConnection(lin.dat), skip=1, as.is = TRUE,
>                      col.names=c("Id", "Prov", "a2002.4", "a2003.1",
> "a2003.2", "a2003.3", "a2003.4","a2004.1"))
> closeAllConnections()
> 
> p.d<-dat.df$Prov
> for(i in 1:length(p.d)) {
> 
>   print(p.d[i])
>   d.f.ts<-unlist(c(dat.df[dat.df$Prov==p.d[i], 3:8]))
>   names(d.f.ts)<-NULL
>   ts.dat<-ts(d.f.ts, frequency=4, start(2002,4))
>   plot(ts.dat)
> 
> }
> 
> 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
> 
> El 22 de octubre de 2011 20:59, Mauricio Monsalvo
> <m.monsalvo en gmail.com>escribió:
> 
> > Estimados:
> > Tengo la siguiente matriz de datos:
> > > consultas
> >
> >  idProvincia       Provincia  a2002.iv   a2003.i  a2003.ii a2003.iii
> > a2003.iv   a2004.i
> > 1           1    BUENOS AIRES 1,497,515 2,426,758 3,317,094
> > 3,981,913 3,982,320 4,082,995
> > 2           2 CAPITAL FEDERAL    84,581   173,672   222,065
> > 217,656 211,537   221,983
> >
> > 3           3       CATAMARCA     8,533    23,602   103,840
> > 139,583 155,490   165,681
> > 4           4           CHACO   142,589   240,029   400,891
> > 581,510 569,630   550,476
> > 5           5          CHUBUT    38,847    61,930    99,964
> > 121,983 135,666   133,713
> >
> > 6           6         CORDOBA   138,281   471,660 1,002,984
> > 1,240,039 1,245,946 1,414,945
> >
> > Es un data.frame que corresponde a una serie de consultas por
> > provincia (idProvincia, Provincia) por trimestre para datos de 2002
> > (iv trimestre) a 2011 (iii trimestre).-
> > Estoy intentando definirlo como una serie de tiempo, para usarlo
> > para modelar cada Provincia por separado, algo así como lo que
> > resultaría de:
> > > consultas.serie <- ts(x,frequency=4, start = c(2002, 3))
> > a lo que le faltaría el parámetro para definir que idProvincia y
> > Provincia son una dimensión espacial. Pero incluso filtrando una
> > sola provincia, el comando no funciona. Entiendo que debería
> > convertir los datos a un vector, y
> > luego si funcionaría, pero tampoco se hacerlo :( y supongo no es la
> > forma elegante.
> > ¿Con qué comandos puedo acomodar el data.frame para trabajar con
> > series temporales según provincia?
> > No es posible ajustar el archivo de base porque es un .xls que
> > resulta de otros tantos, y la intención es usar R a partir de este
> > resultado. Muchas gracias.
> > --
> > Mauricio
> >
> >        [[alternative HTML version deleted]]
> >
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> >
> 
> 	[[alternative HTML version deleted]]
> 



Más información sobre la lista de distribución R-help-es