Ermitteln von Ausreißern in Zeitreihen (LS / AO / TC) mithilfe des Pakets tsoutliers in R. Wie werden Ausreißer im Gleichungsformat dargestellt?


35

Kommentar: Zunächst möchte ich dem Autor des neuen tsoutliers- Pakets, das Chen und Lius Zeitreihen-Ausreißererkennung implementiert , ein großes Dankeschön aussprechen , das 1993 im Journal of the American Statistical Association in Open Source Software .R

Das Paket erkennt 5 verschiedene Ausreißertypen iterativ in Zeitreihendaten:

  1. Additiver Ausreißer (AO)
  2. Innovationsausreißer (IO)
  3. Level Shift (LS)
  4. Temporäre Änderung (TC)
  5. Seasonal Level Shift (SLS)

Noch großartiger ist, dass dieses Paket auto.arima aus dem Forecast-Paket implementiert, sodass Ausreißer nahtlos erkannt werden können. Das Paket erzeugt auch schöne Diagramme zum besseren Verständnis der Zeitreihendaten.

Hier sind meine Fragen:

Ich habe versucht, einige Beispiele mit diesem Paket auszuführen, und es hat großartig funktioniert. Additive Ausreißer und Pegelverschiebung sind intuitiv. Ich hatte jedoch zwei Fragen in Bezug auf die Übergabe von Ausreißern für vorübergehende Änderungen und innovativen Ausreißern, die ich nicht verstehen kann.

Beispiel für einen Ausreißer für temporäre Änderungen:

Betrachten Sie das folgende Beispiel:

library(tsoutliers)
library(expsmooth)
library(fma)

outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)

Das Programm erkennt zu Recht eine Pegelverschiebung und eine vorübergehende Änderung an der folgenden Stelle.

Outliers:
  type ind time coefhat tstat
1   LS  12 1935   37.14 3.153
2   TC  20 1943   36.38 3.350

Unten ist die Handlung und meine Fragen.

  • Wie schreibe ich die temporäre Änderung in ein Gleichungsformat? (Die Pegelverschiebung kann leicht als binäre Variable geschrieben werden, zu jeder Zeit vor 1935 / Obs 12 ist 0 und zu jeder Zeit nach 1935 und nach 1.)

Die Gleichung für die vorübergehende Änderung in der Packungsbeilage und im Artikel lautet:

L(B)=11δB

wobei 0,7 ist. Ich bemühe mich nur, dies in das obige Beispiel zu übersetzen.δ

  • Meine zweite Frage betrifft
    innovative Ausreißer. In der Praxis bin ich nie auf einen innovativen Ausreißer gestoßen. Jedes numerische Beispiel oder ein Fallbeispiel wäre sehr hilfreich.

Ausreißer

Edit: @Irishstat, die Funktion tsoutliers leistet hervorragende Arbeit bei der Identifizierung von Ausreißern und dem Vorschlag eines geeigneten ARIMA-Modells. Wenn Sie sich den Nil-Datensatz ansehen, sehen Sie unten die Anwendung von auto.arima und dann die Anwendung von tsoutliers (mit Standardeinstellungen, einschließlich auto.arima):

auto.arima(Nile)
Series: Nile 
ARIMA(1,1,1)                    

Coefficients:
         ar1      ma1
      0.2544  -0.8741
s.e.  0.1194   0.0605

sigma^2 estimated as 19769:  log likelihood=-630.63
AIC=1267.25   AICc=1267.51   BIC=1275.04

Nach dem Anwenden der Funktion tsoutliers identifiziert sie einen LS-Ausreißer und einen additiven Ausreißer und empfiehlt eine ARIMA-Bestellung (0,0,0).

nile.outliers <- tso(Nile,types = c("AO","LS","TC"))
nile.outliers
Series: Nile 
ARIMA(0,0,0) with non-zero mean 

Coefficients:
      intercept       LS29       AO43
      1097.7500  -242.2289  -399.5211
s.e.    22.6783    26.7793   120.8446

sigma^2 estimated as 14401:  log likelihood=-620.65
AIC=1249.29   AICc=1249.71   BIC=1259.71

Outliers:
  type ind time coefhat  tstat
1   LS  29 1899  -242.2 -9.045
2   AO  43 1913  -399.5 -3.306

Bildbeschreibung hier eingeben


8
Ich freue mich zu sehen, dass Sie das Paket nützlich fanden, danke! Übrigens habe ich einen Tippfehler in der Funktion behoben, der die Ergebnisse aufzeichnet, sodass in der nächsten Version des Pakets die y-Achse den Bereich sowohl der ursprünglichen als auch der angepassten Serie abdeckt.
Javlacalle

2
In der letzten Version des Pakets wurde die Funktion tsoutliersumbenannt tso, um Konflikte mit einer gleichnamigen Funktion im Paket zu vermeiden forecast.
Javlacalle

1
@javlacalle Ich habe das neueste tsoutliers-Paket heruntergeladen, es hat immer noch tsoutliers, aber nicht tso. Ich bin nicht sicher, wann das Paket aktualisiert wird. Ich bin froh, dass wir unterschiedliche Funktionsnamen haben.
Prognose

Ich beeilte mich, über das Update zu informieren. Es dauert einige Zeit, bis CRAN aktualisiert wird. Ich habe gerade gesehen, dass die neueste Version 0.4 von CRAN heruntergeladen werden kann.
Javlacalle

@javlacalle Ich fand es sehr schwierig, tsoutliers auf meinem Mac zu installieren. Ich braue GSL installiert ist , habe ich versucht , mit zu kompilieren clangund gccund weder Werke. Ich denke, es ist ein großartiges Paket, aber die Installation hat mir das Herz gebrochen.
B.Mr.W.

Antworten:


19

Die vorübergehende Änderung TC ist eine allgemeine Art von Ausreißer. Die in der Dokumentation des Pakets angegebene und von Ihnen geschriebene Gleichung beschreibt die Dynamik dieses Ausreißertyps. Sie können es mit der filterunten gezeigten Funktion erzeugen . Es leuchtet, um es für mehrere Delta-Werte anzuzeigen. Für kollabiert der TC in einem additiven Ausreißer; auf der anderen Seite istδ=0δ=1

tc <- rep(0, 50)
tc[20] <- 1
tc1 <- filter(tc, filter = 0, method = "recursive")
tc2 <- filter(tc, filter = 0.3, method = "recursive")
tc3 <- filter(tc, filter = 0.7, method = "recursive")
tc4 <- filter(tc, filter = 1, method = "recursive")
par(mfrow = c(2,2))
plot(tc1, main = "TC delta = 0")
plot(tc2, main = "TC delta = 0.3")
plot(tc3, main = "TC delta = 0.7")
plot(tc4, main = "TC delta = 1", type = "s")

vorübergehende Veränderung

In Ihrem Beispiel können Sie die Funktion verwenden outliers.effects, um die Auswirkungen der erkannten Ausreißer auf die beobachteten Reihen darzustellen:

# unit impulse
m1 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = FALSE))
tsp(m1) <- tsp(chicken)
# weighted by the estimated coefficients
m2 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = TRUE))
tsp(m2) <- tsp(chicken)

Der innovative Ausreißer IO ist eigentümlicher. Im Gegensatz zu den anderen in berücksichtigten Ausreißertypen tsoutliershängt die Auswirkung der E / A vom ausgewählten Modell und von den Parameterschätzungen ab. Diese Tatsache kann bei vielen Ausreißern in Serie störend sein. In den ersten Iterationen des Algorithmus (in denen der Effekt einiger Ausreißer möglicherweise nicht erkannt und angepasst wurde) ist die Qualität der Schätzungen des ARIMA-Modells möglicherweise nicht gut genug, um die E / A genau zu definieren. Wenn der Algorithmus Fortschritte macht, kann außerdem ein neues ARIMA-Modell ausgewählt werden. Auf diese Weise ist es möglich, mit einem ARIMA-Modell eine E / A in einem vorläufigen Stadium zu erkennen, aber letztendlich wird ihre Dynamik durch ein anderes ARIMA-Modell definiert, das in dem letzten Stadium ausgewählt wurde.

In diesem Dokument wird gezeigt, dass der Einfluss eines E / A unter bestimmten Umständen zunehmen kann, wenn das Datum seines Auftretens in die Vergangenheit rückt, was schwer zu interpretieren oder anzunehmen ist.

Das IO hat ein interessantes Potenzial, da es saisonale Ausreißer erfassen kann. Die anderen in betrachteten Ausreißertypen tsoutlierskönnen keine saisonalen Muster erfassen. In einigen Fällen ist es jedoch möglicherweise besser, nach möglichen saisonalen Ebenenverschiebungen (SLS) zu suchen, anstatt nach E / A (wie in dem zuvor erwähnten Dokument gezeigt).

Das IO hat eine ansprechende Interpretation. Es wird manchmal als ein additiver Ausreißer verstanden, der den Störungsterm beeinflusst und sich dann in der Reihe entsprechend der Dynamik des ARIMA-Modells ausbreitet. In diesem Sinne ist das IO wie ein additiver Ausreißer. Beide beeinflussen eine einzelne Beobachtung, aber das IO ist ein Impuls im Störungsterm, während das AO ein Impuls ist, der direkt zu den vom ARIMA-Modell oder dem Datenerzeugungsprozess generierten Werten addiert wird . Ob Ausreißer die Innovationen beeinflussen oder außerhalb des Störungszeitraums liegen, kann diskutiert werden.

In der vorherigen Referenz finden Sie möglicherweise einige Beispiele für echte Daten, bei denen E / A erkannt wurden.


Vielen Dank für die ausführliche Antwort. Ich weiß es wirklich zu schätzen. Ich habe einige zusätzliche Fragen. Gibt es irgendwelche Vorteile bei der Verwendung von auto.arima, der Identifizierung von p, d, q und der anschließenden Verwendung von tsoutliers unter Verwendung von arima als tsmethod?
Prognose

1
Der Hauptvorteil der Verwendung forecast::auto.arimazusammen mit tsoutliersist, dass alles automatisiert wird. Es ist jedoch ratsam, die automatischen Prozeduren mit alternativen Optionen auszuführen. Sie können sich beispielsweise zuerst die ACF- oder Unit-Root-Tests ansehen und dann ein ARIMA-Modell auswählen, an das übergeben werden soll tsoutliers. Wenn für Ihr vorgeschlagenes Modell Ausreißer gefunden werden, können Sie die Analyse für die angepasste Serie erneut wiederholen. Es ist ein iterativer Prozess. Das automatische Verfahren bietet eine hilfreiche Anleitung, liefert jedoch möglicherweise nicht die endgültige oder einzigartige Lösung.
Javlacalle

1
Das Verfahren zum Auffinden von Ausreißern ist iterativ. Aus Sicherheitsgründen ist die Anzahl der zulässigen Iterationen begrenzt. Wenn Sie die Warnung beobachten, können Sie versuchen, den Algorithmus maxit.iloopauszuführen und das Argument auf 5-6 zu erhöhen, um festzustellen, ob sich die Ergebnisse ändern. Wenn die Warnung mit einem großen Wert maxit.iloop(z. B. 20 oder mehr) zurückgegeben wird, kann dies ein Zeichen dafür sein, dass etwas nicht richtig modelliert wird. In einigen Fällen kann es eine gute Option sein, E / A aus den zu berücksichtigenden Ausreißertypen zu entfernen. In den meisten Fällen können Sie die Warnung ignorieren. Sie können verwenden suppressWarnings, um sie zu vermeiden.
Javlacalle

2
@mugen Ich kenne kein Lehrbuch, das dieses Thema ausführlich behandelt. Da sich der in diesem Beitrag beschriebene Ansatz auf die Interventionsanalyse bezieht, ist jedes Lehrbuch (über Ökonometrie oder Zeitreihen) mit einem Kapitel zu diesem Thema hilfreich. Zum Beispiel Zeitreihenanalyse. Mit Anwendungen in R . Für Details sollten Sie einige der vielen Zeitschriftenartikel lesen, die sich mit dieser Ausgabe befassen, beginnend zum Beispiel mit Chen und Liu (1993) und den darin enthaltenen Referenzen.
Javlacalle

2
@mugen, ich würde auch Tsays Artikel lesen . Außerdem würde ich das klassische Buch von Pankratz prüfen, das eine gute Abdeckung für Ausreißer aufweist.
Prognostiker
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.