Interpretation und Durchführung von Prognosen mit dem tsoutliers-Paket und auto.arima

9

Ich habe monatliche Daten von 1993 bis 2015 und möchte diese Daten prognostizieren. Ich habe das tsoutliers-Paket verwendet, um die Ausreißer zu erkennen, aber ich weiß nicht, wie ich mit meinen Daten weiter prognostizieren soll.

Das ist mein Code:

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

Dies ist meine Ausgabe vom tsoutliers-Paket

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

Das ist meine Handlung

Ich habe auch diese Warnmeldungen.

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

Zweifel:

  1. Wenn ich mich nicht irre, entfernt das tsoutliers-Paket die erkannten Ausreißer und gibt uns durch die Verwendung des Datensatzes mit entfernten Ausreißern das beste für den Datensatz geeignete Arima-Modell. Ist es korrekt?
  2. Der Datensatz für die Anpassungsserie wird aufgrund der Entfernung der Pegelverschiebung usw. Um ein Vielfaches nach unten verschoben. Bedeutet dies nicht, dass die Ausgabe der Prognose sehr ungenau ist, wenn die Prognose für die angepasste Serie durchgeführt wird, da die neueren Daten bereits mehr als 12 sind, während die angepassten Daten sie auf etwa 7-8 verschieben.
  3. Was bedeutet Warnmeldung 4 und 5? Bedeutet dies, dass auto.arima mit der angepassten Serie nicht ausgeführt werden kann?
  4. Was bedeutet [12] in ARIMA (0,1,0) (0,0,1) [12]? Ist es nur meine Häufigkeit / Periodizität meines Datensatzes, die ich auf monatlich eingestellt habe? Und bedeutet das auch, dass meine Datenreihen auch saisonabhängig sind?
  5. Wie erkenne ich die Saisonalität in meinem Datensatz? Aus der Visualisierung des Zeitreihendiagramms kann ich keinen offensichtlichen Trend erkennen. Wenn ich die Zerlegungsfunktion verwende, wird davon ausgegangen, dass es einen saisonalen Trend gibt. Glaube ich also nur, was die Tsoutliers mir sagen, wo es saisonale Trends gibt, da es MA der Ordnung 1 gibt?
  6. Wie mache ich meine Prognosen mit diesen Daten weiter, nachdem ich diese Ausreißer identifiziert habe?
  7. Wie können diese Ausreißer in andere Prognosemodelle integriert werden - Exponential Smoothing, ARIMA, Strutural Model, Random Walk, Theta? Ich bin sicher, dass ich die Ausreißer nicht entfernen kann, da es zu einer Pegelverschiebung kommt. Wenn ich nur angepasste Seriendaten nehme, sind die Werte zu klein. Was kann ich also tun?

Muss ich diese Ausreißer als Regressor in der auto.arima für die Prognose hinzufügen? Wie funktioniert das dann?

Ted
quelle

Antworten:

5

Diese Kommentare sind zu lang ... also eine "ANTWORT"

  1. Sie irren sich, dass ARIMA nicht angepasst und dann identifiziert wird (wie es AUTOBOX tut). Es wird vermutlich keine Interventionsanpassung angenommen und eilt dann schnell, um ein ARIMA-Modell zu identifizieren, das möglicherweise von der Nichtbehandlung von Anomalien betroffen ist. Oft muss man sowohl benutzerdefinierte kausale Reihen als auch / oder nicht spezifizierte deterministische Strukturen (Ausreißer / Pegelverschiebungen, saisonale Impulse, lokale Zeittrends) anpassen, bevor man die ARIMA-Struktur identifiziert. Sehen Sie sich dieses Beispiel einer schlechten Dignose an , die den Fehler macht, die Originalserie unnötig zu differenzieren, während der wahre / korrekte Naturzustand keine Differenzierung benötigt. Nichtstationarität bedeutet nicht notwendigerweise die Notwendigkeit einer Differenzierung, kann jedoch häufig darauf hindeuten, dass die Anpassung für eine Änderung des Niveaus / Mittelwerts nicht mehr von Bedeutung ist

  2. Die korrekte Prognose erfolgt immer aus der Originalserie, daher sollte die Prognose angesichts der Historie glaubwürdig sein.

  3. Ich habe keine Ahnung, da ich dieses Verfahren nicht aktiv verwende. Ich habe es Ihnen empfohlen, weil Sie nach kostenlosen Lösungen gefragt haben, NICHT weil ich es für gut oder ausreichend hielt, da die ARIMA-Modellierung ein iterativer (mehrstufiger) Selbstprüfungsprozess ist.

  4. Das Modell geht davon aus, dass die Daten eine ma (12) saisonale Komponente haben, dies könnte jedoch einfach die Notwendigkeit eines saisonalen Impulses widerspiegeln.

  5. Das Konzept eines saisonalen Trends ist bestenfalls vage.

  6. Meine Antwort wäre zu offensichtlich und selbstlos

IrishStat
quelle
1
tu sehr viel @ricardo
IrishStat
4

Das Paket 'tsoutliers' implementiert das von Chen und Liu (1993) [1] beschriebene Verfahren . Eine Beschreibung des Pakets und der Vorgehensweise finden Sie ebenfalls in diesem Dokument .

Kurz gesagt besteht das Verfahren aus zwei Hauptphasen:

  1. Erkennung von Ausreißern anhand eines ausgewählten ARIMA-Modells.
  2. Wählen Sie das ARIMA-Modell einschließlich der im vorherigen Schritt erkannten Ausreißer aus und / oder passen Sie es an, und entfernen Sie die Ausreißer, die für die neue Anpassung nicht von Bedeutung sind.

Die Reihe wird dann für die erkannten Ausreißer angepasst und die Stufen (1) und (2) werden wiederholt, bis keine Ausreißer mehr erkannt werden oder bis eine maximale Anzahl von Iterationen erreicht ist.


Die erste Stufe (Erkennung von Ausreißern) ist ebenfalls ein iterativer Prozess. Am Ende jeder Iteration werden die Residuen aus dem ARIMA-Modell für die in dieser Phase erkannten Ausreißer angepasst. Der Vorgang wird wiederholt, bis keine Ausreißer mehr gefunden werden oder bis eine maximale Anzahl von Iterationen erreicht ist (standardmäßig 4 Iterationen). Die ersten drei Warnungen, die Sie erhalten, beziehen sich auf diese innere Schleife, dh die Stufe wird nach vier Iterationen beendet.

Sie können diese maximale Anzahl von Iterationen durch das Argument maxit.iloopin function erhöhen tso. Es ist ratsam, in der ersten Stufe keine hohe Anzahl von Iterationen festzulegen und den Prozess in die zweite Stufe übergehen zu lassen, in der das ARIMA-Modell neu angepasst oder erneut ausgewählt wird.


Die Warnungen 4 und 5 sind auf den Prozess im Zusammenhang das ARIMA - Modell von Fitting und das Modell gewählt, jeweils für Funktionen stats::arimaund forecast:auto.arima. Der Algorithmus, der die Wahrscheinlichkeitsfunktion maximiert, konvergiert nicht immer zu einer Lösung. Einige Details zu diesen Themen finden Sie beispielsweise in diesem Beitrag und in diesem Beitrag


[1] Chung Chen und Lon-Mu Liu (1993), "Joint Estimation of Model Parameters and Outlier Effects in Time Series", Journal of American Statistical Association , 88 (421), S. 284-297. DOI: 10.1080 / 01621459.1993.10594321 .

javlacalle
quelle
Wie lange dauert es, bis tso () ausgeführt wird?
Anoop Toffy
@AnoopToffy hängt von der Länge der Daten, der Periodizität usw. ab. Für jährliche, monatliche, vierteljährliche Daten, eine Stichprobengröße von etwa 120 Beobachtungen und eine Dynamik, die von einem ARIMA-Modell angemessen erfasst werden kann, wird der Algorithmus höchstens ausgeführt etwa 10 Sekunden (normalerweise viel weniger).
Javlacalle