Quelques lignes de codes pour le cours de ce matin, pour revenir sur la notion de série temporelle stationnaire.

> TEMP=read.table("http://freakonometrics.blog.free.fr/public
/data/TN_STAID000038.txt",header=TRUE,sep=",")
> D=as.Date(as.character(TEMP$DATE),"%Y%m%d")
> T=TEMP$TN/10
> plot(D,T,col="light blue",xlab="Température minimale
journalière à Paris",ylab="",cex=.5)
> abline(h=0,lty=2,col="grey")
> abline(lm(T~D),lwd=2,col="red")

On peut visualiser la série des températures sur un siècle, à Paris. Première étape: enlever la tendance linéaire croissante,

On obtient ensuite un cycle, que l'on peut aussi extraire

> X=T-predict(lm(T~D))
> plot(D,X,col="light blue",xlab="",ylab="",cex=.5)
> abline(h=0,lty=2,col="grey")
> abline(lm(X~D),lwd=2,col="red")
> day=as.POSIXlt(D)$yday+1
> plot(day,X,col="light blue",xlab="",ylab="",cex=.5)
> abline(h=0,lty=2,col="grey")
> s=tapply(X,as.factor(day),mean)
> lines(1:366,s,col="red")
> cycle=as.vector(s[day])
> plot(D,X,col="light blue",xlab="",ylab="",cex=.5)
> abline(h=0,lty=2,col="grey")
> lines(D,cycle,lwd=2,col="red")

On enlève - à la série initiale - la tendance linéaire, le cycle, et on obtient une série stationnaire.

> plot(D,X,col="light blue",xlab="",ylab="",cex=.5,
xlim=as.Date(as.character(c("1990/01/01","2000/01/01"),
"%Y/%m/%d")))
> abline(h=0,lty=2,col="grey")
> lines(D,cycle,lwd=2,col="red")
> Z=X-cycle
> plot(D,Z,col="light blue",xlab="",ylab="",cex=.5)

C'est cette série qui va nous intéresser pendant la majorité du cours restant. Car on peut dire encore beaucoup de choses sur cette série...

> n=length(Z)
> cor(Z[2:n],Z[1:(n-1)])
[1] 0.7275966
> cor(Z[3:n],Z[1:(n-2)])
[1] 0.5085134
> cor(Z[4:n],Z[1:(n-3)])
[1] 0.3761305
> plot(acf(Z))