J'ai des données mensuelles de 1993 à 2015 et j'aimerais faire des prévisions sur ces données. J'ai utilisé le package tsoutliers pour détecter les valeurs aberrantes, mais je ne sais pas comment continuer à prévoir avec mon ensemble de données.
Voici mon code:
product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)
Ceci est ma sortie du paquet tsoutliers
ARIMA(0,1,0)(0,0,1)[12]
Coefficients:
sma1 LS46 LS51 LS61 TC133 LS181 AO183 AO184 LS185 TC186 TC193 TC200
0.1700 0.4316 0.6166 0.5793 -0.5127 0.5422 0.5138 0.9264 3.0762 0.5688 -0.4775 -0.4386
s.e. 0.0768 0.1109 0.1105 0.1106 0.1021 0.1120 0.1119 0.1567 0.1918 0.1037 0.1033 0.1040
LS207 AO237 TC248 AO260 AO266
0.4228 -0.3815 -0.4082 -0.4830 -0.5183
s.e. 0.1129 0.0782 0.1030 0.0801 0.0805
sigma^2 estimated as 0.01258: log likelihood=205.91
AIC=-375.83 AICc=-373.08 BIC=-311.19
Outliers:
type ind time coefhat tstat
1 LS 46 1996:10 0.4316 3.891
2 LS 51 1997:03 0.6166 5.579
3 LS 61 1998:01 0.5793 5.236
4 TC 133 2004:01 -0.5127 -5.019
5 LS 181 2008:01 0.5422 4.841
6 AO 183 2008:03 0.5138 4.592
7 AO 184 2008:04 0.9264 5.911
8 LS 185 2008:05 3.0762 16.038
9 TC 186 2008:06 0.5688 5.483
10 TC 193 2009:01 -0.4775 -4.624
11 TC 200 2009:08 -0.4386 -4.217
12 LS 207 2010:03 0.4228 3.746
13 AO 237 2012:09 -0.3815 -4.877
14 TC 248 2013:08 -0.4082 -3.965
15 AO 260 2014:08 -0.4830 -6.027
16 AO 266 2015:02 -0.5183 -6.442
J'ai également ces messages d'avertissement.
Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval, :
stopped when ‘maxit’ was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval, :
stopped when ‘maxit’ was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval, :
stopped when ‘maxit’ was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78, :
Unable to fit final model using maximum likelihood. AIC value approximated
Les doutes:
- Si je ne me trompe pas, le package tsoutliers supprimera les valeurs aberrantes qu'il détecte et grâce à l'utilisation de l'ensemble de données avec les valeurs aberrantes supprimées, il nous donnera le meilleur modèle arima adapté à l'ensemble de données, est-ce correct?
- Le jeu de données de la série d'ajustements est considérablement réduit en raison de la suppression du décalage de niveau, etc. Cela ne signifie-t-il pas que si la prévision est effectuée sur la série ajustée, la sortie de la prévision sera très inexacte, car les données les plus récentes sont déjà plus de 12, tandis que les données ajustées la décalent vers 7-8.
- Que signifient les messages d'avertissement 4 et 5? Cela signifie-t-il qu'il ne peut pas faire auto.arima en utilisant la série ajustée?
- Que signifie le [12] dans ARIMA (0,1,0) (0,0,1) [12]? Est-ce juste ma fréquence / périodicité de mon jeu de données, que je règle mensuellement? Et cela signifie-t-il également que ma série de données est également saisonnière?
- Comment détecter la saisonnalité dans mon ensemble de données? À partir de la visualisation de l'intrigue des séries chronologiques, je ne vois aucune tendance évidente, et si j'utilise la fonction de décomposition, cela supposera-t-il une tendance saisonnière? Alors, est-ce que je crois simplement ce que les tsoutliers me disent, où il y a une tendance saisonnière, car il y a MA de l'ordre 1?
- Comment continuer mes prévisions avec ces données après avoir identifié ces valeurs aberrantes?
- Comment intégrer ces valeurs aberrantes à d'autres modèles de prévision - lissage exponentiel, ARIMA, modèle strutural, marche aléatoire, thêta? Je suis sûr que je ne peux pas supprimer les valeurs aberrantes car il y a un décalage de niveau, et si je ne prends que des données de série ajustées, les valeurs seront trop petites, alors que dois-je faire?
Dois-je ajouter ces valeurs aberrantes comme régresseur dans le fichier auto.arima pour les prévisions? Comment ça marche alors?
Le paquet «tsoutliers» met en œuvre la procédure décrite par Chen et Liu (1993) [1]. Une description du paquet et de la procédure est également donnée dans ce document .
En bref, la procédure comprend deux étapes principales:
La série est ensuite ajustée pour les valeurs aberrantes détectées et les étapes (1) et (2) sont répétées jusqu'à ce que plus aucune valeur aberrante ne soit détectée ou jusqu'à ce qu'un nombre maximum d'itérations soit atteint.
La première étape (détection des valeurs aberrantes) est également un processus itératif. À la fin de chaque itération, les résidus du modèle ARIMA sont ajustés pour les valeurs aberrantes détectées au cours de cette étape. Le processus est répété jusqu'à ce qu'il n'y ait plus de valeurs aberrantes ou jusqu'à ce qu'un nombre maximum d'itérations soit atteint (par défaut 4 itérations). Les trois premiers avertissements que vous obtenez sont liés à cette boucle interne, c'est-à-dire que la scène se termine après quatre itérations.
Vous pouvez augmenter ce nombre maximal d'itérations via l'argument
maxit.iloop
en fonctiontso
. Il est conseillé de ne pas définir un nombre élevé d'itérations dans la première étape et de laisser le processus passer à la deuxième étape où le modèle ARIMA est réajusté ou choisi à nouveau.Les avertissements 4 et 5 sont liés au processus d'ajustement du modèle ARIMA et ont choisi le modèle, respectivement pour les fonctions
stats::arima
etforecast:auto.arima
. L'algorithme qui maximise la fonction de vraisemblance ne converge pas toujours vers une solution. Vous pouvez trouver quelques détails liés à ces problèmes, par exemple, dans cet article et cet article[1] Chung Chen et Lon-Mu Liu (1993) "Joint Estimation of Model Parameters and Outlier Effects in Time Series", Journal de l'American Statistical Association , 88 (421), pp. 284-297. DOI: 10.1080 / 01621459.1993.10594321 .
la source