TP3 : lissage exponentiel
L’objectif de ce TP est de comprendre l’utilisation de la fonction ets() du
package forecast pour estimer les paramètres d’un modèle de lissage exponentiel.
Nous illustrerons son fonctionnement sur les données USAccDeaths donnant le
nombre mensuel de décès accidentels aux Etats-Unis entre 1973 et 1978.
library("forecast")
help(ets)
help("USAccDeaths")
Observation et pré-traitement des
données
Nous commençons par tracer les données :
plot(USAccDeaths)
monthplot(USAccDeaths)
Les tracés du chronogramme et du diagramme par mois montrent un motif
saisonnier global avec une tendance à l’augmentation du nombre de décès entre
février et juillet, suivie d’une baisse jusqu’en septembre.
Nous allons tester différentes méthodes de lissage exponentiel. Pour évaluer leurs
performances prédictives, nous allons estimer les paramètres du modèle sur la série
allant de janvier 1973 jusqu’à décembre 1977 et garder les observations de l’année
1978 pour les comparer avec les prévisions.
USAccDeaths.7377 <- window(USAccDeaths,start=1973,end=c(1977,12))
USAccDeaths.78 <- window(USAccDeaths,start=1978)
Lissage exponentiel simple
Nous commençons par le lissage exponentiel simple. La commande estime les
paramètres du modèle de lissage exponentiel simple avec erreur additive
fitLES <- ets(USAccDeaths.7377,model="ANN")
estime les paramètres du modèle de lissage exponentiel simple avec erreur additive.
La commande
summary(fitLES)
## ETS(A,N,N)
##
## Call:
## ets(y = USAccDeaths.7377, model = "ANN")
##
## Smoothing parameters:
## alpha = 0.9999
##
## Initial states:
## l = 9771.3144
##
## sigma: 731.3451
##
## AIC AICc BIC
## 1043.047 1043.475 1049.330
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -16.25775 731.3451 641.5581 -0.5246159 7.359666 1.331897
## ACF1
## Training set 0.03409478
nous donne une estimation par maximum de vraisemblance des paramètres du
modèle (αα, ℓ1ℓ1 et σσ), les valeurs des critères AIC, AICc et BIC ainsi que
différentes mesures d’erreurs.
Notons et:=Xt−X^t|t−1et:=Xt−X^t|t−1 le résidus d’estimation. Si nous
observons X1,...,XnX1,...,Xn, nous avons :
l’erreur moyenne :
ME=1n∑t=1net;ME=1n∑t=1net;
l’erreur quadratique moyenne :
RMSE=1n∑t=1ne2t−−−−−−−√,RMSE=1n∑t=1net2,
l’erreur absolue moyenne :
MAE=1n∑t=1n|et|,MAE=1n∑t=1n|et|,
l’erreur en pourcentage moyenne :
MPE=1001n∑t=1netXtMPE=1001n∑t=1netXt
l’erreur relative moyenne
MAPE=1001n∑t=1n|et||Xt|MAPE=1001n∑t=1n|et||Xt|
erreur moyenne normalisée
MASE=n−1n∑nt=1et∑nu=2|Xu−Xu−1|MASE=n−1n∑t=1net∑u=2n|
Xu−Xu−1|
autocorrélation des erreurs à l’horizon 1 (ACF1).
La fonction forecast() permet de prédire à l’aide du modèle généré par la
fonction ets().
predLES <- forecast(fitLES,h=12)
plot(predLES)
points(USAccDeaths.78,type='l',col='darkgreen',lwd=2)
legend('top',c("Valeurs
observées","Prédictions"),col=c("darkgreen","blue"),lty=rep(1,2),lwd =
rep(2,2))
Nous remarquons que le modèle est trop basique dans notre cas pour prédire à
l’horizon 12 et que l’intervalle de confiance à 80%, bien que très large, ne contient
pas les vraies valeurs de la série.
Lissage exponentiel de Holt
(double)
fitLED <- ets(USAccDeaths.7377,model="AAN")
summary(fitLED)
## ETS(A,A,N)
##
## Call:
## ets(y = USAccDeaths.7377, model = "AAN")
##
## Smoothing parameters:
## alpha = 0.9841
## beta = 1e-04
##
## Initial states:
## l = 8554.9205
## b = 9.7804
##
## sigma: 727.1569
##
## AIC AICc BIC
## 1046.358 1047.469 1056.829
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -5.986894 727.1569 635.8686 -0.4200186 7.300841 1.320085
## ACF1
## Training set 0.01683508
predLED <- forecast(fitLED,h=12)
plot(predLED)
points(USAccDeaths.78,type='l',col='darkgreen',lwd=2)
legend('top',c("Valeurs
observées","Prédictions"),col=c("darkgreen","blue"),lty=rep(1,2),lwd =
rep(2,2))
Le modèle étant plus général, l’erreur moyenne est nécessairement inférieure mais
cette méthode ne semble pas préférable à la précédente, le paramètre ββ estimé est
très petit, l’AIC, l’AICc et le BIC sont plus grands et l’erreur moyenne relative est à
peu près du même ordre.