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
tsoutliers
umbenannt tso
, um Konflikte mit einer gleichnamigen Funktion im Paket zu vermeiden forecast
.