Comment interpréter et faire des prévisions en utilisant le package tsoutliers et auto.arima

9

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

Ceci est mon intrigue

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:

  1. 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?
  2. 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.
  3. 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?
  4. 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?
  5. 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?
  6. Comment continuer mes prévisions avec ces données après avoir identifié ces valeurs aberrantes?
  7. 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?

Ted
la source

Réponses:

5

Ces commentaires sont trop longs ... donc une "REPONSE"

  1. Vous vous trompez, il ne s'ajuste pas puis identifie ARIMA (comme le fait AUTOBOX), il suppose présumément aucun ajustement d'intervention puis se précipite pour identifier un modèle ARIMA potentiellement impacté par le non-traitement des anomalies. Souvent, il faut ajuster à la fois les séries causales spécifiées par l'utilisateur et / ou la structure déterministe non spécifiée (valeurs aberrantes / changements de niveau, impulsions saisonnières, tendances de l'heure locale) avant d'identifier la structure ARIMA. Voir cet exemple d'une mauvaise dignité qui fait l'erreur de différencier inutilement la série originale tandis que l'état vrai / correct de la nature n'a pas besoin de différenciation. La non-stationnarité n'implique pas nécessairement la nécessité d'une différenciation, mais peut souvent suggérer une dé-signification de l'ajustement pour un changement de niveau / moyenne

  2. Une prévision correcte est toujours effectuée à partir de la série d'origine, donc la prévision doit être crédible compte tenu de l'historique.

  3. Je n'en ai aucune idée car je n'utilise pas activement cette procédure. Je vous l'ai recommandé parce que vous avez demandé des solutions gratuites basées sur r PAS PAS parce que je pensais que c'était bon ou suffisant car la modélisation ARIMA est un processus d'auto-vérification itératif (en plusieurs étapes).

  4. le modèle suggère qu'il pense que les données ont une composante saisonnière ma (12) MAIS cela pourrait simplement refléter le besoin d'une impulsion saisonnière.

  5. le concept de tendance saisonnière est au mieux vague.

  6. Ma réponse serait trop évidente et effacée

IrishStat
la source
1
tu beaucoup @ricardo
IrishStat
4

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:

  1. Détection des valeurs aberrantes sur un modèle ARIMA choisi.
  2. Choisissez et / ou réinstallez le modèle ARIMA, y compris les valeurs aberrantes détectées à l'étape précédente et supprimez les valeurs aberrantes qui ne sont pas significatives dans le nouvel ajustement.

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.iloopen fonction tso. 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::arimaet forecast: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 .

javlacalle
la source
combien de temps il faudra pour exécuter tso ()?
Anoop Toffy
@AnoopToffy cela dépend de la longueur des données, de la périodicité, etc. Pour les données annuelles, mensuelles, trimestrielles, une taille d'échantillon d'environ 120 observations et une dynamique qui peut être raisonnablement capturée par un modèle ARIMA, l'algorithme fonctionnera au plus environ 10 secondes (généralement beaucoup moins).
javlacalle