[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