Manipuler des Séries Chronologiques

Ce matin en cours, on a vu un peu comment manipuler des séries temporelles, et en particulier comme jouer avec l’échelle de temps (passer de données hebdomadaire à de données mensuelles, par exemple).

Pour commencer, travaillons un peu sur les données extraites de google.fr/trends/ par exemple sur le mot clé fièvre,

report = read.csv(
"http://freakonometrics.free.fr/report-fievre.csv",
  skip=6,header=FALSE,nrows=626)
 X=report$V2
 plot(X,type="l")

Au lieu d’avoir un vecteur, on peut créer un format de série temporelle (hebdomadaire )

 X_h=ts(X,start=c(2004,3),frequency=52)
 plot(X_h)

On va essayer d’agréger les données pour les rendre mensuelles

 date1=substr(as.character(report$V1),1,10)
 date2=substr(as.character(report$V1),14,23) 
 d1=as.Date(date1,"%Y-%m-%d")
 d2=as.Date(date2,"%Y-%m-%d")
 d1[2]-d1[1]
 Vect_J=Vect_M=Vect_X=Vect_A= NULL
 for(i in 1:length(d1)){
   jours = seq(d1[i],d2[i],length=7)
   mois = as.POSIXlt(jours)$mon+1
   annees = as.POSIXlt(jours)$year+1900
   donnees = rep(X[i],7)
   Vect_J = c(Vect_J,jours)
   Vect_M = c(Vect_M,mois)
   Vect_A = c(Vect_A,annees)
   Vect_X = c(Vect_X,donnees)
 }
 base=data.frame(J=Vect_J,M=Vect_M,
                 A=Vect_A,X=Vect_X)
 head(base)
 base$AM = base$A*100+base$M
 head(base)
 Y=tapply(base$X,as.factor(base$AM),mean)
 Z=ts(as.numeric(Y[1:144]),
 start=c(2004,1),frequency=12)
 plot(Z)

On peut superposer les deux d’ailleurs (il y a peut être un léger décalage sur la série hebdomadaire)

plot(X_h,col="blue")
lines(as.numeric(time(Z)),as.numeric(Z),
col="red",lwd=2)

Sur ecad.eu on peut récupérer la pluviométrie, à Rennes, depuis 1927, en données journalière

pluie=read.table("RR_SOUID104924.txt",
skip=21,sep=',',header=TRUE)
 base=pluie[pluie$Q_RR==0,]
 date1=as.Date(
   as.character(base$DATE),"%Y%m%d")
 X=base$RR
 plot(date1,X,type="h")

Là encore, on peut agréger pour avoir des données mensuelles (de moyennes journalières, par mois)

 mois = as.POSIXlt(date1)$mon+1
 annees = as.POSIXlt(date1)$year+1900
 AM = annees*100+mois
 Y=tapply(X,as.factor(AM),mean)
 Z=ts(as.numeric(Y),start=c(1927,1),frequency=12)
 plot(Z)

On peut d’ailleurs regarder, ensuite, par mois, le niveau de pluie,

mois = time(Z)-trunc(time(Z))+1/24
plot(mois,as.numeric(Z))
Z_m=tapply(as.numeric(Z),as.factor(mois),mean)
lines(as.numeric(names(Z_m)),Z_m,lwd=2,col="red")



Cite this blog post
Arthur Charpentier (2016, January 7). Manipuler des Séries Chronologiques. Freakonometrics. Retrieved June 14, 2024, from https://doi.org/10.58079/ov1z

One thought on “Manipuler des Séries Chronologiques”

  1. hello
    may you help me by sending to me some courses for the beginners in this field please in my email belong to this comment?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.