J'ai essayé d'apprendre et d'appliquer des modèles ARIMA. J'ai lu un excellent texte sur ARIMA de Pankratz - Prévision avec boîte univariée - Modèles Jenkins: concepts et cas . Dans le texte, l'auteur insiste particulièrement sur le principe de parcimonie dans le choix des modèles ARIMA.
J'ai commencé à jouer avec auto.arima()
fonction R package prévisions . Voici ce que j'ai fait, j'ai simulé ARIMA puis appliqué auto.arima()
. Voici 2 exemples. Comme vous pouvez le voir dans les deux exemples, auto.arima()
nous avons clairement identifié un modèle que beaucoup considéreraient comme non parcimonieux. Surtout dans l'exemple 2, où auto.arima()
ARIMA identifié (3,0,3) alors qu'en réalité ARIMA (1,0,1) serait suffisant et parcimonieux.
Voici mes questions. J'apprécierais toutes suggestions et recommandations.
- Existe-t-il des indications sur le moment d'utiliser / modifier les modèles identifiés à l'aide d'algorithmes automatiques tels que
auto.arima()
? - Y a-t-il des pièges à utiliser l'AIC (qui est ce que je pense
auto.arima()
utiliser) pour identifier les modèles? - Un algorithme automatique construit est-il parcimonieux?
Au fait, je l'ai utilisé auto.arima()
à titre d'exemple. Cela s'appliquerait à tout algorithme automatique.
Voici l'exemple # 1:
set.seed(182)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)
auto.arima(y)
qa <- arima(y,order=c(1,0,1))
qa
Voici les résultats de auto.arima()
. Veuillez noter que tous les coefficients sont insignifiants. c'est-à-dire que la valeur <2.
ARIMA(1,0,2) with non-zero mean
Coefficients:
ar1 ma1 ma2 intercept
0.5395 0.2109 -0.3385 19.9850
s.e. 0.4062 0.4160 0.3049 0.0878
sigma^2 estimated as 1.076: log likelihood=-728.14
AIC=1466.28 AICc=1466.41 BIC=1487.36
Voici les résultats de l'exécution régulière arima()
avec la commande ARIMA (1,0,1)
Series: y
ARIMA(1,0,1) with non-zero mean
Coefficients:
ar1 ma1 intercept
0.2398 0.6478 20.0323
s.e. 0.0531 0.0376 0.1002
sigma^2 estimated as 1.071: log likelihood=-727.1
AIC=1462.2 AICc=1462.28 BIC=1479.06
Exemple 2:
set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)
auto.arima(y)
qa <- arima(y,order=c(1,0,1))
qa
Voici les résultats de auto.arima()
:
ARIMA(3,0,3) with non-zero mean
Coefficients:
ar1 ar2 ar3 ma1 ma2 ma3 intercept
0.7541 -1.0606 0.2072 0.1391 0.5912 0.5491 20.0326
s.e. 0.0811 0.0666 0.0647 0.0725 0.0598 0.0636 0.0939
sigma^2 estimated as 1.027: log likelihood=-716.84
AIC=1449.67 AICc=1449.97 BIC=1483.39
Voici les résultats réguliers arima()
avec la commande ARIMA (1,0,1)
Series: y
ARIMA(1,0,1) with non-zero mean
Coefficients:
ar1 ma1 intercept
0.2398 0.6478 20.0323
s.e. 0.0531 0.0376 0.1002
sigma^2 estimated as 1.071: log likelihood=-727.1
AIC=1462.2 AICc=1462.28 BIC=1479.06