STrappel 24
STrappel 24
300
200
100
Indices descriptifs d’une série temporelle qui ‘‘résument’’ la série yt tn1
1 n
Indices de tendances centrales→ La moyenne y yt et la médiane.
n t 1
1 n 2
Indices de dispersion→ La variance empirique ( yt y ) ,
n t 1
1
n n
(1 / n) ( yt y )3 (1 / n) ( yt y ) 4
Indices d’asymétrie et d’aplatissement → ˆ1 t 1 et ˆ2 t 1 3
C03 / 2 C02
15
10
y
5
0
-1
-2
-3
-4
0 20 40 60 80 100
2
Elimination:
- soustraire la tendance à la série initiale zt yt ft
- recourir aux différences d’ordre 1, zt yt yt 1
Détection, estimation et élimination de la saisonnalité
Détection : le graphe ; calcul du coefficient d’autocorrélation empirique rh ; un test
Estimation :
- Estimation paramétrique : yt st t , st =sin (ωt + ϕ)
- Estimation non paramétrique : → calcul des coefficients saisonniers corrigés
Elimination :
pour un modèle additif, ydsi, j yi, j s j ( ydsi, j yi, j / s j cas multiplicatif)
Appliquer deux filtres différences si l’on veut, à la fois, éliminer la tendance et la saisonnalité
Prévision→ Soit une série y1 ,..., yn . Prévoir yn h , non encore observée.
- la prévision est notée yˆ n (h) ,
- l’erreur de prévision est donnée par la différence en h yˆ n (h) yn h
Méthodes de prévision
- Modèles déterministes : Exemple : yt a bt t , la prévision de yt 1 sera aˆ bˆ(t 1)
- Les lissages exponentiels
- Les modèles de type ARMA
Concepts fondamentaux d’une série temporelle
Processus stochastique et série temporelle
(, A, P) un espace de probabilité et (Yt ) un processus stochastique (T Z)
E ( yt ) Cste
2
Stationnarité→ ( yt ) est faiblement stationnaire → V ( yt ) 0
cov( y , y
t t h ) h , t , h
les suites ( yt1 h ,..., ytn h ) et ( yt1 ,..., yt n ) ont même distribution
- Variables t centrées, identiquement distribuées et non corrélées → ( t ) est un bruit blanc faible
E( t ) 0,V ( t ) 2 et (h) cov( t , t h ) 0 pour h 0 (Si t ~ N (0, ) alors ( t ) est un BB gaussien)
3
( h)
Fonction d’autocorrélation : h → corrélation de la série avec elle-même décalée de h
(0)
périodes.
Fonction d’autocorrélation partielle → corrélation de yt et yt h
l’influence des variables yt 1 , yt 2 …, yt h1 ayant été retirée.
Test de corrélation : H 0 : h =0 contre H1 : h 0
n2
Pas de corrélation si t tn2 ( / 2) où, t rh
1 r 2
h
Test de bruit blanc ( Box-Pierce) : H 0 : 1 ... h 0
h
Nous acceptons l’hypothèse de bruit blanc H 0 si Q (2h) ( ) , où Q n rk2 , (ou p-value > α)
k 1
Test d’homoscédasticité (Test ARCH) . Soit et2 a0 a1et21 ... aq et2 q t ...(1)
ˆ 0 ˆ 0
où , JQ g12 g 22 avec g1 1 et g 2 2
6/ n 24 / n
4
- Estimer les paramètres du modèle c , i (i 1,..., p) , j ( j 1,...,q) et 2 d’un modèle ARMA à partir
5
Processus ARIMA et SARIMA
10
5
0 20 40 60 80 100
Time
Fig1
La série parait stationnaire. Confirmons la stationnarité de la série Wind1par le test de Dickey-Fuller.
Commencer par télécharger le package urca .
library(urca);
Considérons le modèle (1) avec trend ( tendance).
x1=ur.df(Wind1,type='trend'); summary(x1)
Augmented Dickey-Fuller Test Unit Root Test # Test regression trend
Coefficients: Estimate Std. Error t value Pr(>|t|)
6
tt 0.004857 0.009623 0.505 0.615
Value of test-statistic is: -5.1539 8.8675 13.301
Critical values for test statistics: 1pct 5pct 10pct
tau3 -3.99 -3.43 -3.13
phi2 6.22 4.75 4.07
phi3 8.43 6.49 5.47
tc =-5.15 < tau3= -3.99→accepter H1: rau<0
p-value de beta= 0.61> 0.05→accepter H0 :beta=0
On passe au modèle (2) avec drift (constante)
x2=ur.df(Wind1,type='drift'); summary(x2)
Augmented Dickey-Fuller Test Unit Root Test # Test regression drift
Coefficients: Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.28548 1.07253 4.928 3.02e-06 ***
Value of test-statistic is: -5.1508 13.2655
Critical values for test statistics: 1pct 5pct 10pct
tau2 -3.46 -2.88 -2.57
phi1 6.52 4.63 3.81
tc =-5.15<tau2= -3.46→accepter H1: rau<0
p-value de alpha= 3.02*10-6 < 0.05→rejeter H0 :alpha=0
On s’arrête au modèle (2). La série Wind1 est donc stationnaire et est de la forme I(0)+c.
2. Identification
Fonction d’autocorrélation simple et partielle :
acf(Wind1,25) ; pacf(Wind1,25) ;
Series Wind1 Series Wind1
1.0
0.3
0.8
0.2
0.6
Partial ACF
0.1
ACF
0.4
0.0
0.2
-0.1
0.0
-0.2
-0.2
0 5 10 15 20 25 5 10 15 20 25
Lag Lag
Fig2 Fig3
Nous prenons pmax=1 et qmax=2 et donc cinq modèles possibles pour la série Wind1 à
savoir :AR(1), MA(1), ARM(1,1), MA(2) et ARMA(1,2).
3. Estimation
Fit1=armaFit(~arma(1,0),data=Wind1); summary(Fit1)
Coefficient(s): Estimate Std. Error t value Pr(>|t|)
ar1 0.33999 0.08818 3.856 0.000115 ***
intercept 9.45493 0.45417 20.818 < 2e-16 ***
sigma^2 estimated as: 10.24; log likelihood: -291.86; AIC Criterion: 589.71
7
Fit2=armaFit(~arma(0,1),data=Wind1); summary(Fit2)
Coefficient(s): Estimate Std. Error t value Pr(>|t|)
ma1 0.26377 0.07999 3.298 0.000975 ***
intercept 9.44643 0.38603 24.471 < 2e-16 ***
sigma^2 estimated as: 10.58; log likelihood: -293.67;AIC Criterion: 593.33
Fit3=armaFit(~arma(1,1),data=Wind1); summary(Fit3)
Coefficient(s): Estimate Std. Error t value Pr(>|t|)
ar1 0.5859 0.1563 3.749 0.000178 ***
ma1 -0.2735 0.1754 -1.559 0.118990
intercept 9.4661 0.5194 18.226 < 2e-16 ***
sigma^2 estimated as: 10.08; log likelihood: -290.94; AIC Criterion: 589.88
Fit4=armaFit(~arma(0,2),data=Wind1); summary(Fit4)
Coefficient(s): Estimate Std. Error t value Pr(>|t|)
ma1 0.24259 0.09814 2.472 0.0134 *
ma2 0.19654 0.09893 1.987 0.0470 *
intercept 9.44784 0.43076 21.933 <2e-16 ***
sigma^2 estimated as: 10.2; log likelihood: -291.63; AIC Criterion: 591.26
Fit5=armaFit(~arma(1,2),data=Wind1); summary(Fit5)
Coefficient(s): Estimate Std. Error t value Pr(>|t|)
ar1 0.4469 0.2048 2.182 0.0291 *
ma1 -0.1788 0.2015 -0.887 0.3749
ma2 0.1635 0.1231 1.329 0.1839
intercept 9.4610 0.5237 18.067 <2e-16 ***
sigma^2 estimated as: 9.938; log likelihood: -290.19;AIC Criterion: 590.37
4. Validation
Première étape : Test de student sur les paramètres
Selon le test de signification sur les paramètres, les modèles 3 et 5 sont rejetés.
Deuxième étape : Tests sur les résidus
Nous testons les résidus obtenus des modèles non rejetés pour savoir s’ils constituent un bruit blanc
gaussien. d’autocorréllation ).
res1=residuals(Fit1) ;ts.plot(res1) ; acf(res1)
Series res1
10
1.0
0.8
5
0.6
ACF
res1
0.4
0
0.2
0.0
-5
-0.2
0 20 40 60 80 100 0 5 10 15 20 25
Time Lag
Fig4 Fig5
8
Test d’absence d’autocorréllation ( Nous utilisons le test de Box et Pierce)
Box.test(res1,25)
X-squared = 21.9676, df = 25, p-value = 0.6376
p-value > 0.01 →hypothèse d’autocorréllation rejetée
Test d’homoscédasticité des résidus (Nous utilisons le test ARCH)
library(FinTS); ArchTest(res1);
Chi-squared = 21.104, df = 12, p-value = 0.04888
p-value > 0.01→ hypothèse d’homoscédasticité acceptée
Test de normalité des résidus ( Nous utilisons le test de Jarque et Bera)
library(tseries) ;
jarque.bera.test(res1)
X-squared = 0.9232, df = 2, p-value = 0.6303
p-value > 0.01→ hypothèse de normalité acceptée
Les résidus vérifient bien un bruit blanc gaussien pour α=0.01.
D’une manière similaire, on peut vérifier que les résidus obtenus des estimations selon les modèles
MA(1) et MA(2) suivent aussi un bruit blanc gaussien.
Comparaison des trois modèles candidats selon le critère AIC
p 1 0 0
q 0 1 2
AIC 589.71 593.33 591.26
Nous choisissons le modèle AR(1) car il possède une valeur AIC minimum.
On peut utiliser l’instruction auto.arima du package forecast pour choisir le modèle optimal.
library(forecast) ;auto.arima(Wind1)
Series: Wind1 ; ARIMA(1,0,0) with non-zero mean
Coefficients: ar1 intercept
0.3400 9.4549
s.e. 0.0882 0.4542
sigma^2 estimated as 10.24: log likelihood=-291.86; AIC=589.71
5. prevision
predict(Fit1,5)
Low 95 Low 80 Forecast High 80 High 95
114 3.8773 6.0486 10.1502 14.2519 16.4231
115 3.0658 5.3591 9.6913 14.0235 16.3169
116 2.8702 5.1772 9.5353 13.8934 16.2004
117 2.8126 5.1212 9.4823 13.8433 16.1519
118 2.7940 5.1028 9.4642 13.8256 16.1344
9
ARIMA(1,0,0) with method: CSS-ML
16
14
12
Series: x
10
8
6
4
2
Time
Fig6
Nous nous intéressons à la modélisation du logarithme du PNB américain sur la période 1970-
1987 en dollars. Les observations sont obtenues à partir de data(USeconomic) du package tseries
(Utiliser les instructions suivantes, LPNB = USeconomic[,2]; LPNB1=LPNB[65:136]).
1. Représenter graphiquement la série LPNB1et sa fonction d’autocorrélation pour 20 retards.
Donner des commentaires.
2. Tester la stationnarité de la série différenciée d’ordre 1 dLPNB1 par le test Dickey-Fuller
(dLPNB1=diff(LPNB1).
3. Ajuster un modèle ARIMA pour la série LPNB1.
4. Utiliser les tests de Box-Pierce, Arch et Jarque-Bera pour la série des résidus
obtenus. Que peut-on déduire ?
5. Effectuer une prévision pour l’année 1988.
****************************************************************
library(tseries) ;
data(USeconomic); LPNB = USeconomic[,2]; LPNB1=LPNB[65:136];
1. Le graphe de la série LPNB1 et sa fac pour 20 retards
ts.plot(LPNB1) ;acf(LPNB1,20)
10
Series LPNB1
1.0
8.2
0.8
0.6
8.1
LPNB1
ACF
0.4
8.0
0.2
7.9
0.0
-0.2
7.8
0 10 20 30 40 50 60 70 0 5 10 15
Time Lag
Series dLPNB1
0.2
0.1
Partial ACF
0.0
-0.1
-0.2
5 10 15
Lag
11
x2=ur.df(dLPNB1,lag=1,type='drift'); summary(x2)
# Augmented Dickey-Fuller Test Unit Root Test # Test regression drift
Coefficients: Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.004268 0.001631 2.617 0.010986 *
Value of test-statistic is: -4.1226 8.5024
Critical values for test statistics: 1pct 5pct 10pct
tau2 -3.51 -2.89 -2.58
phi1 6.70 4.71 3.86
tc =-4.12<tau2=-3.51→accepter H1: rau<0
p-value de alpha= 0.01 < 0.05→rejeter H0 :alpha=0→ dLPNB1 est de la forme I(0)+c
Donc, la série dLPNB1 est stationnaire.
3. Ajuster un modèle ARIMA pour la série LPNB1 c'est-à-dire un modèle ARMA pour dLPNB1
acf(dLPNB1); pacf(dLPNB1)
0.2
0.8
0.1
0.6
Partial ACF
0.4
ACF
0.0
0.2
-0.1
0.0
-0.2
-0.2
0 5 10 15 5 10 15
Lag Lag
Selon les fonctions acf et pacf de la série différenciée dLPNB, nous pouvons proposer un modèle
AR(1) pour cette série.
Fit=armaFit(~arma(1,0),data=dLPNB1);summary(Fit)
Title: ARIMA Modelling ;
Call: armaFit(formula = ~arma(1, 0), data = dLPNB1)
Coefficient(s): Estimate Std. Error t value Pr(>|t|)
ar1 0.250415 0.114746 2.182 0.0291 *
intercept 0.006872 0.001661 4.138 3.51e-05 ***
sigma^2 estimated as: 0.0001105; log likelihood: 222.65;AIC Criterion: -439.29
Autre méthode
library(forecast); auto.arima(LPNB1)
Series: LPNB1 ; ARIMA(1,1,0) with drift
Coefficients: ar1 drift
0.2504 0.0069
s.e. 0.1147 0.0017
sigma^2 estimated as 0.0001105: log likelihood=222.65
12
AIC=-439.29 AICc=-438.93 BIC=-432.5
4. Graphe et acf des résidus. Tests sur les residus
res=residuals(Fit);ts.plot(res);acf(res);
Series res
1.0
0.02
0.8
0.01
0.6
0.00
0.4
ACF
res
-0.01
0.2
-0.02
0.0
-0.03
-0.2
0 10 20 30 40 50 60 70 0 5 10 15
Time Lag
13
Annexe
Nous étudions la série chronologique du nombre de passagers (en milliers) par mois, qu’on
note NP, dans les transports aériens, de 1949 à 1960.
Cette série est disponible sous R (AirPassengers).
1. Représenter graphiquement la série NP . Ce processus présente-t-il une stabilité de la variance, une
tendance et une saisonnalité. Que peut-on dire sur la stationnarité de ce processus ?
2. Tracer le graphe de la série LNP=log(NP). Donner une analyse visuelle de cette série.
3. Appliquer la méthode des différences pour enlever la saisonnalité et la tendance. La série obtenue
ddLNP semble-t-elle stationnaire ? Utiliser le test de Dickey –Fuller pour confirmer votre réponse.
4. Tracer graphiquement les fonctions d’auto-corrélation simple et partielle de la série ddLNP. Donner
des commentaires. Identifier un modèle ARMA pour cette série.
5. Estimer les paramètres du modèle choisi.
6. Utiliser les tests de Box-Tierce , Arch et de Jarque-Bera pour la série des résidus obtenus.
7. Calculer les prévisions pour l’année 1961.
14
1. NP=AirPassengers ;
400
300
200
100
Temps
acf(NP,40,"correlation")
Series NP
1.0
0.8
0.6
ACF
0.4
0.2
0.0
-0.2
Lag
Graphiquement nous notons que la série présente une tendance, une saisonnalité et une augmentation
de la variance. La fonction d’autocorrélation ne décroit pas rapidement. Ce qui signifie que la série est
non stationnaire.
2. Pour la stabilité de la variance nous considérons le logarithme népérien de la série brute. le graphe
de la serie LNP=log(NP) est donné par,
LNP=log(NP) ;ts.plot(LNP,xlab="Temps",ylab="LNP") ;
15
6.5
6.0
LNP
5.5
5.0
Temps
Nous notons une stabilité de la variance de la série LNP mais elle présente toujours une tendance et
une saisonnalité.
3. Pour l’élimination de la saisonnalité de la série LNP nous considérons la série,
dLNP=diff(LNP,12)
Le graphe de cette série ainsi celui de la fonction fac sont donnés par,
ts.plot(dLNP,xlab="Temps",ylab="dLNP") ; acf(dLNP,40,"correlation")
Series dLNP
1.0
0.3
0.8
0.6
0.2
0.4
dLNP
ACF
0.1
0.2
0.0
0.0
-0.2
1950 1952 1954 1956 1958 1960 0.0 0.5 1.0 1.5 2.0 2.5 3.0
Temps Lag
Nous notons graphiquement que la série désaisonnalisée dLNP est non stationnaire. Le test de
stationnarité de la série dLNP est abordé en annexe.
Pour l’élimination de la tendance de la série dLNP nous considérons la série, ddLNP=diff(dLNP).
Le graphe de cette série est obtenu par, ts.plot(ddLNP,xlab="Temps",ylab="ddLNP") ;
16
0.15
0.10
0.05
ddLNP
0.00
-0.05
-0.10
-0.15
Temps
La série ddLNP parait stationnaire. Vérifions la stationnarité de la série ddLNP par le test de Dickey-
Fuller. avec un retard p=11 qu’on détermine à partir de la fonction d’autocorrélation partielle .
pacf(ddLNP, 40)
Series ddLNP
0.6
0.4
0.2
Partial ACF
0.0
-0.2
-0.4
Lag
x1=ur.df(ddLNP,lags=11,type='trend'); summary(x1);
# Augmented Dickey-Fuller Test Unit Root Test # Test regression trend
Estimate Std. Error t value Pr(>|t|)
tt -0.0001806 0.0001011 -1.785 0.076784 .
Value of test-statistic is: -4.9398 8.2389 12.353
Critical values for test statistics: 1pct 5pct 10pct
tau3 -3.99 -3.43 -3.13
phi2 6.22 4.75 4.07
phi3 8.43 6.49 5.47
- La valeur ( t c t ˆ 4.93 ) est inférieure à t tab tau 3 3.99 →rejeter H0 : ρ = 0 dans le modèle (1)
17
(Intercept) 0.034084 0.008225 4.144 6.45e-05 ***
Value of test-statistic is: -4.5964 10.5686
Critical values for test statistics: 1pct 5pct 10pct
tau2 -3.46 -2.88 -2.57
phi1 6.52 4.63 3.81
La statistique ( t c t ˆ 4.59 ) est inférieure à t tab tau 2 3.46 →rejeter H0 : ρ = 0 dans le modèle (2).
- La p-value du paramètre α (6.45*10-5 ) inférieure à 0.05→ rejeter H0 : α = 0 dans le modèle (2) . Donc, la
série ddLNP est de la forme I(0)+c
Nous déduisons la stationnarité de la série ddLNP.
4. Les fonctions d’autocorrélation simple et partielle de la série ddLNP sont données par,
acf(ddLNP,40,"correlation") ; pacf(ddLNP,40,"correlation")
0.2
0.8
0.1
0.6
0.0
Partial ACF
0.4
ACF
-0.1
0.2
0.0
-0.2
-0.2
-0.3
-0.4
0.0 0.5 1.0 1.5 2.0 2.5 3.0 0.0 0.5 1.0 1.5 2.0 2.5 3.0
Lag Lag
Nous notons que, les coefficients ACF sont significatifs aux retards 1, 3 (?) et 12 , 23(?). et que les
coefficients PACF sont significatifs aux retards 1, 3(?), 9, 12
Nous suggérons à la série brute LN un modèle SARIMA(p,d,q)x(P,D,Q)12 avec d=1, D=1,
pmax=2,qmax=2,Pmax=1 et Qmax=1.
Nous utilisons la fonction auto.arima( ) du package forecast pour le meilleur modèle
library(forecast)
best.mod=auto.arima(LNP,d=1,D=1,max.p=2,max.q=2,max.P=1,max.Q=1)
best.mod; Series: LNP ; ARIMA(0,1,1)(0,1,1)[12]
5. Estimation des paramètres du modèle choisi
Fit=arima(LNP,order=c(0,1,1),seasonal=list(order=c(0,1,1),period=12))
Series: LNP ;ARIMA(0,1,1)(0,1,1)[12]
Coefficients: ma1 sma1
-0.4018 -0.5569
s.e :. 0.0896 0.0731
sigma^2 estimated as 0.001348: log likelihood=244.7
AIC=-483.4 AICc=-483.21 BIC=-474.77
18
6. Graphe et acf des résidus. Tests sur les résudus
Les résidus sont donnés par , res=residuals(Fit).
A partir des instructions, ts.plot(res); acf(res,40,"correlation"), nous obtenons
le graphe et la fonction acf des résidus.
Series res
1.0
0.10
0.8
0.05
0.6
0.00
ACF
res
0.4
-0.05
0.2
0.0
-0.10
-0.2
1950 1952 1954 1956 1958 1960 0.0 0.5 1.0 1.5 2.0 2.5 3.0
Time Lag
19
Jan Fev Mar Avr Mai Juin Juillet Aout Sep Oct Nov Dec
419.1 391.5 435.9 443.9 455.0 517.3 589.7 583 484.6 428.9 368.5 406.7
484.0 462.9 526.3 546.2 569.5 657.8 761.2 763.3 643 576.4 501.4 560
Graphe des prévisions de la série du nombre de passagers
NPprev=ts(c(NP,prev1961),start=1949,frequency=12);plot(NPprev,type="l",lty=1, col="blue")
lines(A, lty=2,col="red");lines(B, lty=2,col="red")
600
500
NPprev
400
300
200
100
Time
Annexe
Test de stationnarité de Dickey-Fuller pour la série dLNP.
Utilisons le test de Dickey-Fuller avec un retard p=13 qu’on détermine à partir de la fonction d’autocorrélation
partielle.
x1=ur.df(dLNP,lags=13,type='trend'); summary(x1)
Puisque tc t ˆ 2.87 ttab tau3 3.99, nous acceptons H0 : ρ = 0 pour un seuil de 1% dans le modèle (1).
D’autre part, l’hypothèse (β, ρ) = (0, 0) est acceptée dans le modèle (1) car phi3c= 4.12 < phi3t = 8.43 au seuil de 1% .
Donc on accepte l’hypothèse que la série a une racine unité et pas de tendance au un seuil de 1%.
x2=ur.df(dLNP,lags=13,type='drift'); summary(x2)
L’hypothèse ρ = 0 est acceptée pour un seuil de 1% dans le modèle (2) car t c t ˆ 2.393 t tab tau 2 3.46.
D’une manière similaire, nous dirons que l’hypothèse (α, ρ) = (0, 0) est acceptée dans le modèle (2) car phi1c =6.52 < phi1t
=6.52 au seuil de 1% .Donc on accepte l’hypothèse que la série a une racine unité et ne possède pas de constante pour un
niveau de 1%.
x3=ur.df(dLNP,lags=13,type='none'); summary(x3);
L’hypothèse ρ = 0 est acceptée pour un seuil de 1% dans le modèle (3) car t c t ˆ 0.92 t tab tau1 2.58.
Nous pouvons conclure que pour un seuil de 1% la série désaisonnalisée dLNP présente une racine unitaire et ne possède pas
de tendance ni de constante. La série est intégrée d’ordre 1, c'est-à-dire I(1) et donc nous la rendons stationnaire en
considérant la série différenciée d’ordre 1. C'est-à-dire, la série ddLNP qui est égale à diff(dLNP).
20