Dans la méthodologie de Box & Jenkins, une étape qui arrive très rapidement est le choix des ordres du processus , une fois que l’on validé l’hypothèse de stationnarité de la série, comme on l’a vu en cours la semaine passée. Considérons la série du trafic autoroutier,
> autoroute=read.table( +"http://freakonometrics.blog.free.fr/public/data/autoroute.csv", + header=TRUE,sep=";") > a7=autoroute$a007 > A7=ts(a7,start = c(1989, 9), frequency = 12)
Un outils pratique de sélections des ordres et dans un modèle est la fonction d’autocorrélation étendue. La définition est donnée dans les notes de cours (Def. 223) à partir des statistiques proposées par Tsay & Tiao (1984),
> EACF=eacf(A7) AR/MA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 0 x o o x x x x x o o x x x o 1 x x o o x x x o o o x x x x 2 o x o o o o x o o o o x x o 3 o x o x o o o o o o o x x x 4 x x x x o o o o o o o x o o 5 x x o o o x o o o o o x o x 6 x x o o o x o o o o o x o o 7 o x o o o x o o o o o x o o > EACF $eacf [,1] [,2] [,3] [,4] [1,] 0.6476234 0.2124105 -0.02413173 -0.24234535 [2,] 0.4889076 0.2797152 -0.02494135 -0.06094037 [3,] 0.1006541 -0.2285771 0.03514148 0.08000588 [4,] 0.1390240 -0.2788742 0.04386746 0.28307260 [5,] -0.5091680 0.3144899 -0.34572269 0.31450865 [6,] -0.4224571 -0.4877505 0.16054232 -0.09130728 [7,] -0.4731353 -0.4324857 -0.04847184 -0.10500350 [8,] -0.2129591 -0.4072901 0.09487899 -0.06493243 [,5] [,6] [,7] [,8] [1,] -0.514330187 -0.61634046 -0.52314403 -0.28008661 [2,] -0.254912957 -0.28966664 -0.33963243 -0.21863077 [3,] -0.156624357 -0.01199786 -0.25116738 0.13079231 [4,] -0.183283544 0.03651508 -0.08711829 0.11626377 [5,] -0.190885091 -0.09786463 -0.09182557 0.08818875 [6,] -0.072904071 0.29271777 -0.09334712 0.01972648 [7,] -0.009873289 0.36909726 0.01698660 -0.03317456 [8,] 0.020485930 0.38342158 0.16981715 -0.02592442 [,9] [,10] [,11] [,12] [1,] -0.082607058 0.15178887 0.56583179 0.8368975 [2,] -0.085026400 0.02731460 0.26158357 0.7844748 [3,] 0.001866994 -0.11658312 0.03038621 0.7026361 [4,] 0.025183793 -0.21608692 0.05660781 0.6674301 [5,] -0.006831894 -0.02514440 -0.07390257 0.4762563 [6,] 0.010058718 -0.03888613 -0.04382043 0.5338091 [7,] 0.032124905 -0.07022090 -0.04427400 0.4674165 [8,] 0.024189179 -0.20818201 0.01459933 0.4830369 [,13] [,14] [1,] 0.5637439 0.17862571 [2,] 0.4530716 0.24413569 [3,] 0.2534178 -0.20160890 [4,] 0.2409861 -0.29462510 [5,] -0.1517324 -0.14763294 [6,] -0.1701182 -0.28771495 [7,] -0.1651515 0.05466457 [8,] -0.1403198 -0.04095030 $ar.max [1] 8 $ma.ma [1] 14
Les ronds dans la matrice désignent des valeurs non-significatives. Par défaut, le nombre de retards, pris en compte pour la composante autorégressive est faible, mais on peut l’augmenter.
> EACF=eacf(A7,13,13) AR/MA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 0 x o o x x x x x o o x x x o 1 x x o o x x x o o o x x x x 2 o x o o o o x o o o o x x o 3 o x o x o o o o o o o x x x 4 x x x x o o o o o o o x o o 5 x x o o o x o o o o o x o x 6 x x o o o x o o o o o x o o 7 o x o o o x o o o o o x o o 8 o x o o o x o o o o o x o o 9 x x o o x o x o o o o x o o 10 x x o o x o x o o o o x o o 11 x x o o x x x o o o x x o o 12 x x o o o o o o o o o o o o 13 x x o o o o o o o o o o o o > EACF$eacf [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 0.64 0.21 -0.02 -0.24 -0.51 -0.61 -0.52 -0.28 -0.08 0.15 [2,] 0.48 0.27 -0.02 -0.06 -0.25 -0.28 -0.33 -0.21 -0.08 0.02 [3,] 0.10 -0.22 0.03 0.08 -0.15 -0.01 -0.25 0.13 0.00 -0.11 [4,] 0.13 -0.27 0.04 0.28 -0.18 0.03 -0.08 0.11 0.02 -0.21 [5,] -0.50 0.31 -0.34 0.31 -0.19 -0.09 -0.09 0.08 0.00 -0.02 [6,] -0.42 -0.48 0.16 -0.09 -0.07 0.29 -0.09 0.01 0.01 -0.03 [7,] -0.47 -0.43 -0.04 -0.10 0.00 0.36 0.01 -0.03 0.03 -0.07 [8,] -0.21 -0.40 0.09 -0.06 0.02 0.38 0.16 -0.02 0.02 -0.20 [9,] -0.14 -0.50 -0.10 -0.06 0.11 0.38 -0.01 -0.02 -0.08 -0.20 [10,] -0.29 0.48 0.00 0.18 0.27 -0.12 0.41 0.00 0.16 0.15 [11,] 0.24 0.48 -0.04 0.02 0.46 0.10 0.37 -0.10 0.05 0.16 [12,] -0.59 0.49 -0.18 0.05 0.31 -0.32 0.34 -0.16 0.07 0.16 [13,] -0.31 0.31 -0.12 0.16 -0.11 0.04 -0.04 0.12 -0.09 0.00 [14,] 0.47 0.26 0.11 0.13 -0.01 -0.01 0.00 0.07 -0.03 0.02
On peut aussi visualiser graphiquement les différentes valeurs, avec en ordonnée les ordres autoréregressifs () et en abscisse les ordres moyenne mobile ().
> library(RColorBrewer) > CL=brewer.pal(6, "RdBu") > ceacf=matrix(as.numeric(cut(EACF$eacf, +1,nrow(EACF$eacf), + ncol(EACF$eacf)) > for(i in 1:ncol(EACF$eacf)){ + for(j in 1:nrow(EACF$eacf)){ + polygon(c(i-1,i-1,i,i)-.5,c(j-1,j,j,j-1)-.5, + col=CL[ceacf[j,i]]) + }}
Un bruit blanc est en bas à gauche ( et nuls). Dans cette méthode, dite méthode des coins, on cherche un coin telle que dans le quadrant supérieur, les valeurs soient non-significatives (ternes sur le dessin ci-dessus). La figure ci-desssous correspond à l’analyse d’un modèle
Les fortes valeurs positives sont en bleu foncé, les fortes valeurs négatives sont en rouge foncé. On peut aussi regarder la fonction suivante, qui utilise une identification de modèle par MINIC (Minimum Information Criterion) à l’aide du critère de Shcwarz (BIC, ou SBC Schwarz’s Bayesian Criterion)
> armaselect(A7,nbmod=5) p q sbc [1,] 12 1 1441.798 [2,] 13 0 1442.628 [3,] 12 0 1443.188 [4,] 12 2 1443.362 [5,] 14 0 1445.069
Enfin, une dernière fonction possible est évoquée dans la section 6.5. du livre deCryer & Chan (2008),
> ARMA.SELECTION= + armasubsets(A7,nar=14,nma=14,ar.method='ols') > plot(ARMA.SELECTION)
basé sur le critère de Schwarz.
Je vais me répéter, mais ces méthodes ne sont que des outils, histoire d’avoir des pistes si on ne sait trop dans quelle direction partir. Et compte tenu de la saisonnalité de la série, je serais pour ma part parti sur un modèle avec =12, histoire de voir si on ne pourrait pas avoir un modèle simple, et facilement interprétable en plus…