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 .
Das Paket erkennt 5 verschiedene Ausreißertypen iterativ in Zeitreihendaten:
- Additiver Ausreißer (AO)
- Innovationsausreißer (IO)
- Level Shift (LS)
- Temporäre Änderung (TC)
- 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:
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.
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
quelle
tsoutliers
umbenannttso
, um Konflikte mit einer gleichnamigen Funktion im Paket zu vermeidenforecast
.clang
undgcc
und weder Werke. Ich denke, es ist ein großartiges Paket, aber die Installation hat mir das Herz gebrochen.Antworten:
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δ= 0 δ= 1
filter
unten 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 istIn Ihrem Beispiel können Sie die Funktion verwenden
outliers.effects
, um die Auswirkungen der erkannten Ausreißer auf die beobachteten Reihen darzustellen:Der innovative Ausreißer IO ist eigentümlicher. Im Gegensatz zu den anderen in berücksichtigten Ausreißertypen
tsoutliers
hä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
tsoutliers
kö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.
quelle
forecast::auto.arima
zusammen mittsoutliers
ist, 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 solltsoutliers
. 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.maxit.iloop
auszuführen und das Argument auf 5-6 zu erhöhen, um festzustellen, ob sich die Ergebnisse ändern. Wenn die Warnung mit einem großen Wertmaxit.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 verwendensuppressWarnings
, um sie zu vermeiden.