alors que j'entre dans la prévision avec des modèles ARIMA, j'essaie de comprendre comment je peux améliorer une prévision basée sur ARIMA en fonction de la saisonnalité et de la dérive.
Mes données sont les séries chronologiques suivantes (sur 3 ans, avec une tendance claire à la hausse et une saisonnalité visible, ce qui ne semble pas être soutenu par l'autocorrélation aux décalages 12, 24, 36 ??).
> bal2sum3years.ts
Jan Feb Mar Apr May Jun Jul Aug
2010 2540346 2139440 2218652 2176167 2287778 1861061 2000102 2560729
2011 3119573 2704986 2594432 2362869 2509506 2434504 2680088 2689888
2012 3619060 3204588 2800260 2973428 2737696 2744716 3043868 2867416
Sep Oct Nov Dec
2010 2232261 2394644 2468479 2816287
2011 2480940 2699780 2760268 3206372
2012 2951516 3119176 3032960 3738256
Le modèle proposé par auto.arima(bal2sum3years.ts)
m'a donné le modèle suivant:
Series: bal2sum3years.ts
ARIMA(0,0,0)(0,1,0)[12] with drift
Coefficients:
drift
31725.567
s.e. 2651.693
sigma^2 estimated as 2.43e+10: log likelihood=-321.02
AIC=646.04 AICc=646.61 BIC=648.39
Cependant, le acf(bal2sum3years.ts,max.lag=35)
ne montre pas de coefficients acf supérieurs à 0,3. La saisonnalité des données est cependant assez évidente - pic au début de chaque année. Voici à quoi ressemble la série sur le graphique:
La prévision utilisant fit=Arima(bal2sum3years.ts,seasonal=list(order=c(0,1,0),period=12),include.drift=TRUE)
, appelée par fonction forecast(fit)
, se traduit par des moyennes des 12 prochains mois égales aux 12 derniers mois des données plus constante. Cela peut être vu en appelant plot(forecast(fit))
,
J'ai également vérifié les résidus, qui ne sont pas autocorrélés mais dont la moyenne est positive (non nulle).
L'ajustement ne modélise pas précisément la série temporelle d'origine, à mon avis (bleu la série temporelle d'origine, le rouge est le fitted(fit)
:
La question est: le modèle est-il incorrect? Suis-je en train de manquer quelque chose? Comment puis-je améliorer le modèle? Il semble que le modèle prenne littéralement les 12 derniers mois et ajoute une constante pour atteindre les 12 prochains mois.
Je suis un débutant relatif dans les modèles de prévision de séries chronologiques et les statistiques.
Réponses:
D'après l'apparence de vos données, après la différenciation saisonnière, il se peut fort bien qu'il n'y ait plus de saisonnalité substantielle. Ce pic au début de chaque année, et le modèle suivant tout au long de l'année est assez bien repris par un modèleI[12] ; le modèle a incorporé une "saisonnalité évidente".
Oui, en effet, le modèle proposé est "This June = Last June + constant + error", et de même pour les autres mois.
Qu'est-ce qui ne va pas exactement? Cela semble être une excellente description de vos données.
Vous trouverez peut-être une décomposition de séries chronologiques plus intuitive et plus facile à expliquer, peut-être même quelque chose basé sur un modèle structurel de base - un modèle avec saisonnalité - mais cela n'implique pas nécessairement un modèle qui fonctionne mieux que celui que vous avez. Néanmoins, une ou plusieurs des techniques de décomposition standard peuvent valoir la peine d'être essayées - il y a beaucoup à dire pour un modèle que vous comprenez bien.
la source
Je crois que notre problème est que nous passons directement au modèle ARIMA sans essayer les modèles traditionnels. pour cette raison, vous pouvez constater que le modèle ne donne pas les résultats nécessaires. Dans votre cas, j'ai testé vos données, j'ai constaté qu'il y a une saisonnalité tous les 12 mois qui est claire pour vous, mais aussi j'ai trouvé qu'une moyenne mobile simple de 3 termes Désaisonnalisation: Multiplicative est le meilleur modèle. À mon avis, nous devons essayer les algorithmes de prévision traditionnels avant de passer à une technique avancée.
la source