So passen Sie ein Modell für eine Zeitreihe an, die Ausreißer enthält

9

Ich habe das ARIMA (5,1,2) -Modell mit der auto.arima()Funktion in R angepasst und anhand der Reihenfolge können wir sagen, dass dies kein bestes Modell für die Prognose ist. Wenn in der Datenreihe Ausreißer vorhanden sind, wie kann ein Modell an solche Daten angepasst werden?

Anthony
quelle
Haben Sie Daten / Theorien darüber, welche Punkte Ausreißer sind? Sie können nicht einfach davon ausgehen, dass "weit entfernte" Punkte Ausreißer sind. Wenn Sie jedoch wissen, dass an einem bestimmten Datum etwas Besonderes passiert ist und dieses Ereignis Ihre Daten beeinflusst, können Sie Ihrem Modell für dieses Datum eine Indikatorvariable hinzufügen. Siehe den Kommentar von IrishStat unten.
Wayne
Wenn in diesem Zeitraum 1 oder 2 Wochen etwas Besonderes passiert ist und sich auf das Modell auswirkt, ist das Modell möglicherweise falsch. Da es keinen anderen Grund wie saisonale Schwankungen gibt, habe ich angenommen, dass Ausreißer die Ursache für das Modell sind.
Anthony

Antworten:

7

Michael Chernick weist Sie in die richtige Richtung. Ich würde auch die Arbeit von Ruey Tsay betrachten, die zu diesem Wissensbestand beiträgt. Sehen Sie hier mehr .

Sie können nicht mit den heutigen automatisierten Computeralgorithmen konkurrieren. Sie suchen nach vielen Möglichkeiten, sich den Zeitreihen zu nähern, die Sie nicht berücksichtigt und oft in keinem Papier oder Buch dokumentiert haben. Wenn man fragt, wie eine ANOVA durchgeführt werden soll, kann beim Vergleich mit verschiedenen Algorithmen eine genaue Antwort erwartet werden. Wenn man die Frage stellt, wie ich Mustererkennung mache, sind viele Antworten möglich, da Heuristiken beteiligt sind. Ihre Frage betrifft die Verwendung von Heuristiken.

Der beste Weg, um ein ARIMA-Modell anzupassen, wenn Ausreißer in den Daten vorhanden sind, besteht darin, mögliche Naturzustände zu bewerten und den Ansatz auszuwählen, der für einen bestimmten Datensatz als optimal erachtet wird. Ein möglicher Naturzustand ist, dass der ARIMA-Prozess die Hauptquelle für erklärte Variationen ist. In diesem Fall würde man den ARIMA-Prozess über die acf / pacf-Funktion "vorläufig identifizieren" und dann die Residuen auf mögliche Ausreißer untersuchen. Ausreißer können Impulse sein, dh einmalige Ereignisse ODER saisonale Impulse, die durch systematische Ausreißer mit einer bestimmten Häufigkeit angezeigt werden (z. B. 12 für monatliche Daten). Eine dritte Art von Ausreißer besteht darin, dass man einen zusammenhängenden Satz von Impulsen hat, die jeweils das gleiche Vorzeichen und die gleiche Größe haben. Dies wird als Schritt- oder Pegelverschiebung bezeichnet. Nachdem die Residuen aus dem vorläufigen ARIMA-Prozess untersucht wurden, kann die empirisch identifizierte deterministische Struktur vorläufig hinzugefügt werden, um ein vorläufiges kombiniertes Modell zu erstellen. Wenn die primäre Variationsquelle nicht eine der vier Arten oder "Ausreißer" ist, ist es besser, sie von Anfang an (zuerst) zu identifizieren und dann die Residuen aus diesem "Regressionsmodell" zur Identifizierung der stochastischen (ARIMA) Struktur zu verwenden . Jetzt werden diese beiden alternativen Strategien etwas komplizierter, wenn ein "Problem" vorliegt, bei dem sich die ARIMA-Parameter im Laufe der Zeit ändern oder sich die Fehlervarianz im Laufe der Zeit aufgrund einer Reihe möglicher Ursachen ändert, möglicherweise aufgrund der Notwendigkeit gewichteter kleinster Quadrate oder einer Leistungstransformation wie Protokolle / Wechselwirkungen usw. Eine weitere Komplikation / Möglichkeit besteht darin, wie und wann der Beitrag von vom Benutzer vorgeschlagenen Prädiktorserien zur Bildung eines nahtlos integrierten Modells zu bilden ist, das Speicher, Kausale und empirisch identifizierte Dummy-Serien enthält. Dieses Problem wird weiter verschärft, wenn Trendreihen am besten mit Indikatorreihen der Form modelliert werden0,0,0,0,1,2,3,4,... oder und Kombinationen von Pegelverschiebungsreihen wie . Vielleicht möchten Sie versuchen, solche Prozeduren in R zu schreiben, aber das Leben ist kurz. Ich würde mich freuen, Ihr Problem tatsächlich zu lösen und in diesem Fall zu demonstrieren, wie das Verfahren funktioniert. Bitte senden Sie die Daten oder senden Sie sie an [email protected]1,2,3,4,5,...n0,0,0,0,0,0,1,1,1,1,1


Zusätzlicher Kommentar nach Erhalt / Analyse der Daten / Tagesdaten für einen Wechselkurs / 18 = 765 Werte ab dem 1.1.2007

Geben Sie hier die Bildbeschreibung ein

Die Daten hatten eine ACF von:

Geben Sie hier die Bildbeschreibung ein

Bei der Identifizierung eines Arma-Modells der Form und einer Anzahl von Ausreißern zeigt der ACF der Residuen Zufälligkeit an, da die ACF-Werte sehr klein sind. AUTOBOX hat eine Reihe von Ausreißern identifiziert:(1,1,0)(0,0,0)

Geben Sie hier die Bildbeschreibung ein

Das endgültige Modell:

Geben Sie hier die Bildbeschreibung ein

schloss die Notwendigkeit einer Varianzstabilisierungs-Augmentation a la TSAY ein, bei der Varianzänderungen in den Residuen identifiziert und einbezogen wurden. Das Problem, das Sie bei Ihrem automatischen Lauf hatten, war, dass das von Ihnen verwendete Verfahren wie ein Buchhalter den Daten glaubt, anstatt sie über die Interventionserkennung (auch bekannt als Ausreißererkennung) herauszufordern. Ich habe eine vollständige Analyse geschrieben hier .

Geben Sie hier die Bildbeschreibung ein

IrishStat
quelle
@IrishStat: Können Sie in Zukunft die Formatierungsoptionen verwenden? (Der richtige Schlüssel zum Einfügen von Links ist Strg-L, nicht Strg-C).
user603
@ user603 Ich habe einfach die Option zum Hinzufügen eines Diagramms verwendet. Ich weiß nicht, was du mit Strg-L oder Strg-C meinst. Vielleicht könnten Sie mir helfen, bitte kontaktieren Sie mich unter dave / @ / autobox.com und vielleicht können Sie mir das erklären.
IrishStat
@IrishStat: Schau mal hier .
user603
@ user603 OK, aber ich weiß immer noch nicht, was du mit Strg-L und Strg-C meinst. Ich habe die Bildübertragung verwendet, bei der ich ein Bild einfügen kann. Wenn ich cntrl-g eingebe, wird nur ein leerer Popup-Bildschirm angezeigt.
IrishStat
@IrishStat: Es ist okay - die Methode des Links ist sogar besser als Strg-L :). PS: Mein Ziel war es, Ihnen zu helfen, Ihre Antworten / Kommentare kosmetisch ansprechender zu gestalten, indem Sie diese langen Links ausblenden, die den Textfluss durchbrechen. Der Link erklärt Ihnen, wie Sie dies erreichen können.
user603
6

Es gibt (noch) kein bereites robustes Gegenstück zur Arima-Funktion in R ; sollte man erscheinen, wird es aufgeführt werden hier . Möglicherweise besteht eine Alternative darin, die Beobachtungen, die in Bezug auf eine einfache univariate Ausreißererkennungsregel abweichen, herabzusetzen, aber ich sehe auch keine Bereitschaft, Pakete zum Ausführen einer gewichteten ARMA-Regression zu verwenden. Eine andere mögliche Alternative wäre dann, die Randpunkte zu Winsorisieren:

#parameters
para     <- list(ar=c(0.6,-0.48), ma=c(-0.22,0.24))
#original series
y1 <- y0 <- arima.sim(n=100, para, sd=sqrt(0.1796)) 
#outliers
out      <- sample(1:100, 20)               
#contaminated series
y1[out]  <- rnorm(20, 10, 1)                
plot( y1, type="l")
lines(y0, col="red")

Beispiel für zufällige Kontamination

#winsorized series
y2      <- rep(NA, length(y1))
a1      <- (y1-median(y1)) / mad(y1)
a2      <- which(abs(a1)>3)
y2[-a2] <- y1[-a2]
for(i in 2:length(y2)){
   if(is.na(y2[i])){ y2[i] <- y2[i-1] }
}       

gereinigte Serie

user603
quelle
Ein regelbasiertes Verfahren funktioniert für diese Serie, nachdem Zeitreihendaten fast 42 Jahre lang betrachtet wurden. Dies funktioniert möglicherweise im Allgemeinen nicht. Betrachten Sie eine einfache Serie mit einem autoprojektiven Prozess, z. B. 1,9,1,9,1,9,5,9. 1,9,1,9 wobei der 7. Wert außergewöhnlich ist ODER im Allgemeinen eine Reihe mit einer starken autoprojektiven Struktur einer unbekannten Form ODER eine Reihe mit 1,2,1,1,1,2,1,1,1, 2,1,20,1,2,1,2,1,1,1,2,1,2,2,19,2,1,1,2,1,2,1,1,2,2, 2,21 eine monatliche Serie, die keine Impulse hat, ABER eine nicht spezifizierte SAISONAL DUMMY. Das Erkennen von 12,24 und 36 als SCHLECHT würde das Baby mit dem Badewasser wegwerfen.
IrishStat
Alles, was Sie sagen, ist wahr, dh Sie haben ein Pflaster bereitgestellt, das bei der Wunde helfen würde, wenn 1) die Serie stationär wäre, was unter anderem keine Pegelverschiebungen, keine Trends usw., keine ARIMA-Struktur voraussetzt; und 2) die Serie muss nicht saisonabhängig sein oder wurde zuvor de-saisonalisiert; . Ich habe die Erfahrung gemacht, dass solche Annahmen kaum oder gar nicht zutreffen und Benutzer Ihre Vorbehalte ignorieren, wenn sie versuchen, mit Zeitreihen zu ringen, die "Unvollkommenheiten" aufweisen. Meine Kommentare hier sind nicht argumentativ, sondern
aufschlussreich
@IrishStat das OP hat seine Frage aktualisiert und festgestellt, dass es keine Saisonalität gibt.
user603
Bist du Christophe?
IrishStat
2

Es gibt eine umfangreiche Literatur zu robusten Zeitreihenmodellen. Martin und Yohai gehören zu den Hauptverantwortlichen. Ihre Arbeit reicht bis in die 1980er Jahre zurück. Ich habe selbst an der Erkennung von Ausreißern in Zeitreihen gearbeitet, aber Martin war wirklich einer der vielen Mitwirkenden sowohl bei der Erkennung von Ausreißern als auch bei der Parameterschätzung bei Vorhandensein von Ausreißern oder Residuen mit starkem Schwanz in Zeitreihen.

Michael R. Chernick
quelle
Welche Software wird für robuste Prognosen verwendet? Ist es für univariate Serien geeignet?
Anthony
@ Anthony Das ist eine sehr gute Frage. Ich habe keine robuste Zeitreihenmodellierung durchgeführt. Dug Martin gründete die Firma Insightful (sie hatten tatsächlich mehrere Namen), die SPlus vermarktete. Ich bin mir ziemlich sicher, dass er robuste Methide in die SPlus-Software aufgenommen hat. Es gibt wahrscheinlich jetzt eine Version in R. Ich werde es überprüfen. Hier ist ein Wikipedia-Artikel mit der Geschichte von SPlus. en.wikipedia.org/wiki/S-PLUS
Michael R. Chernick
@Anthony Hier ist eine Quelle von Rob Hyndman zu den verfügbaren Informationen zur Zeitreihenanalyse in R. Es enthält Informationen zu CRAN und deckt eine Vielzahl von Methoden ab, einschließlich einer robusten Filterung. cran.r-project.org/web/views/TimeSeries.html
Michael R. Chernick
2

Ist der Zweck Ihres Modells, den Verlauf vorherzusagen oder zu analysieren? Wenn dies nicht für Prognosen gedacht ist und Sie wissen, dass dies die Ausreißer sind, fügen Sie einfach die Dummy-Variable hinzu, die in diesen Daten 1 und in anderen Daten 0 ist. Auf diese Weise kümmern sich die Dummy-Koeffizienten um die Ausreißer, und Sie können die anderen Koeffizienten im Modell interpretieren.

Wenn dies für Prognosen gedacht ist, müssen Sie sich zwei Fragen stellen: Werden diese Ausreißer erneut auftreten? Wenn ja, muss ich sie berücksichtigen?

Nehmen wir zum Beispiel an, Ihre Datenreihen haben Ausreißer, als die Brüder Lehman ausfielen. Es ist ein Ereignis, das Sie natürlich nicht vorhersagen können, aber Sie können es nicht einfach ignorieren, da so etwas in Zukunft passieren wird. Wenn Sie den Dummy für Ausreißer einsetzen, entfernen Sie effektiv die Unsicherheit dieses Ereignisses aus der Fehlervarianz. Ihre Prognose wird das Endrisiko unterschätzen - vielleicht keine gute Sache für das Risikomanagement. Wenn Sie jedoch die Basisprognose des Umsatzes erstellen möchten, funktioniert der Dummy, da Sie nicht am Schwanz interessiert sind, sondern an den wahrscheinlichsten Szenarien - Sie müssen also das unvorhersehbare Ereignis für nicht berücksichtigen dieser Zweck.

Daher wirkt sich der Zweck Ihres Modells auf den Umgang mit Ausreißern aus.

Aksakal
quelle