Vous êtes sur la page 1sur 35

Master MAD2 PRO

2005-2006

Rapport de Stage

Utilisation du Logiciel R dans


les Séries Chronologiques

Réalisé par :

MANSARE Iracy

Sous la Direction de : Madame Sophie JACQUOT


Dédicace

Je dédie ce rapport de stage à toute ma famille pour leur soutien, les conseils et les soucis
partagés.

Remerciements

J’aimerais adresser mes remerciements les plus chaleureux à ma tutrice de stage Madame
Sophie JACQUOT pour sa disponibilité, sa générosité, son encouragement et son soutien.
C’est avec un réel plaisir que j’ai effectué ce stage sous sa direction.
Qu’elle trouve ici l’expression de ma reconnaissance et de ma profonde gratitude.

Mes remerciements s’adressent aussi à tous les professeurs du MAD2 plus particulièrement à
Monsieur Jean Pierre LAMARCHE le responsable de la formation pour son accueil
chaleureux et sa bonne humeur permanente.
Qu’il trouve ici l’expression de mon profond respect et de ma gratitude.

Enfin, je tiens à remercier tous les amis du Master.


Table des Matières
Dédicace

Introduction

Première Partie : Saisie de la Série

Deuxième Partie : Régression Linéaire

Troisième Partie : Lissage Exponentiel


Lissage Exponentiel Simple
Lissage Exponentiel Double

Quatrième Partie :Lissage de Holt-Winters


Méthode non saisonnière
Méthode Saisonnière Additive
Méthode Saisonnière Multiplicative

Cinquième Partie :Lissage Par Moyenne Mobile

Sixième Partie :Périodogramme

Septième Partie : Statistique de Box-Pierce, ou Test de Portemanteau

Huitième Partie:Bruit Blanc


Auto corrélation
Fonction d’Auto corrélation Partielle

Neuvième Partie : Les Processus ARMA


Processus MA(q)
Processus AR(q)

Simulation de la série chronologique arima avec la fonction arima.sim

BIBLIOGRAPHIE
Introduction

R est un logiciel pour l'analyse statistique des données initié par Robert Gentleman et Ross Ihaka
(Université d'Auckland, Nouvelle-Zélande), auxquels sont venus s'ajouter un noyau de chercheurs du
monde entier en 1997, il constitue aujourd'hui un langage et un environnement de programmation
intégré d'analyse statistique. Il fournit les procédures usuelles (t-tests, anova, tests non
paramétriques...) et possède des possibilités graphiques pour explorer les données, illustrer quelques
concepts fondamentaux de la statistique inférentielle. Pouvant être utilisé aussi bien en mode interactif
qu'en mode batch, R est un logiciel libre, dont le code source est disponible et qui peut être recopié et
diffusé gratuitement. Des versions compilées de R sont disponibles pour Linux, Windows et Mac OS
X. Il répond à tous les calculs et représentations nécessaires dans l'exercice professionnel de
l'enseignant de mathématique ou de sciences.

L’étude des séries temporelles, ou séries chronologiques, correspond à l’analyse statistique


d’observations régulièrement espacées dans le temps. Leur domaine d’application est très vaste et
s’étend de l’astronomie à l’économie en passant par la biologie ou la théorie du signal.

L’objectif de ce stage est la prévision des séries chronologiques dans le logiciel R, et la première
partie se consacre sur la saisie des données dans un fichier excel format txt en important ces
données avec la commande read.table qui a pour effet de créer un tableau de données et transformer
ces données sous forme de tableau en série temporelle avec utilisation de la commande ts.
La deuxième partie est consacrée sur la régression linéaire dont le but sera précisément d’estimer
l’erreur et pour la réaliser avec la méthode des moindres carrés, on utilise la commande lm .
La troisième partie est l’étude de la procédure « lissage.exponentiel » dans R ;c’est la procédure la
plus simple à mettre en œuvre pour faire de la prévision, elle est basée sur les méthodes de lissage.
La quatrième partie est consacrée à Holt et Winters qui ont proposé une approche un peu différente
au problème de lissage exponentiel avec l’ajustement et l’approximation de la série au voisinage de T
et approximation de Xt par une tendance.
La cinquième partie est consacrée à la moyenne mobile qui a pour objectif de désaisonnaliser une
série; la série doit avoir une composante saisonnière mensuelle ou trimestrielle (additive ou
multiplicative).
La sixième partie est l’utilisation du périodogramme qui permet de repérer la composante saisonnière
qui est souvent difficile à détecter et il est considéré comme transformée de fourrier discrète pour
trouver la période.
La septième partie est la statistique de Box-Pierce qui permet d’identifier les processus de bruit
blanc (i.e. les processus aléatoires de moyenne nulle,de variance constante et non auto corrélés).
La huitième partie nous parle du bruit blanc qui est un processus stationnaire au sens faible dont :
• Les espérances (des variables aléatoires constitutives du processus) sont égales à 0,
• les variances sont égales à σ , une constante (donc la même pour toutes les variables)
2

La neuvième partie est l’étude et simulation d’un processus ARMA qui est composé d’un processus
autorégressif et d’un processus de type moyenne mobile.
La dernière partie sera consacrée au processus ARIMA pour la simulation de la série chronologique
arima avec la fonction arima.sim.
Première Partie : Saisie de la série

Nombre de nuitées mensuelles dans les hotels et "guest houses" de Victoria (Australie) entre janvier
80 à juin 95.
Je saisie les données dans un fichier excel format txt
Pour importer les données, j’utilise la commande read.table qui a pour effet de créer un tableau de
données et est donc le moyen principal pour lire des fichiers de données au format texte.

> table=read.table("C://Documents and Settings/Utilisateur/Mes


documents/chronique3/Victoriahotels.txt",header=TRUE)
> table

Victoriahotel
1 276986 36 265740 71 369403
2 260633 37 322656 72 288384
3 291551 38 281563 73 340981
4 275383 39 323461 74 319072
5 275302 40 312579 75 374214
6 231693 41 310784 76 344529
7 238829 42 262785 77 337271
8 274215 43 273754 78 281016
9 277808 44 320036 79 282224
10 299060 45 310336 80 320984
11 286629 46 342206 81 325426
12 232313 47 320052 82 366276
13 294053 48 265582 83 380296
14 267510 49 326988 84 300727
15 309739 50 300713 85 359326
16 280733 51 346414 86 327610
17 287298 52 317325 87 383563
18 235672 53 326208 88 352405
19 256449 54 270657 89 329351
20 288997 55 278158 90 294486
21 290789 56 324584 91 333454
22 321898 57 321801 92 334339
23 291834 58 343542 93 358000
24 241380 59 354040 94 396057
25 295469 60 278179 95 386976
26 258200 61 330246 96 307155
27 306102 62 307344 97 363909
28 281480 63 375874 98 344700
29 283101 64 335309 99 397561
30 237414 65 339271 100 376791
31 274834 66 280264 101 337085
32 299340 67 293689 102 299252
33 300383 68 341161 103 323136
34 340862 69 345097 104 329091
35 318794 70 368712 105 346991
106 461999 133 411891 160 438800
107 436533 134 370497 161 430100
108 360372 135 437305 162 366300
109 415467 136 411270 163 391000
110 382110 137 385495 164 380900
111 432197 138 341273 165 431400
112 424254 139 384217 166 465400
113 386728 140 373223 167 471500
114 354508 141 415771 168 387500
115 375765 142 448634 169 446400
116 367986 143 454341 170 421500
117 402378 144 350297 171 504800
118 426516 145 419104 172 492071
119 433313 146 398027 173 421253
120 338461 147 456059 174 396682
121 416834 148 430052 175 428000
122 381099 149 399757 176 421900
123 445673 150 362731 177 465600
124 412408 151 384896 178 525793
125 393997 152 385349 179 499855
126 348241 153 432289 180 435287
127 380134 154 468891 181 479499
128 373688 155 442702 182 473027
129 393588 156 370178 183 554410
130 434192 157 439400 184 489574
131 430731 158 393900 185 462157
132 344468 159 468700 186 420331

Je transforme les données sous forme de tableau en série temporelle et pour cela, j’utilise la
commande ts qui va créer un objet de classe “ts” à partir d’un vecteur (série temporelle simple) ou
d’une matrice (série temporelle multiple), et des options qui caractérisent la série.

> serie=ts(table,frequency=12,start=c(1980),end=c(1995,6))
> serie

Jan Feb Mar Apr May Jun Jul Aug Sep Oct
1980 276986 260633 291551 275383 275302 231693 238829 274215 277808 299060
1981 294053 267510 309739 280733 287298 235672 256449 288997 290789 321898
1982 295469 258200 306102 281480 283101 237414 274834 299340 300383 340862
1983 322656 281563 323461 312579 310784 262785 273754 320036 310336 342206
1984 326988 300713 346414 317325 326208 270657 278158 324584 321801 343542
1985 330246 307344 375874 335309 339271 280264 293689 341161 345097 368712
1986 340981 319072 374214 344529 337271 281016 282224 320984 325426 366276
1987 359326 327610 383563 352405 329351 294486 333454 334339 358000 396057
1988 363909 344700 397561 376791 337085 299252 323136 329091 346991 461999
1989 415467 382110 432197 424254 386728 354508 375765 367986 402378 426516
1990 416834 381099 445673 412408 393997 348241 380134 373688 393588 434192
1991 411891 370497 437305 411270 385495 341273 384217 373223 415771 448634
1992 419104 398027 456059 430052 399757 362731 384896 385349 432289 468891
1993 439400 393900 468700 438800 430100 366300 391000 380900 431400 465400
1994 446400 421500 504800 492071 421253 396682 428000 421900 465600 525793
1995 479499 473027 554410 489574 462157 420331
Nov Dec
1980 286629 232313
1981 291834 241380
1982 318794 265740
1983 320052 265582
1984 354040 278179
1985 369403 288384
1986 380296 300727
1987 386976 307155
1988 436533 360372
1989 433313 338461
1990 430731 344468
1991 454341 350297
1992 442702 370178
1993 471500 387500
1994 499855 435287
1995

> Plot(serie
Ce schema nous donne l’évolution du nombre de nuités mensuelles dans les hotels et "guest houses"
de Victoria (Australie) entre janvier 80 à juin 95.

Avant d’analyser cette série, on regarde son évolution par rapport au temps, recherche de
changement brusques, valeurs atypiques. Nous dirons que le modèle est légèrement multiplicatif mais
additif présentant une tendance hyperbolique.
La série originale étant additive, l’application du logarithme n’est pas nécessaire car la série n’est pas
explosive mais on constate une rupture entre 1988 et 1989. Pour ce fait :

1- Test de Rupture
Perron a proposé d’introduire, dès 1989, dans la régression de Dickey & Fuller une variable
indicatrice spécifiant l’existence d’une rupture. La date de rupture peut d’ailleurs être connue ou
inconnue. Dans le cas où elle est inconnue, une procédure séquentielle permet de le localiser. Ce lien
entre les tests de racine unité et les changements de structure ont donné lieu à de nombreuses
publications depuis une dizaine d’années. Différentes formes de changement de structure ont
d’ailleurs été étudiées : changement de niveau, changement du coefficient de tendance linéaire,
changement sur les coefficients des variables de la modélisation…etc.

• Les tests de racine unité


Plusieurs tests ont été implémentés afin de tester l’hypothèse nulle que la série stationnaire
(Yt ) possède une racine unité et une constante, éventuellement nulle, avec une rupture au
temps τ où 1 < τ < T , contre l’hypothèse alternative que la série soit stationnaire autour
d’une tendance linéaire avec rupture en τ sur cette tendance. Une distinction est alors
généralement apportée entre deux cas :
.AO-« additive outliers » - effet instantané
.IO-« innovational outliser » - effet avec transition
Pour chacun des effets, trois modèles sont alors considérés : dans la version AO
 (1) X t = µ + β t + γDU t (τ ) + Yt pour t = 1,...., T .

 (2) X t = µ + β t + θDTt * (τ ) + Yt pour t = 1,...., T .
 (3) X = µ + β t + γDU (τ ) + θDT * (τ ) + Y pour t = 1,...., T
 t t t t

Où (Yt ) est la série ( X t ) à laquelle on a retiré la tendance déterministe, avec


DU t (τ ) = 1 si t > τ et 0 sin on
( DU t (τ ) = II (t > τ )) et DTt* (τ ) = (t − τ ) si t > τ , 0 sin on ( DTt* (τ ) = [t − τ ].II (t > τ )).
La mise en œuvre du test se fait en deux étapes ;
(i) estimation (par une méthode de types moindres carrés) de la tendance avec les modèles de
régression (1), (2) et (3), et calcul de la série résiduelle obtenue en retranchant à la série
observée la tendance estimée.
(ii) pour les modèles (1) et (3), le test est basé sur la valeur de la t-statistique relative à
α = 0, noté tα (τ ) et correspond au test de racine unité dans la régression ADF
k k
∆Yt = αYt −1 + ∑ d j DTBt − j (τ ) + ∑ α i ∆Yt −i + ε t où DTBt − j (τ ) = II (t = τ + 1).
j =0 i =1

Pour le modèle (2), la seconde étape consiste à effectuer la régression


k
∆Yt = αYt −1 + ∑ α i ∆Yt −i + ε t , et à utiliser la t-statistique pour effectuer les tests
i =1
classiques ADF.
Dans la version IO, les équations de régression s’écrivent :

  k

 (1) ∆ X t = µ + β t + θ DU t (τ ) + η DTB t (τ ) +  t −1 ∑ ci ∆X t −i + ε t 
α X + pour t = 1,...., T .
  i = 1 
  k

∆ = µ + β + γ τ +  t −1 ∑ ci ∆X t −i + ε t 
α + pour t = 1,...., T .
*
 ( 2 ) X t t DT t ( ) X
  i = 1 
  k

∆ = µ + β + θ τ + η τ + γ τ +  t −1 ∑ ci ∆X t −i + ε t 
α + pour t = 1,...., T
*
 (3) X t t DU t ( ) DTB t ( ) DT t ( ) X
  i = 1 

où, encore une fois, DTBt (τ ) = II (t = τ + 1).


Les tests de Zivot et Andrews (1992) considère
seulement les modèles de type IO, sans introduire DTBt − j (τ ) (la « justification » étant que ce
coefficient est asymptotiquement négligeable).
Toutefois dans le cas général, la date de rupture τ est inconnue, ainsi que le paramètre k.
Deuxième Partie : Régression Linéaire

On cherche à exprimer la relation entre deux variables x et y :


x est la variable indépendante ou explicative. Les valeurs de x sont fixées par l'expérimentateur et
sont supposées connues sans erreur (exemple : concentrations d'un produit à doser).
y est la variable dépendante ou expliquée (exemple : réponse de l'analyseur). Les valeurs de y sont
entachées d'une erreur de mesure. L'un des buts de la régression sera précisément d'estimer cette
erreur.
On va chercher une relation de la forme : y = ax + b. C'est l'équation d'une droite, d'où le terme de
régression linéaire. Pour réaliser une régression linéaire,par la méthode des moindres carrés, on
utilise la fonction lm. Le modèle plus simple où est une suite de
variables aléatoires non corrélés.

a<-rnorm(186)
b<-2*a+rnorm(186)
plot(b~a)
r<-lm(b~a)
abline(r)
4
2
0
b

-2
-4
-6

-3 -2 -1 0 1 2

Ce graphique nous donne simplement la régression linéaire pour les 186 observations de notre série.

> regression=lm(formula=serie~time(serie))
> regression

Call:
lm(formula = serie ~ time(serie))
Coefficients:
(Intercept) time(serie)
-25463553 12991
la fonction lm produit une liste dont les différents éléments de l’analyse correspondent aux
résultats de l’analyse.
La régression permet plus facilement de se débarrasser de la tendance.

> confint(regression)
2.5 % 97.5 %
(Intercept) -27614647.18 -23312458.52
time(serie) 11908.46 14072.85
La fonction confint calcule les intervalles de confiance des paramètres de la régression.

> summary(regression)
Call:
lm(formula = serie ~ time(serie))

Residuals:
Min 1Q Median 3Q Max
-68029 -23777 5781 23700 99442

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.546e+07 1.090e+06 -23.36 <2e-16 ***
time(serie) 1.299e+04 5.485e+02 23.68 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 33470 on 184 degrees of freedom


Multiple R-Squared: 0.753, Adjusted R-squared: 0.7516
F-statistic: 560.9 on 1 and 184 DF, p-value: < 2.2e-16
Nous avons les valeurs principales de la régression effectuée.

Résultats

• Modèle : s(i)= a*time(série)+b+e(i)


Ce modèle nous donne le nombre de nuitées en fonction de l’affluence des clients dans les hotels et
guest houses de victoria
• Commentaires
2
- Ce modèle à un R de 0,753 c'est-à-dire que la variation du nombre de nuitées mensuelles est
expliquée à 75,3% par le temps de passage des clients dans les hôtels , c’est donc un bon ajustement
des données.
-Les erreurs standards sont grandes, montrant qu’il ya l’incertitude pour l’estimation des paramètres.
-La droite de régression obtenue pour ce modèle est :s(i) -2.546e+07 + 1.299e+04*time(série)
-La P-value du test sur le coefficient correspondant au time(série) étant inférieur à 5%, il est possible
de dire que les time(série) ont un effet significatif sur le nombre de nuitées .

La fonction générique summary présente les informations ci-dessus de manière facile à consulter.
Plus précisément, le sommaire de la régression contient, outre le modèle utilisé et les estimateurs des
coefficients de la régression : les résultats des tests t, la valeur du coefficient de détermination

et, dans R seulement, du coefficient de détermination ajusté

ainsi que le résultat du test F global.

Utilisons les méthodes statistiques classiques de la régression ; nous estimons les données par la
somme d’une fonction affine et d’une fonction sinusoïdale.
L’objectif est de mettre en évidence la prédiction de la régression par rapport à la série originale.
L’objet r contient le résultat de la régression

>plot(serie)
>y=as.vector(serie)
>x=as.vector(time(serie))
> plot(y~x,type='l')
> r=lm(y~poly(x,2)+cos(2*pi*x)+sin(2*pi*x)+cos(4*pi*x)+sin(4*pi*x))
> lines(predict(r)~x,lty=3, col='blue',lwd=3)
550000
450000
y

350000
250000

1980 1985 1990 1995

Sur ce graphe, nous voyons qu’en introduisant la somme d’une fonction affine et d’une fonction
sinusoïdale, la régression s’améliore sensiblement et on obtient un R-Squared égale 0.8803 comme le
montre dans summary(r). Ceci est confirmé par l’affichage du model et de la série échantillon sur le
même graphe. En effet les supports des deux se superposent et traduisent les mêmes fluctuations.

> summary(r)

Call:
lm(formula = y ~ poly(x, 2) + cos(2 * pi * x) + sin(2 * pi * x) + cos(4 * pi * x) + sin(4 * pi * x))

Residuals:
Min 1Q Median 3Q Max
-53032.9 -15911.7 -473.1 18055.9 65583.9

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 358096 1707 209.772 < 2e-16 ***
poly(x, 2)1 791964 23279 34.020 < 2e-16 ***
poly(x, 2)2 44283 23322 1.899 0.0592 .
cos(2 * pi * x) 14837 2415 6.145 5.05e-09 ***
sin(2 * pi * x) -4791 2419 -1.980 0.0492 *
cos(4 * pi * x) -27804 2414 -11.519 < 2e-16 ***
sin(4 * pi * x) 11900 2415 4.929 1.88e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 23270 on 179 degrees of freedom


Multiple R-Squared: 0.8838, Adjusted R-squared: 0.88
F-statistic: 227 on 6 and 179 DF, p-value: < 2.2e-16

• Commentaires

Ce modèle à un R2 de 0,8838 c'est-à-dire que la variation du nombre de nuitées mensuelles


est expliquée à 88,38% par le temps de passage des clients dans les hôtels, c’est donc un bon
ajustement des données par rapport à la première régression. Les erreurs standards sont
grandes, montrant qu’il y a incertitude pour l’estimation des paramètres.
-La droite de régression obtenue pour ce modèle est :

s(i) = 358096 + 791964*poly(x,2)1+44283*poly(x,2)2+14837*cos(2*pi*x)-4791*sin(2*pi*x)-


27804*cos(4*pi*x)+11900*sin(4*pi*x).
La P-value du test sur les coefficients correspondant étant inférieur à 5%, il est possible de dire que
ces coefficients ont un effet significatif sur le nombre de nuitées.

> Plot(r)

Ce graphe nous donne les résidus par rapport aux valeurs ajustées.Nous remarquons que les points
sont repartis de façons inégales alignées autour de la première bissectrice. Ce qui veut dire que les
prévisions sont moins bonnes, elles doivent normalement être alignés sur la droite de régression
« série = predict(régression) donc doivent être égales aux valeurs observées.

Dans notre cas, tous les points ne sont pas proches de la droite de régression.

Ce graphe nous donne les résidus standardisés par rapport aux quantiles théoriques. Les plots
quantile-quantile sont utilisées pour comparer graphiquement la distribution d’un échantillon avec une
distribution théorique attendue (fonction qqnorm() pour la loi normale) et pour évaluer la distribution de
résidus d’une analyse statistique afin de vérifier s’il se conforme aux hypothèses du modèle.
Ces graphes nous donnent les résidus standardisés par rapport aux valeurs ajustées.
L’observation du graphe des résidus nous montre que la composante périodique existe toujours et
permet de vérifier si la tendance et la saisonnalité disparaissent au fur et à mesure de la construction
du modèle.

La distance de Cook’s donne pour chacun des points de mesure la distance entre les paramètres
estimés par la régression avec et sans ce point. Si l’importance du rôle de chaque point est concentré
sur quelques valeurs, la régression n’est pas bonne (prise en compte de points aberrants).

Troisième Partie : Lissage Exponentiel

Le but est l'étude de la procédure lissage.exponentiel dans R. C'est la procédure la plus simple à
mettre en oeuvre pour faire de la prévision, elle est basée sur les méthodes de lissage. On peut leur
proposer des séries supplémentaires à étudier tout seul.
On suppose que l’on observe la réalisation d’un processus sur un intervalle .
Le but est de donner une estimation pour notée (prévision à l’horizon _ ).
3-a Lissage exponentiel simple
On dispose d’une série X1,…, XT et on désire prédire X T + h (h ≥ 1) . Dénotons la prévision par

Définition :
La valeur fournie par la méthode du lissage exponentiel simple avec la constante de lissage
β (0 < β < 1) est :

est une moyenne des observations passées ou le poids de chaque observation décroît de
façon exponentielle avec la distance.
Notons que ne dépend pas de h : .
En réécrivant autrement la formule de calcul de on a :

d’où l’erreur de prévision :

Par conséquent,

est une moyenne pondérée de et On peut aussi écrire sous une forme
adaptive :

Le paramètre ' est appelé la constante de lissage. Si ' est proche de 0, la prévision
est plus sensible aux dernières observations et répercute fortement toutes les fluctuations
récentes (tant au niveau de la tendance que celui du bruit).
Si est proche de 1, la prévision prend davantage en compte tout le passé et les fluctuations
sont prises en compte plus tardivement. Dans ce cas, on parle de prévision rigide.
Le choix du paramètre apparaît comme un compromis entre stabilité et sensibilité.
Empiriquement, on choisit β ∈ [0.05; 0.3] . Si la série est bruitée, on choisira plutôt une
valeur faible pour .
Pour faire du lissage exponentiel sous R, il faut utiliser le « lissage.exponentiel ».

3-b Lissage exponentiel double

Le lissage exponentiel simple est bien adapté au cas où la série a une moyenne approximativement
constante au voisinage de T. A la place, supposons que la série peut être approximée par une droite
au voisinage de T :

Ceci suggère une prévision de la forme :

où â1(T) et â2(T) sont choisis de façon à minimiser :

En différenciant Q, on obtient
d’où :

Remplaçons

, ,
( limites lorsque ) , on obtient alors:

Définissons

Où on voit que S2(t) correspond à un double lissage. Substituant S1(t) et S2(t) on obtient :

d’où :

Commande pour lissage exponentiel

>lissage.exponentiel=function(serie,a){
m=serie
for(i in 2:n) {
#Définition du lissage exponentiel:
m[i]=a*serie[i]+(1-a)*m[i-1]
}
m=ts(m,start=start(serie),frequency=frequency(serie))
m
}
>plot.lissage.exponentiel=function(serie,a=.9) {
plot(lissage.exponentiel(serie,a))
par(usr=c(0,1,0,1))
text(.02,.9,a,adj=c(0,1),cex=3)
}
>par(mfrow=c(3,1))
>plot(serie,main="Lissages exponentiels")
>plot.lissage.exponentiel(serie)
>plot.lissage.exponentiel(serie,.1)
Lissages exponentiels
500000
Victoriahotel

250000

1980 1985 1990 1995

Time
250000 450000
Victoriahotel

0.9

1980 1985 1990 1995

Time
450000
Victoriahotel

0.1
300000

1980 1985 1990 1995

Time

Sur ces graphes, nous remarquons qu’en donnant les valeurs plus petites, notre courbe sera
transformé en une droite.

>r=serie-lissage.exponentiel(serie,.1)
>plot(r,main="Résidus du lissage exponentiel")

Résidus du lissage exponentiel


0
1
0
50
00
0
0
00
e
srie

00
-500
0

1980 1985 1990 1995

Time

A travers ce graphe, nous voyons que le résidu du lissage exponentiel n’est pas un bruit blanc.

Quatrième Partie : Lissage de Holt-Winters

Holt et Winters ont proposé une approche un peu différente au problème de lissage exponentiel.

4-a Méthode non saisonnière

Holt et Winters ajustent aussi une droite au voisinage de T (comme dans le lissage exponentiel
double).Les formules de mise à jour des coefficients sont toutes différentes :
Ces deux formules sont de moyenne pondérée.
Les prévisions associées sont :

On prend habituellement :

Les formules de mise à jour du lissage exponentiel double peuvent s’écrire :

Les deux méthodes sont identiques si on prend :

4-b Méthode Saisonnière Additive

On suppose que la série peut être approximée au voisinage de T par : où St


est un facteur saisonnier. On propose les formules de mise à jour :

Où 0 < α < 1, 0 < γ < 1, et 0 < δ < 1, d’où la prévision :

4-c Méthode Saisonnière Multiplicative

On cherche à approximer Xt par une tendance de la forme a1 [ + (t + T )a 2 ]S t , les formules de mise à


jour sont :

D’où la prévision :

>m=HoltWinters(serie) pour le lissage


>p=predict(m,100,prediction.interval=TRUE) pour la prévision
>plot(m,p)
A partir du mois de juin 1995, on remarque que notre horizon de prévision commence, c’est ce que
montre la fin de ma série originale en noir. On voit la prévision donnée par la courbe rouge (série
lissée) avec un intervalle de confiance donné par les deux autres courbes en bleu.

Cinquième Partie : Lissage par moyenne mobile

Pour trouver la tendance d’une série temporelle, on peut simplement la « lisser ». La fonction « filter »
permet d’effectuer ce lissage plus simplement.
Le filtrage d’une série consiste à remplacer chaque valeur de cette série par une combinaison de ses
diverses valeurs.

La moyenne mobile a pour objectif de désaisonnaliser une série; la série doit avoir une composante
saisonnière mensuelle ou trimestrielle (additive ou multiplicative). Les composantes qui peuvent
apparaître à un moment ou à un autre de la décomposition sont :
La tendance de la série qui représente l’évolution de long terme de la série ;
Le cycle, mouvement lisse, quasi périodique, autour de la tendance et met en évidence une
succession de phases de croissance et de récession.

Les séries étudiées sont en général trop courtes pour que l’estimation des deux composantes puisse
se faire aisément. On parlera donc dans la suite de composante tendance-cycle, notée TCt .
La composante saisonnière, notée St , représentant des fluctuations infra annuelles, mensuelles ou
trimestrielles, qui se répètent plus ou moins régulièrement d’année en année ; La moyenne mobile,
qui constitue l’outil de base de la méthode de désaisonnalisation ,est utilisée pour estimer les
principales composantes de la série, tendance et saisonnalité. Ce sont avant tout des outils de
lissage conçus pour éliminer une composante indésirable de la série.

Prenons l’exemple simple d’une série constituée d’une tendance et d’une composante irrégulière : si
la tendance est lisse, alors les valeurs de la série autour de la date t doivent contenir de l’information
sur la valeur de cette tendance à l’instant t et il doit être possible d’utiliser une moyenne de ces
valeurs comme estimation. La méthode de désaisonnalisation utilise la moyenne mobile pour estimer
les principales composantes de la série, tendance et saisonnalité. Ces filtres, qui n'impliquent pas a
priori l'utilisation de concepts ou de modèles sophistiqués, sont très simples de principe et se révèlent
d'application particulièrement souple : il est possible de construire une moyenne mobile possédant de
bonnes propriétés en termes de conservation de tendance, d'élimination de la saisonnalité, de
réduction du bruit etc…

Une moyenne mobile de coefficients se définit donc comme

tout le problème est alors de trouver le « bon » ensemble de coefficients


> plot(serie)
> k=12
> lines(filter(serie,rep(1/k,k)),col='blue')

550000
450000
Victoriahotel

350000
250000

1 9 8 0 1 9 8 5 1 9 9 0 1 9 9 5

T im e

Nous remarquons que la tendance tend à être linéaire et nous pouvons extraire les facteurs
irrégularités et saisonniers.

• Tendance
La composante fondamentale ou tendance (trend) traduit l’évolution à moyen terme du phénomène.
On parle aussi de mouvement conjoncturel ou mouvement extra-saisonnier. La chronique
correspondante, notée ft, t=1,…,T, est une fonction à variation lente suposée déterministe dans cette
approche. Elle sera estimée sous forme paramétrique (polynôme, exponentielle,…) ou comme le
résultat d’une opération de lissage.

• La composante Saisonnière

La composante saisonnière ou mouvement saisonnier représente des effets périodiques de période


connue p qui se reproduisent de façon plus ou mois identique d’une période sur l’autre. La chronique
correspondante, également déterministe, est notée St, t=1,…,T. Elle est généralement supposée
rigoureusement périodique : St+p=St et les valeurs Sj=Sij, j=1,…p d’une période sont appelées
coefficients saisonniers. Le bilan de l’effet saisonnier sur une période doit être nul car il est pris en
compte dans la tendance. La composante saisonnière permet simplement de distinguer à l’intérieur
d’une même période une répartition stable dans le temps d’effets positifs ou négatifs qui se
composent sur l’ensemble de la période.

• La composante résiduelle

La composante résiduelle ou variations accidentelles est la partie non structurée du phénomène. Elle
est modélisée par une suite de variables aléatoires єt, t=1,.. ,T, centrées, non corrélées et de même
variance, on parle de bruit blanc.
On suppose généralement que la partie résiduelle a un ordre de grandeur très inférieur à celui des
parties explicatives ft et St. En fait il sera toujours possible de déceler la présence d’une partie
déterministe, même de faible importance, à condition que la série observée soit suffisamment longue.
Nous utilisons les commandes matrix pour créer des matrices, cbind pour la concaténation par
colonnes pour construire une matrice et nous tiendrons compte que la longueur des données soit un
diviseur ou un multiple du nombre de lignes dans la matrice et parmi les valeurs de k = 2, 6, 31,93
c’est la valeur de k=6 qui nous permet de donner la meilleure régression.

> k=6
> m=matrix(as.vector(diag(k)),nr=length(serie),nc=k,byrow=T)
> m1=cbind(m,poly(as.vector(time(serie)),2))
> r=lm(serie~m1-1)
> summary(r)
Call:
lm(formula = serie ~ m1 - 1)
Residuals:
Min 1Q Median 3Q Max
-51018.1 -16175.1 -799.2 15415.9 68831.3

Coefficients:
Estimate Std. Error t value Pr(>|t|)
m1 352315 3876 90.904 <2e-16 ***
m1 344317 3875 88.850 <2e-16 ***
m1 382007 3875 98.582 <2e-16 ***
m1 386073 3875 99.631 <2e-16 ***
m1 371990 3875 95.991 <2e-16 ***
m1 311776 3876 80.444 <2e-16 ***
m11 795172 21586 36.837 <2e-16 ***
m12 43784 21575 2.029 0.0439 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 21580 on 178 degrees of freedom
Multiple R-Squared: 0.9966, Adjusted R-squared: 0.9965
F-statistic: 6606 on 8 and 178 DF, p-value: < 2.2e-16

• Commentaires
2
Ce modèle à un R de 0,9966 c'est-à-dire que la variation du nombre de nuitées mensuelles est
expliquée à 99,66% par le temps de passage des clients dans les hôtels, c’est donc un très bon
ajustement des données. abline trace la droite de régression. Lty contrôle le type de lignes tracées en
pointillé plein.

> b=r$coef
> y1=m1[,1:k]%*% b[1:k] // %*% Opérateur de multiplication de matrice.
> y1=ts(y1,start=start(serie),frequency=frequency(serie)) // start: point de départ des itérations
> y2=m1[,k+1:2]%*% b[k+1:2]
> y2=ts(y2,start=start(serie),frequency=frequency(serie))
> res=serie-y1-y2
> plot(serie)
> lines(y2+mean(b[1:k])~as.vector(time(serie)),col='blue')
> abline(h=0,v=1980:1995,lty=3)
5
45
50
00
00
0
00
ictoriahotel

00
V

3
25
50
0
00
00

1980 1985 1990 1995

Time
Dans ce graphe, nous remarquons que la tendance est presque linéaire.

>plot(res)
> abline(h=0,v=1980:1995,lty=3)

Les irrégularités en fonction du temps sont représentés dans le graphe suivant. Il sert à la détection
des valeurs atypiques et cela se traduit par des résidus et on remarque que ce n’est pas un bruit
blanc. La composante résiduelle ou bruit ou résidu (et) : ce sont des fluctuations irrégulières, en
général de faible intensité mais de nature aléatoire. On parle aussi des aléas (et).
000 40000 60000
rie-y1

20
se

0
-40000

1980 1985 1990 1995

Time

Notons que les moyennes mobiles utilisées dans les opérations de dessaisonalisation sont
symétriques et d’ordre fini :

Les coefficients cependant peuvent être négatifs (filtre) et l’étude est très liée à la notion d’équations
de récurrence linéaires. Pour les moyennes mobiles d’ordre infini, on a :

>plot(diff(res))
>abline(h=0,v=1980 :1995,lty=3)

Sur ce graphique, nous enlevons la tendance. Pour ce fait , nous appliquons diff( ) qui calcule la
différence entre une série et elle-même décalée dans le temps de k observations
0
1
50
00
0
0
00
0
e
s 1
rie-y

00
-500
0

1980 1985 1990 1995

Time

>plot(y1)
> abline(h=0,v=1980:1995,lty=3)

La composante Tendance cycle est enlevée de la série analysée, selon le schéma de composition
adopté, pour obtenir une première estimation de la composante saisonnière. On représente la
composante saisonnière en fonction du temps : Le graphe met bien en évidence l’existence d’une
saisonnalité annuelle.
La composante saisonnière ou saisonnalité correspond à un phénomène qui se répète à
intervalles de temps réguliers (périodique). En général, c’est un phénomène saisonnier d’où le terme
de variations saisonnières. La composante saisonnière est donc périodique de période d et il suffit de
connaître ses d premières valeurs s1, s2,…,sd (par périodicité, on a st = st+d pour tout t). On supposera
d
également que st ne contient pas de tendance, ce qu’on écrira :
380000
360000
∑S
j =1
t+ j =0
eries1

340000
S

320000

1980 1985 1990 1995

Time

Sixième Partie : Périodogramme

Dans le cas d’une décomposition de Fourier, on choisit le système de fonctions orthogonales :


{sin ω t ; cos ω t}
j j ; j = 0,...., ∞ , ω j ∈ [− π ,π ]
Décomposer xt en série de Fourier consiste alors à trouver les cœfficients aj et bj tels que :

xt = ∑ (a j cos ω j t + b j sin ω j t )
j =0

L (T )
 2πj 2πj 
Dès lors, la décomposition en série de Fourier de xt sera : xt = ∑  a
j =0
j cos
T
t + b j sin t
T 
Où L(T) = T/2 si T est pair, et L(T)=(T-1)/2 si T est impair. Les coefficients aj et bj sont appelés
coefficients de Fourier, et le but est de les estimer. Comme on a exactement T observations et T
inconnues (i.e. les coefficients { a0,…, aL(T) ; b0,…, bL(T) }), le système à une solution unique, qui peut
être trouvée en utilisant, par exemple, une régression linéaire. Le calcul de ces coefficients est
explicitée en estimant les coefficients de Fourier aj et bj par utilisation d’une régression par
moindres carrés on a :

Notons que pour j = 0, le cosinus vaut 1, et le coefficient de Fourier associé à cette fréquence, a0, est
simplement la moyenne du processus. Si T est pair, les résultats ne sont pas fondamentalement
différents. Simplement, les fréquences vj sont définis pour j=0,…(T/2) pour les termes en cosinus, et j
= 1,…[(T/2)-1] pour les termes en sinus. La valeur des ne change donc pas, tandis qu’il faudra
rajouter un qui vaudra
Dans une analyse de régression classique, l’étape suivante consiste à effectuer une analyse de la
variance. Par exemple, si on veut expliquer xt par les K variables mutuellement orthogonales r1t,…, rKt
dans le modèle linéaire :

On donne les résultat ici sans démonstration que la portion de expliquée par vaut
De même, ici, la part de expliquée par vaut la part de
expliquée par vaut par et la part globale de expliquée par les cycles à la
fréquence vj vaudra Ces résultats justifient la construction et la représentation d’une
fonction periodogramme, définie par :

La découverte des pics dans cette fonction indique alors que les fréquences pour lesquelles ces pics
apparaissent sont les fréquences qui expliquent le mieux la dynamique de xt . A titre d’exemple, on a
représenté sur la figure ci-dessus le periodogramme du nombre de nuitées mensuels dans les hôtels
Victoria sur la période de 1980-1995. On voit apparaître quatre pics dont un pic significatif pour de très
hautes fréquences.
En remplaçant les coefficients de Fourier par leur valeur on a :

L’utilisation du periodogramme permet de repérer la composante saisonnière qui est souvent difficile à
détecter et il est considéré comme transformée de fourrier discrète pour trouver la période.
L’analyse Spectrale sert à déterminer les saisonnalités et les cycles : Si la série possède une
saisonnalité s, alors la densité spectrale a un pic à la fréquence ω = 2π / s .
Pour estimer la densité spectrale on calcule l’estimateur en exécutant le programme :

>periodogram=function(tab)
{
n=length(tab)
freq=1:(n%/%2)/(n)
periodogram=Mod(fft(tab))[2:(n%/%2+1)]^2/(2*pi*n)
plot(freq, periodogram,type="l")
}
>periodogram(serie)
3.0e+10
2.0e+10
periodogram

1.0e+10
0.0e+00

0.0 0.1 0.2 0.3 0.4 0.5

freq

La figure comporte en abscisses, les fréquences et, en ordonnées, le spectre c’est à dire les poids
correspondants aux fréquences.
Sur ce graphe, on ne peut donner q’une valeur approximative de la période 2*3,14/0.18 = 34,88.
Dès lors en posant :
il vient :

Et donc :

De même, les coefficients correspondant aux différentes fréquences voulues peuvent être obtenus
facilement, puisque :

• Utilité du Périodogramme

Les coefficients de Fourier associé aux sinus et cosinus à la fréquence vj valent donc respectivement
la moitié de la partie imaginaire et de la partie réelle de la grandeur cj .
On peut se servir du periodogramme pour repérer des périodicités dans les données, comme on a
montré ci-dessus, mais aussi pour épurer ces données d’un certain bruit. Par exemple, on peut
éliminer toutes les fréquences pour lesquelles la valeur du periodogramme n’atteint pas un certain
pourcentage de la valeur maximale du periodogramme. Pour effectuer la transformation inverse,
repasser du periodogramme à une série chronologique, il suffit de reconstruire la somme en annulant
les coefficients de Fourier pour les fréquences « parasites », et de garder les coefficients de Fourier
correspondant aux fréquences « significatives ». Alternativement, on peut vouloir ne garder que les m
fréquences pour lesquelles le periodogramme est le plus élevé : la procédure est exactement la même

Septième Partie : Statistique de Box-Pierce, ou Test du Portemanteau

Le test de Box-Pierce permet d’identifier les processus de bruit blanc (i.e. les processus aléatoires de

moyenne nulle,de variance constante et non auto corrélés).Cette statistique permet de tester cov(εt,

εt-h) = 0 pour tout h, soit ρ(h) = 0 pour tout h. Ce test s’écrit :

Pour effectuer ce test, on utilise la statistique de Box et Pierce (1970) Q, donnée par
où h est le nombre de retards, T est le nombre d’observations et l’auto corrélation empirique.
Asymptotiquement, sous H0, Qh suit un χ2 à h degrés de liberté. Nous rejetons l’hypothèse de bruit
blanc au seuil h si Q est supérieure au quantile d’ordre (1-α) de la loi du χ2 à h degrés de liberté.
Une statistique ayant de meilleures propriétés asymptotiques peut être utilisée :

qui suit asymptotiquement, sous H0 suit une loi du χ2 à h degrés de liberté. Une modification de cette
formule est la statistique de Box-Pierce-Ljung :

Souvent on s’intéresse à la blancheur non d’une série directement observée mais à la blancheur
d’une série résidu d’un ajustement. Dans ce cas, on diminue les degrés de liberté de la statistique du
nombre de paramètres estimés dans le modèle.

Pour tester l’adéquation d’un modèle ARMA(p,q). En suivant un raisonnement similaire au test de bruit
blanc, mais tenant compte du fait que l’on construit une statistique de test basée sur des résidus, Box
et Pierce, ainsi que Ljung et Box ont montré que ):
K
Q BP (K ) = n ∑ r â2 (k ) L → χ K2 − p − q
k =1

K
 n  2
Q LB (K ) = ( n + 2 ) ∑   râ (k )  → χ K − p − q
L 2

k =1  n + 2 

La logique des tests est la même: on rejette pour de grandes valeurs. Ex: avec Ljung-Box, on rejette
l’adéquation si
Q LB (K ) > χ K2 − p − q

• Test de Student

Le test de Student (test t), permet de déterminer si deux moyennes de deux populations sont
significativement différentes (au moins d’un point de vue statistique)

Pour obtenir un résultat numérique (une p-valeur), nous utilisons les tests de Box-Pierce ou Ljung-
Box (on parle de ‘’portmanteau statistics’’) : il s’agit de considérer des sommes (pondérées) de
premiers coefficients d’auto-corrélation.
Ces sommes suivent asymptotiquement, une distribution du Chi^2 (le test de Ljung-Box est une
variante de celui de Box-Pierce, qui ressemble un peu plus à une distribution du Chi^2 pour de petits
échantillons).

> Box.test(serie)

Box-Pierce test

data: serie
X-squared = 116.3224, df = 1, p-value < 2.2e-16

> Box.test(serie, type='Ljung-Box')


Box-Ljung test

data: serie
X-squared = 118.2087, df = 1, p-value < 2.2e-16

> t.test(serie)

One Sample t-test


data: serie

t = 72.7097, df = 185, p-value < 2.2e-16

alternative hypothesis: true mean is not equal to 0 95 percent confidence interval:


348363.7 367795.6

sample estimates:mean of x : 358079.6

On remarque que la p-value donnée par les tests de Box-Pierce , test de student et Box-Ljung est
la même et cela se vérifie aussi au niveau du résultat donné par le coefficient de dispersion

Huitième Partie : Bruit Blanc

Définition:
un bruit blanc est un processus stationnaire au sens faible dont :
• Les espérances (des variables aléatoires constitutives du processus) sont égales à 0,
Les variances sont égales à σ , une constante (donc la même pour toutes les variables)
2

• La fonction d’auto covariance est γ (h) avec :
γ (h) = σ 2 si h = 0
γ (h) = 0 si h ≠ 0
(ceci veut dire que les variables sont non corrélées)

> bruit =ts(rnorm(10000),frequency=12, start=c(1980), end=c(1995,6))


> plot(bruit)
3
2
1
bruit

0
-1
-2
-3

1980 1985 1990 1995

Time

En faisant la simulation du bruit, nous constatons que ce n’est pas un bruit blanc.

> bruit.blanc=c(bruit) récupère les observations dans le vecteur bruit.blanc


>plot(bruit.blanc)
3
2
1
it.blanc

0
bru

-1
-2
-3

0 50 100 150

Index

Ce graphique nous indique la façon dont les points se dispersent dans le plan. Le nuage de points
représente les observations simultanées de deux variables quantitatives et voyons leurs auto-
corrélations si les 5% des valeurs sont bien entre les pointillés.

8-a Auto corrélation


Comme les observations d'une série temporelle ne sont généralement pas indépendantes, on peut
regarder leur corrélation : la fonction d'auto-corrélation ou ACF (on parle de fonction d'auto-corrélation
de l'échantillon, SACF (Sample AutoCorrelation Function), si elle est estimée à partir d'un échantillon)
est la corrélation entre l'observation numéro n et l'observation n-k. Considerons une série (faiblement
stationnaire {Yt}.
On est souvent intéressé par décrire la dépendance de {Yt} par rapport à son passé, notamment pour
expliquer le niveau actuel de la série par le niveau à une date précédente. On sait que si une
dépendance est linéaire, elle est bien décrite par le coefficient d’autocorrélation. Par définition, le
coefficient d’autocorrélation d’ordre l est :

Mais var(Yt-l) = var(Yt) =γ0 donc :

Enfin en terme d’espérance mathématique et notant que par la stationnarité : E(Yt ) = m indépendant
de t, on a :

ρl est une mesure de la dépendance de la valeur Y en une date par rapport à sa valeur à une date
décalée de l’intervalle de temps.

Définition :

l → ρl , l = 0 ,1 , 2,.......
La fonction est appelée fonction d’auto corrélation de la série {Yt}. De la

définition, on voit que :


ρ 0 = 1, − 1 ≤ ρ l ≤ 1. Etant donné un échantillon yt , t=1 , 2, …,T, de {Yt}
stationnaire, notons la moyenne empirique, . Le coefficient d’auto corrélation
empirique d’ordre l ≥ 1 est :
Sous des conditions générales, voir par exemple Brockwell et Davis, est un estimateur convergent
de ρ l .

>acf (bruit.blanc)

La fonction d’auto corrélation du bruit blanc et nous remarquons que les 5% des valeurs sont bien
entre les pointillés.

Series bruit.blanc
.0
1
.8
0
.6
0
CF

.4
A

0
.2
0
.0
0

0 5 10 15 20

Lag

8-b La Fonction d’auto corrélation Partielle


L’auto corrélation partielle au décalage l (PACF(l) ) est définie comme étant la corrélation entre :
- le résidu de la régression de la série Xt+l par les séries Xt+1 , Xt+2 , …, Xt+l -1
et
- le résidu de la régression de la série Xt par les séries Xt+1 , Xt+2 , …, Xt+l -1 .
En d’autres termes :
X t + l = a1 X t +1 + a 2 X t + 2 + .... + a k −1 X t + k −1 + U
X t = b1 X t +1 + b2 X t + 2 + .... + bk −1 X t + k −1 + V
et PACF( l ) = Corr(U,V) .
Il faut comprendre que l’auto corrélation partielle est la corrélation entre Xt+l et Xt , une fois qu’on a
expliqué ceux-ci par les valeurs entre eux deux, Xt+1 , Xt+2 , …, Xt+l -1 .

>Pacf(serie)

Nous remarquons qu’au niveau du corrélogramme partiel, aucun pic n’est en dehors des pointillés,
ce qui prouve qu’on a bien du bruit blanc.
La fonction d’auto corrélation partielle est un estimateur des cœfficients d’un modèle AR (infini).

Series bruit.blanc
0
.15 0 0
.05 0
.10
lAF
C

0
ia

5 0
.
a
Pt
r

0
-.1 0
5 -.1 0
0 -.0

5 10 15 20

Lag
Neuvième Partie : Les Processus ARMA
Que veut dire ? AR veut dire autoregressive, MA veut dire moving average.
Un processus ARMA est ainsi composé d’un processus autorégressif et d’un processus de type
moyenne mobile. Il nous reste donc à définir ce que sont ces processus. Commençons par le MA de
ARMA.

9-a Processus MA (q)


X t est un processus MA d’ordre q s’il se présente sous la forme :
X t = ε t + θ1ε t −1 + ....... + θ q ε t − q , ∀t ∈ Ζ
Avec ε t , bruit d’espérance 0 et de variance σ 2 et les θ i , des paramètres.
En résumé, Xt est une somme de bruit ; c’est un processus stationnaire.
Cette relation peut encore s’écrire :
( )
X t = 1 + θ1 L + ... + θ q Lq ε t , ou X t = θ (L )ε t .
Forme autorégressive infinie
Si θ ( z ) n’a pas de racine de module égal à 1, ce qu’on supposera dans la suite, on peut écrire :
∞ ∞

∑ π i X t −i = ε t
i = −∞
, avec ∑π
i =1
i < +∞ ,

En outre, si les racines de θ (z ) sont toutes de module supérieur à 1, on a π i = 0, ∀i < 0 et εt


s’interprète comme l’innovation du processus.
Prenons le cas particulier du processus MA(1) : X t = ε t − θε t −1 .
Le coefficient d’auto corrélation a pour valeur :
−θ
 si i =1
ρ i =  10+θsi i >1
2


Le coefficient d’auto corrélation partielle est égal à :

τi =
−θ i 1−θ 2( )
1 − θ 2(i −1)
Le corrélogramme partiel peut ainsi prendre différentes formes selon la valeur de θ.

9-b Processus AR(q)


X t est un processus AR d’ordre q s’il se présente sous la forme :
X t = ϕ1 X t −1 + ϕ 2 X t − 2 + ....... + ϕ p X t − p + ε t
εt est un bruit blanc.
Sous certaines conditions, le processus AR peut s’écrire comme une somme infinie de bruits blancs :
+∞
Xt = ∑h ε
j = −∞
j t− j

Cas particulier du processus AR(1) : X t = ϕX t −1 + ε t


De plus AR(1) stationnaire s’écrit ⇔ ϕ <1
Le coefficient d’auto corrélation du processus AR(1) est : ρj =ϕ j.

τ j = {ϕ0 sisij =j1>1


Son coefficient d’auto corrélation partielle est :

Le corrélogramme peut prendre différentes formes selon la valeur de ϕ.


9-c Processus ARMA(p,q)
La notion de processus ARMA réunit celles de « processus autorégressif » et de « processus
moyenne mobile ». Dans les modèles ARMA, la valeur prise au temps t par la variable étudiée est une
fonction linéaire de ses valeurs passées et des valeurs présentes ou passées d’un bruit blanc.
La forme générale d’un modèle ARMA(p,q) se présente de la façon suivante :
X t + ϕ1 X t −1 + .... + ϕ p X t − p = ε t + θ 1ε t −1 + .... + θ q ε t − q
εt est un bruit blanc.
Le processus ARMA(p,q) peut être représenté aussi par la symbolique suivante (équivalente de
l’écriture précédente) : ϕ p (B )X t = θ q (B )ε t
B est l’opérateur retard, c'est-à-dire qu’il transforme X t en X t −1 : BX t = X t −1
ϕ p (B ) est le polynôme 1 − ϕ1 B − ϕ 2 B − .... − ϕ p B
2 p

θ q (B ) est le polynôme 1 − θ1 B − θ 2 B 2 − .... − θ q B q

9-d Identification du modèle

ARMA(0,1):ACF: un seul pic ; PACF: décroissance exponentielle

op <- par(mfrow=c(4,2))
n <- 186
for (i in 1:4) {
serie <- NULL
while(is.null(serie)) {
model <- list(ma=rnorm(1))
try( serie <- arima.sim(model, n),silent=TRUE )
}
acf(serie, main=paste("ARMA(0,1)","MA:",round(model$ma,digits=1)))
points(0:93, ARMAacf(ma=model$ma, lag.max=93), col='red')
pacf(serie)
points(1:93, ARMAacf(ma=model$ma, lag.max=93, pacf=T), col='red')
}
par(op)

ARMA(0,1) MA: 0.1 Se ries serie


artial ACF
CF

-0.15
0.0
A

0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(0,1) MA: 0.4 Se ries serie


artial ACF
CF

0.0

-0.2
A

0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(0,1) MA: 0.4 Se ries serie


artial ACF
CF

0.0

-0.2
A

0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(0,1) MA: 0.2 Se ries serie


artial ACF
CF

-0.1
A

-0.2

0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(1,0) : ACF : décroissance exponentielle ; PACF : un seul pic.


op <- par(mfrow=c(4,2))
n <- 186
for (i in 1:4) {
serie <- NULL
while(is.null(serie)) {
model <- list(ar=rnorm(1))
try( serie <- arima.sim(model, n),silent=TRUE )
}
acf(serie, main=paste("ARMA(1,0)","AR:",round(model$ar,digits=1)))
points(0:93, ARMAacf(ar=model$ar, lag.max=93), col='red')
pacf(serie)
points(1:93, ARMAacf(ar=model$ar, lag.max=93, pacf=T), col='red')
}
par(op)

ARMA(1,0) AR: 0.2 Se rie s se rie

C
lA F
C F

rtia

.1
A

.2

-0
-0

Pa
0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(1,0) AR: 0.8 Se rie s se rie


lACF
C F

rtia

.0
.0
A

0
0

a
P

0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(1,0) AR: 1 Se rie s se rie


lACF
CF

rtia
.0

.0
A

0
a
P

0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(1,0) AR: -0.7 Se rie s se rie


lACF
C F

.5

rtia

.6
A

-0

-0
a
P

0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(1,1) :ACF$PACF : décroissance exponentielle

op <- par(mfrow=c(4,2))
n <- 186
for (i in 1:4) {
serie <- NULL
while(is.null(serie)) {
model <- list(ma=rnorm(1),ar=rnorm(1))
try( serie <- arima.sim(model, n),silent=TRUE )
}
acf(serie,
main=paste("ARMA(1,1)","AR:",round(model$ar,digits=1),"MA:",round(model$ma,
digits=1)))
points(0:93, ARMAacf(ar=model$ar,ma=model$ma, lag.max=93), col='red')
pacf(serie)
points(1:93, ARMAacf(ar=model$ar,ma=model$ma, lag.max=93, pacf=T),
col='red')
}
par(op)
ARMA(1,1) AR: -0.6 MA: 0.3 Se rie s serie

artial ACF
CF

-0.3
A

-0.4

P
0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(1,1) AR: 0.3 MA: 1.2 Se rie s serie

artial ACF
CF

-0.4
A

-0.2

P
0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(1,1) AR: -0.7 MA: -1.1 Se rie s serie

artial ACF
ACF

-0.5

-0.8
P
0 5 10 15 20 5 10 15 20

Lag Lag

ARMA(1,1) AR: -0.8 MA: 1 Se rie s serie

artial ACF
ACF

-0.1
0.0

P
0 5 10 15 20 5 10 15 20

Lag Lag

ARIMA

Arima est un acronyme pour Autorégressive Integrated Moving Average. Les modèles arima avec
intervention permettent de décrire et de prévoir les séries chronologiques. On peut utiliser les
prévisions ARIMA comme substituts à des données préliminaires..
Pour les modèles ARMA d’ordre (p,q) , on utilise la fonction arima, la syntaxe est:
out = arima(serie,order=c(p,0,q))

> out = arima(serie,order=c(1,0,1))


> out
Call:
arima(x = serie, order = c(1, 0, 1))
Coefficients:
ar1 .ma1 intercept
0.9981 -0.8435 367628.97
s.e. 0.0028 0.0344 82813.79
sigma^2 estimated as 1.259e+09: log likelihood = -2214.19, aic = 4436.38

> out = arima(serie,order=c(1,1,1))


> out
Call:
arima(x = serie, order = c(1, 1, 1))
Coefficients:
ar1 ma1
0.1841 -0.8749
s.e. 0.0805 0.0299

sigma^2 estimated as 1.225e+09: log likelihood = -2198.78, aic = 4403.56

> out$coef
Cette sortie nous donne une estimation des coefficients
ar1 ma1 intercept
9.98065e-01 -8.43486e-01 3.67629e+05
> out$resid
Cette sortie nous donne une estimation des résidus

Simulation de la série chronologique arima avec la fonction arima.sim


Pour simuler un processus ARIMA , on a besoin d’au moins trois éléments : un modèle, un nombre
de réalisations et un processus d’innovation.
Nous faisons la simulation de 186 observations entre janvier 1980 et juin 1995.
L’objectif de cette simulation, est de voir si la décroissance est exponentielle et l’ordre du processus
arima est de le dériver jusqu’à ce que son ACF décroisse rapidement.

> Serie = arima.sim(186,model=list(ar =0.6, ma = 0.2, order = c(1,0,1),sd=100))


> plot(Serie)
4
3
2
1
Serie

0
-1
-2
-3

0 5 0 1 0 0 1 5 0

T im e

> acf(Serie)

Nous remarquons sur ce graphe, une légère décroissance

S e r ie s S e r ie
1.0
0.8
0.6
ACF

0.4
0.2
0.0

0 5 1 0 1 5 2 0

L a g

> acf(diff(Serie))

En applique l’opérateur différence à serie. L’objet retourné est de type ts et possède une observation
de moins que série.
Diff( ) calcule la différence entre une série et elle-même décalée dans le temps de k observations. Ici,
on voit une décroissance de la série
S e r ie s d if f ( S e r ie )

1.0
0.8
0.6
ACF

0.4
0.2
0.0

0 5 1 0 1 5 2 0

L a g

Prévision d’un processus SARIMA

Plus généralement, la fonction arima permet d’estimer les paramètres d’un modèle SARIMA
Ap(L)αP(Ls)Y[t]=βQ(Ls)Bq(L)e[t] avec Y[t]=(I-L)d(I-Ls)DX[t]
La syntaxe est la suivante :
Out=arima(x,order=c(p,d,q),seasonal=list(order=c(P,D,Q),period=s))
Pour prévoir à l’horizon h, on utilise la fonction predict
P$pred contient les prévisions
P$se erreurs de prévision (écart type)

> out=arima(serie,order=c(1,1,1), seasonal=list(order=c(0,1,1),period=12))


> p1=predict(out
,n.ahead=100)
> plot(serie, xlim=c(1980,2000),ylim=range(c(serie,p$pred)))
> lines(p1$pred, col='blue')
> lines(p$pred+1.96*p$se,col="red")
> lines(p$pred-1.96*p$se,col="red")
> abline(h=0,v=1980:2000)
550000
450000
Victoriahotel

350000
250000

1980 1985 1990 1995 2000

Time

A travers ce graphe que notre horizon de prévision commence (blue), c’est ce que montre la fin de ma
série originale en noir et le rouge indique les erreurs de prévision entre juin 95 et avril 96.
Bibliographie
[1] Christian GOURIEROUX , Alain MONFORT
Séries temporelles et Modèles dynamiques
[2] Brockwell P.J., Davis R. A .(1991) Time Series: Theory and Methods, Springer.

[3] Mélard G. (1990) Méthodes de prévision à cour terme. Ed. Ellipses

[4] Emmanuel Paradis (12 Septembre 2005) , R pour les débutants

[5] Yves ARAGON (Septembre 2004), Introduction aux séries temporelles

[6] D.Chessel & J. Thioulouse, Modèle Linéaire généralisé / Logiciel R

[7] Anne PHILIPPE (octobre 2004) , Notes de cours sur le logiciel R

[8] Jérôme HUILLET (Septembre 2002), Initiation à l’Environnement R

[9] Philippe Grosjean, Frédéric Ibanez : Manuel de l’utilisateur de la librairie de


Fonctions pour R et pour S+

[10] Rainer von Sachs & Sébastien Van Bellegem (4ème Edition, Septembre 2005)

[11] Faouzi LYAZRHI , Une Introduction au langage R

Vous aimerez peut-être aussi