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)