Vous êtes sur la page 1sur 14

Test de blancheur des residus

1. Box.test(zlm$residuals, lag = 1). Chapiter 1

Box.test(zlm$residuals, lag = 3) lag 此处是周期点

Box.test(zlm$residuals, lag = 6)

Box.test(zlm$residuals, lag = 9)

Box.test(zlm$residuals, lag = 12)

# 注意!看系数的 P 大于 5% 时,系数是不显著的# Le coefficient de "time" n’est pas significatif à 5% :


tendance horizontale

H0 : pas d'autocorr; BOX.TEST 显示 p 大于 5%,所以 on accepte l'hypothèse nulle de non autocorrélation des
résidus pour tous les lags. 所有滞后期的残差都不存在自相关。-----------standard 见第 8 页

2. for (i in c(3, 6, 9, 12)) print(Box.test(seriediff, lag= i))

Ps: for (i in 1:40)( pour les 前 40 个 lag)

h0:autocorrelation d'ordre j =0-----possiblement BB. Chapitre2

#H1:autocorrelation d'ordre j non = 0------ce n'est pas un BB

#on rejette H0(p<0.05) aux seuils standards--> ce n'est pas un bruit blanc

3. for (i in c(3, 6, 9, 12)) print(Box.test(data, lag= i)),

4. chapitre 3 : Étudier les résidus de cette modélisation test de résidu dans une
modélisation : tracer la fonction d’autocorrélation empirique

Residus <- gnpusAR$resid (dataAR$residus)


plot(Residus)

acf(Residus)

acf(Residus,na.action=na.pass)

Test de blancheur

for (i in 1:40) print(Box.test(Residus, lag= i)). ---(pour 前 40 个 lag)

interp: il ne rejette jamais H0, il n’est pas aberrant de supposer que les
résidus forment un bruit blanc----il est bb

5. Les résidus sont-ils des bruits blancs pour les 3 modèles?

for (i in 1:10) print(Box.test(ARMA11$residuals, lag= i))

for (i in 1:10) print(Box.test(AR1$residuals, lag= i))

for (i in 1:10) print(Box.test(MA1$residuals, lag= i))

pour le ARMA11 oui mais pas pour AR1 et MA1 : ces deux modeles sont mal ajustés
aux données

test min un AIC

1. Quel autre critère vous permet de choisir entre plusieurs modèles (两种 criteres
是 test blancheur et AIC)

minimiser le critere AIC

ARMA11

AR1

MA1 #on choisit le ARMA11


2. Lequel choisissez-vous?-------计算 BB,同时计算 AIC

for (i in 1:10) print(Box.test(ar13$residuals, lag= i))--------ce sont des BB

for (i in 1:10) print(Box.test(maq$residuals, lag= i))-----ce sont des BB en


majorite mais pas pour tous les lags

for (i in 1:10) print(Box.test(arma11$residuals, lag= i))-----#ce sont des BB

ar13

maq

arma11 # on regarde le critere AIC : on choisit le AR13

3.

Création d’un serie temporelle

1. 题中会给 par mois: ( chapiter 1) serie<-


ts(varicelle,start=c(1931,1),end=c(1972,6),frequency = 12) plot.ts(serie)

2. Par trimestriel: (chapiter 3)

gnpus <- ts(gnpus_dat, start=c(1947,2), freq=4) plot.ts(gnpus)

3. is.ts(oil) chapitre 3 (用 r 自带的数据库)

plot.ts(oil)

#Ce chronogramme semble avoir une tendance : cela ne ressemble pas à une
réalisation d’un processus stationnaire.

4. is.ts(wmurders) (用 r 自带的数据库) chapiter 4 ex


plot.ts(wmurders)

#Cette série n'est pas stationnaire : elle présente une tendance en forme de U
inversé mais cette tendance ne semble pas non-plus quadratique.

#Etant donné qu'il est difficile de proposer une forme fonctionnelle qui collerait à
ce graph, nous proposons de différencier la série

5. x=ts(st)

plot(x)---- #Non, car la série n'a pas l'air stationnaire

fonction d’autocorrelation et fonction d’autocorrélation partiel---去找到这是个什么


模型

1. Tracez les 25 premières auto-corrélations.---j=25 lag( chapitre 1)

acf(serie,lag.max=25,type=c("correlation"))

#acf 用于 tracer la fonction de corrélation partielle d'une série temporelle.


解释这样的图 La fonction d’autocorrélation est périodique, ce qui indique une périodicité
dans la série temporelle.

#La ligne pointillée bleue indique le niveau en-dessous duquel la corrélation n’est plus
statistiquement significative.

注意:在差分法的 ACF 图中,当自相关系数的值接近于 1 或-1 时,表明有强的自相关


2. La fonction d’autocorrélation de la série jusqu’à h = 12.(chapitre3)

acf(gnpus)

acf(gnpus,lag.max=12)

# Corresponde modèle AR, voire une MA(2) jusqu a


2,q=2, h>2,vers 0-----ARMA, q+1 vers 0
#autocorrelation entre -1 et 1,positif mais pas fortement

#barre blue---intervalle de confiance autour de 0

3. acf(AR2) 通过 acf et partial acf ----得到 series 是什么模型

PACF 中有几个顶端就是 AR 几
pacf(AR2) chapitre 3

#L’ACF ne semble pas être celle d’un MA, et la PACF ayant deux “pics”
correspond à celle d’un AR(2).

4. acf(r.oil) chapitre 3

pacf(r.oil) #Il s'agit tres probablement d' un


ARMA.

5. Sur cette série identifiez un modele AR(p) qui pourrait convenir.

acf(seriediff)
pacf(seriediff)

#un modèle AR(13) semble convenir (到 lag13,开始趋向于零)

6.

Ajuster un modèle AR, MA, ARMA

1. Ajuster un modèle AR, donner les paramètres estimé.

gnpusAR <- ar(gnpus)

gnpusAR

summary(gnpusAR)

#Cette fonction nous propose donc un AR(3), de modèle :


Xt=0.3463Xt−1+0.177Xt−2−0.1421Xt−3+ut

#où ut est un bruit blanc BB(0,σ2) de variance σ2=9.676×10−05.

2. Ajuster un ARMA par les donnees dans r, étudier les résidus


install.packages("forecast")

library(forecast)

armaOil <- auto.arima(r.oil,stationary=TRUE, seasonal=FALSE)

armaOil

acf(armaOil$residuals)

pacf(armaOil$residuals)

for (i in 1:10) print(Box.test(armaOil$residuals, lag= i))

#: une modélisation des log-rendements avec un ARMA(1,1)

p 看 pacf, q 看 acf

nous rend des résidus qui passent le test de blancheur de Box-Pierce pour les petits
lags uniquement. La modélisation n'est donc pas raisonnable. (有几个 p<5%)

3. Ajustez un ARMA(1,1), un AR(1) et un MA(1)

ARMA11<-auto.arima(X,max.p=1,max.q=1,max.d=0,seasonal=FALSE,
stationary=TRUE, allowmean=FALSE)

ARMA11

AR1<-auto.arima(X,max.p=1,max.q=0,max.d=0,seasonal=FALSE,
stationary=TRUE, allowmean=FALSE)

AR1

MA1<-auto.arima(X,max.p=0,max.q=1,max.d=0,seasonal=FALSE,
stationary=TRUE, allowmean=FALSE)

MA1 #tous les coeffs sont sign

4. Ajustez ce modèleAR(13). Puis un MA(q) et un ARMA(1,1)


ar13=arima(seriediff,order = c(13,0,0), include.mean = FALSE)

ar13-------r 自带数据库

arima=auto.arima(AirPassengers)

arima----------un arima 2,1,1

maq=auto.arima(seriediff,max.p=0,max.d=0,seasonal=FALSE, stationary= TRUE,


allowmean=FALSE)

maq

arma11=auto.arima(seriediff,max.p=1,max.q=1,max.d=0,seasonal=FALSE,
stationary= TRUE, allowmean=FALSE)

arma11

5.

Simuler une série

1. simuler la série AR(𝑋! = 1,5𝑋!"# − 0.75𝑋!"$ + 𝜖!, 𝜖! ∼ 𝐵𝐵(0,1), avec T=200.)—


chapitre3

set.seed(27)

AR2 <- arima.sim(list(ar=c(1.5,-0.75)), n=200)

plot(AR2)

6. Simuler un processus AR(P) ou MA(q) de T=1000, retrouver p etou q---chapitre 3

Ex : MAtest <- arima.sim(list(ma=c(0.4,-0.75,0.5,-0.7)),n=1000)

plot(MAtest)

acf(MAtest)

pacf(MAtest)

7. Simulez une trajectoire de longueur 1000 de l’ARMA(2,1) : 𝑋! = 0,89𝑋!"# − 0,5𝑋!"$ + 𝜖!


− 0.23𝜖!"#, 𝜖! ∼ 𝐵𝐵(0,1). Donnez son acf et pacf.
set.seed(27)

ARMA21 <- arima.sim(list(ar = c(0.89, -0.5), ma = -0.23), n=1000)

plot(ARMA21)

acf(ARMA21)

pacf(ARMA21)

Xt 是 ar,𝜖t 是 ma

8. Simuler un processus AR(1), de paramètre 0.3, puis 0.8, puis -0.8 (T=100).---
chapitre 4

x <- arima.sim(list(ar=0.3),n=100)

plot(x)

acf(x)

y <- arima.sim(list(ar=0.8),n=100)

plot(y)

acf(y)

# Il y a une plus forte corrélation (∼1) entre Xt et Xt−1 qu'au graph précédent.

z <- arima.sim(list(ar=-0.8),n=100)

plot(z)
acf(z) 这种对称的图就是 anti

# A l’inverse, on a ici une forte anticorrélation (∼−1) entre Xt et Xt−1 : Si


Xt−1 est positive, il y a de fortes chances que Xt soit alors négative et
réciproquement

9. Simuler et tracer 100 observations d’un processus MA(3) de paramétres b1=0.9,


b2=0.6, b3=0.9 puis tracer sa fonction d’autocorrélation empirique. Chapitre 4

MA3 <- arima.sim(list(ma=c(0.9,0.6,0.9)),n=100)

plot(MA3)

acf(MA3)

10. Simuler 200 observations du modele suivant : Xt=0.8Xt-1+ epsilont - 0.3epsilont-


1 +0.6epsilont-2 chapitre 4

#Essayer de retrouver les coefficients à partir de la série simulée : Ajuster un


modèle ARIMA(p,d,q) de la série simulée à l'aide de la commande auto.arima.
#afficher le graphe de la fonction d’autocorrélation empirique des résidus.

set.seed(1707)

X <- arima.sim(n=200,list(ar=c(0.8),ma=c(-0.3,0.6)))

plot(X)

acf(X, lag.max=80)

ARIMA <- auto.arima(X,max.p=1, max.q=2, 根据上边的系数


max.d=0,stationary=TRUE,seasonal = FALSE, allowmean=FALSE)

ARIMA
acf(ARIMA$residuals)

11. Simulez Yt=0.5Yt-1 + 0.6 epsilont-1 +epsilont de longueur T=200

set.seed(12345)

X <- arima.sim(n=200,list(ar=c(0.5),ma=c(0.6)))

plot(X)

12.

estimation les coefficients p et q du modèle ARMA, puis estimez les paramètres du


modèle en fonction des p ; q trouvés

1. install.packages("forecast")

library(forecast)

1) f<-auto.arima(ARMA21,max.d=0,stationary=TRUE, seasonal=FALSE)

str(f)-------- #le modele propose plutot un AR(2)

2) Res <- f$residuals

acf(Res)

for (i in 1:10) print(Box.test(Res, lag= i))

#Conclusion : Le test de Box-Pierce permet d'accepter l’hypothèse d’un bruit blanc. La


modélisation est donc pertinente.

Trouver une fonction et tester la significativité des coefficients


1. Faire tourner la fonction suivante, puis tester les coefficients de l'exemple ci-
dessus (t_stat(nom_des_resultats)).

t_stat = function(modarima, decim = 6)

{# fonction pour calculer les p-value d'un modele arima avec éventuellement
contraintes sur certains paramètres modarima = reg.av3

if(!is(modarima, "Arima")) stop("modarima may be an Arima object from


package forecast")

t.stat <- modarima$coef[modarima$mask ==


TRUE]/sqrt(diag(modarima$var.coef))

p.val <- rep(0,length(t.stat))

p.val[t.stat<0] <- 2*pnorm(t.stat[t.stat<0])

p.val[t.stat>0] <- 2*(1 - pnorm(t.stat[t.stat>0]))

round(rbind(t.stat, p.val), digits = decim)

#dimnames(ab)[[1]] = c("t-stat", "p-value")

t_stat(ARIMA)

simuler+ajuster+tester significativité. 配套进行 见 conclusion chapiter 4 ex1-5,6,7

Parfois le modèle ajusté n'est pas égal au modèle simulé + modification des
pvalues

Faire la prévision et afficher la prévision

1. Affichez le graphique de la serie différenciée puis faites les prévisions à un


horizon h=8

plot(seriediff)

fcast_arima <- forecast(ar13, h = 8)

plot(fcast_arima)
2. Affichez le summary de ces prédictions. Que vaut la prédiction pour le mois
d'aout 1961?

fcast_arima_summary <- summary(fcast_arima)

fcast_arima_summary

1.

Vous aimerez peut-être aussi