Komentarz: Po pierwsze chciałbym powiedzieć wielkie dziękuję do autora nowego tsoutliers pakietu, który implementuje Chen i Liu wykrywania szeregi czasowe poboczna, które zostało opublikowane w Journal of American Statistical Association w 1993 roku w oprogramowanie open source .
Pakiet wykrywa 5 różnych typów wartości odstających iteracyjnie w danych szeregów czasowych:
- Dodatkowa wartość odstająca (AO)
- Granica innowacyjności (IO)
- Przesunięcie poziomu (LS)
- Tymczasowa zmiana (TC)
- Sezonowa zmiana poziomu (SLS)
Co więcej, ten pakiet implementuje auto.arima z pakietu prognozy, dzięki czemu wykrywanie wartości odstających jest bezproblemowe. Pakiet tworzy również ładne wykresy dla lepszego zrozumienia danych szeregów czasowych.
Poniżej moje pytania:
Próbowałem uruchomić kilka przykładów przy użyciu tego pakietu i działało świetnie. Addytywne wartości odstające i zmiana poziomu są intuicyjne. Miałem jednak 2 pytania dotyczące przekazania wartości odstającej zmiany tymczasowej i wartości odstających innowacji, których nie rozumiem.
Przykład wartości odstającej zmiany tymczasowej:
Rozważ następujący przykład:
library(tsoutliers)
library(expsmooth)
library(fma)
outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)
Program słusznie wykrywa zmianę poziomu i tymczasową zmianę w następującej lokalizacji.
Outliers:
type ind time coefhat tstat
1 LS 12 1935 37.14 3.153
2 TC 20 1943 36.38 3.350
Poniżej znajduje się fabuła i moje pytania.
- Jak zapisać tymczasową zmianę w formacie równania? (Przesunięcie poziomu można łatwo zapisać jako zmienną binarną, w dowolnym momencie przed 1935 / Obs 12 wynosi 0, a za każdym razem po 1935 i po 1).
Równanie tymczasowej zmiany w podręczniku pakietu i artykule podano jako:
gdzie wynosi 0,7. Po prostu staram się przetłumaczyć to na powyższy przykład.
- Moje drugie pytanie dotyczy innowacyjnej wartości odstającej, nigdy nie spotkałem
się z innowacyjną wartością odstającą w praktyce. każdy przykład liczbowy lub przykładowy byłby bardzo pomocny.
Edycja: @ Irishstat, funkcja tsoutliers wykonuje doskonałą robotę w identyfikowaniu wartości odstających i sugerowaniu odpowiedniego modelu ARIMA. Patrząc na zestaw danych Nilu, patrz poniżej zastosowanie auto.arima, a następnie zastosowanie tsoutliers (z wartościami domyślnymi, które obejmują 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
Po zastosowaniu funkcji tsoutliers identyfikuje wartość odstającą LS i wartość odstającą addytywną i zaleca zamówienie ARIMA (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
zmieniono nazwę funkcji, tso
aby uniknąć konfliktu z funkcją o tej samej nazwie w pakiecie forecast
.