Université Docteur Moulay Tahar
Faculté des sciences
Département de Mathématiques
Master2
TP 2-1
# prevision par lissage exponentiel
Méthodes de lissage exponentiel Les méthodes de lissage exponentiel s’obtiennent
avec la fonction : HoltWinters. Le tableau ci-dessous résume les fonctions à entrer
pour chaque méthode :
Nom de la méthode Commande
SES (lissage simple) xlisse <- HoltWinters(x, beta=F, gamma=F)
Holt (lissage double) xlisse <- HoltWinters(x, gamma=F)
Holt-Winters additif xlisse <- HoltWinters(x, seasonal= "add")
Holt-Winters multiplicatif xlisse <- HoltWinters(x, seasonal= "mul")
Remarque : à la place de "add" et "mul", on peut entrer n’importe quel début
des mots "additive" et "multiplicative" (par exemple "addit" et "multip")
A¢ chage et visualisation des résultats :
Fonction e¤et
xlisse a¢ chage des paramètres
summary(xlisse) Description de l’objet obtenu par HoltWinters
lissage plot(xlisse) Représentation des valeurs observées + valeurs lissées
plot(xlisse$…tted) Représentation de l’estimation du niveau de la pente et de la saisonnalité
Prévision : Avec la fonction predict. Exemple, prévisions jusqu’à l’horizon h
:
h <- 12
p <- predict(xlisse, [Link]=h)
HoltWinters retourne une liste d’objets de class "HoltWinters" aves les noms
des composants suivants …tted …tted time series with level, trend and
seasonal components.
x la série originale.
alpha paramètre de lissage
beta paramètre de lissage.
gamma paramètre de lissage.
coe¢ cients c’est un vecteur de composantes a, b et s, coe¢ cients de la
tendance et la saisonnalité
seasonal la nature de la sésonnalité
SSE la somme des carrés des erreurs
Exemples
1)
x1=c(52, 50 ,54, 55, 58, 57, 60, 61, 64, 62, 64, 65)
x1=c(25, 29 ,24, 21, 26, 23, 27, 25, 21, 24, 26, 29,25)
x2=ts(x1)
ll=HoltWinters(x2,alpha=0.4,beta=F,gamma=F)
ll
X11()
1
2
plot( …tted(liss1))
K=…tted(liss1)[,1]
K
X11()
plot(K)
p1=predict(liss1,[Link]=12)
p1
X11()
plot(p1)
X11()
x_p <- ts(c(x1,p1))
x_p
X11()
plot(x_p,xlab="Lissage et prévision par lissage exponentiel simple")
lines(K,col="red")
lines(p1,col="green")
—————————————————————————
2)
x2=c(52, 50 ,54, 55, 58, 57, 60, 61, 64, 62, 64, 65)
x2=ts(x1, start=1930, frequency=12)
liss2=HoltWinters(x2,alpha=0.16,beta=0.7,gamma=F)
liss2
K=…tted(liss2)[,1]
plot( liss2)
p1=predict(liss2,[Link]=30)
plot(p1)
x_p <- ts(c(K,p1), start=1930, frequency=12)
plot(x_p, col="red",xlab="Lissage et prévision par lissage exponentiel double
de la série X(t)", type="o",col="black")
abline(v=1934+10/12,col=4)
———————————————————————————————
3)
## Seasonal Holt-Winters
(m <- HoltWinters(co2))
plot(m)
plot(…tted(m))
(m <- HoltWinters(AirPassengers, seasonal = "mult"))
plot(m)
## Non-Seasonal Holt-Winters
x <- uspop + rnorm(uspop, sd = 5)
m <- HoltWinters(x, gamma = FALSE)
plot(m)
## Exponential Smoothing
m2 <- HoltWinters(x, gamma = FALSE, beta = FALSE)
lines(…tted(m2)[,1], col = 3)
#}
————————————————————————————-
4)
3
Réccupérer le …chier tra…c et exécuter les codes suivants
# prevision par lissage exponentiel
f=…[Link]()
tra…c=scan(f)
tra…c
length(tra…c)
longueur <- 204
horizon <- 12
tra…c1=ts(tra…c[1:longueur], start=1949, freq=12)
plot(tra…c1)
yHW <- HoltWinters(tra…c1, seasonal="mul")
X11()
plot(yHW)
plot(…tted(yHW))
K=…tted(yHW)[,1]
p <- predict(yHW, [Link]=horizon)
y <- ts(tra…c, start=1949, frequency=12)
X11()
plot(y)
lines(K,col="red")
lines(p,col="green")
4
TP 2-2
# prevision par lissage exponentiel
Lissage et prévision de données simulées
Simuler les trois séries temporelles suivantes (cf. TP1), de taille 100 :
–X1(t) = "t ,
–X2(t) = 0.5t + 2 "t ,
–X3(t) = 0.5t + "t + 3 cos 3t6
,
où t N(0, 1). Les 70 premières données de chaque série vont être utilisées pour
prédire les 30 dernières.
1. Pour chaque série, e¤ectuer la prévision par lissage exponentiel simple et
double. Tester di¤érentes valeurs du paramètre de lissage (4 à 5 valeurs), et
représenter graphiquement la série ainsi que la prévision. Commenter chaque
résultat, et essayer de déterminer graphiquement le lissage le plus adaptée pour
chaque série.
2. Calculer pour chaque prévision e¤ectuée la somme des carrés des erreurs, et
selectionner le meilleur modèle à l’aide de cette quantité.
3. Tester maintenant le lissage exponentiel de Holt-Winters avec composante
saisonnière additive puis multiplicative.
4. Les prédictions obtenues sont-elles meilleures ?
Rq : la commande par(mfrow=c(n,p)) permet d’a¢ cher n pgraphiquesurlammepage:
2 Lissage et prévision de la concentration en co2
Le …chier de données co2 contenu dans R contient les concentrations en CO2 à
proximité du volcan Mauna Loa (Hawaï) de 1959 à 1997.
Après avoir représenté graphiquement ces données, quel modèle de lissage ex-
ponentiel vous semble le mieux approprié ?
A…n de valider ce modèle, tester la prédiction des données de 1990 à 1997 en
utilisant celles de 1959 à 1989. Si cela vous semble graphiquement correct, utilisez
cette méthode pour prédire les concentrations en co2 de 1997 à 2007. Sinon, tester
d’autres méthodes de lissage exponentiel.
3 Lissage et prévision du CAC40
Récupérer le …chier contenant les valeurs de cloture journalière du CAC40 de
1991 à 1998 (données R EuStockMarkets).
Essayer de prédire par lissage exponentiel les valeurs de cloture de 1998 en
utilisant les valeurs de cloture de 1991 à 1997.
4. Créer une fonction qui peut faire un lissage exponentiel simple