########## Series temporelles ##### Exercice 1 T=1000 epsilon=rnorm(T,0,1) saison=array(data=runif(12,0,5),dim=c(T)) y<-array(data=c(0),dim=c(T,10)) y[,1]=epsilon y[,2]=0.3*epsilon+saison y[,3]=seq(from=0.3,to=0.3*T,by=0.3)+saison+epsilon y[,4]=seq(from=0.3,to=0.3*T,by=0.3)*saison*epsilon y[,5]=sin(seq(from=1/30,to=T/30,by=1/30))*epsilon y[,6]=sin(seq(from=1/30,to=T/30,by=1/30))+0.1*epsilon for(t in 3:T) { y[t,7]=0.3*y[t-1,7]+epsilon[t] y[t,8]=epsilon[t]+0.7*epsilon[t-1] y[t,9]=0.6*y[t-1,9]+0.3*y[t-2,9]+epsilon[t]+0.2*epsilon[t-1] y[t,10]=y[t-1,10]+epsilon[t] } plot(y[,1],type='l') plot(y[,2],type='l',xlim=c(1,70)) plot(y[,3],type='l',xlim=c(1,70),ylim=c(0,50)) plot(y[,4],type='l') plot(y[,5],type='l') plot(y[,6],type='l') plot(y[,7],type='l') plot(y[,8],type='l') plot(y[,9],type='l') plot(y[,10],type='l') ############## Exercice 2 #On travaille sur la table co2 plot(co2,type='l') temp<-array(data=co2,dim=c(12,39)) plot(1:12,temp[,1],type='l',ylim=c(313,330)) for(i in 2:39) { lines(1:12,temp[,i],type='l') } resmm<-decompose(co2,type="additive") resmm$figure sum(resmm$figure) plot(co2,type='l') lines(resmm$trend) qqnorm(resmm$random) abs<-seq(from=-1,to=1,by=0.01) hist(resmm$random,freq=FALSE) lines(abs,dnorm(abs,mean(resmm$random,na.rm=TRUE),sd(resmm$random,na.rm=TRUE))) coefsaison<-resmm$seasonal[1:12] mean(coefsaison) mean(resmm$random,na.rm=TRUE) #calcul à la main T=(1997-1958)*12 mm<-array(data=co2,dim=c(T)) for(t in 7:(T-6)) { mm[t]=(0.5*co2[t-6]+sum(co2[(t-5):(t+5)])+0.5*co2[t+6])/12 } plot(1:T,co2, type='l') lines(mm) matricedesaison=array(data=co2-mm,dim=c(12,39)) saison<-array(data=c(0),dim=c(12)) for(i in 1:12) { saison[i]=sum(matricedesaison[i,])/38 } correction<-mean(saison) saison=saison-correction saison coefsaison # Modèle ARIMA diffprem=co2[2:T]-co2[1:T-1] plot(diffprem,type='l') #res<-residuals(mco) res<-resmm$random plot(res) mean(res) library(tseries) bool<-(is.na(res)) adf.test(res[!bool],alternative="explosive",k=0) adf.test(res[!bool],alternative="explosive") adf.test(res[!bool],alternative="stationary") acf(res,lag.max=10,type=c("correlation"),plot=TRUE,na.action=na.pass) acf(res,lag.max=10,type=c("covariance"),plot=TRUE,na.action=na.pass) acf(res,lag.max=10,type=c("partial"),plot=TRUE,na.action=na.pass) arima(res,order=c(1,0,0)) arima(res,order=c(2,0,0)) arima(res,order=c(0,0,1)) arima(res,order=c(0,0,2)) arima(res,order=c(0,1,1))