To jest długi post, więc mam nadzieję, że poradzisz sobie ze mną i popraw mnie tam, gdzie się mylę.
Moim celem jest tworzenie dziennej prognozy na podstawie danych historycznych z 3 lub 4 tygodni.
Dane to 15 minutowe dane lokalnego obciążenia jednej z linii transformatora. Mam problem ze znalezieniem zamówienia modelowego sezonowego procesu ARIMA. Rozważ szereg czasowy zapotrzebowania na energię elektryczną:
Original Time Series http://i.share.pho.to/80d86574_l.png
Gdy pierwsze 3 tygodnie są traktowane jako podzbiór i różnią się, obliczane są następujące wykresy ACF / PACF:
Podzbiór http://i.share.pho.to/5c165aef_l.png
Pierwsza różnica http://i.share.pho.to/b7300cc2_l.png
Różnica sezonowa i pierwsza http://i.share.pho.to/570c5397_l.png
Wygląda na to, że serial jest trochę stacjonarny. Ale sezonowość może być również cotygodniowa (patrz Tydzień różnic sezonowych i różnice drugiego rzędu [tutaj] http://share.pho.to/3owoq , co myślisz?)
Podsumujmy więc, że model przyjmuje kształt:
Na ostatniej figurze wyraźny skok w opóźnieniu 96 wskazuje na sezonowy składnik MA (1) (być może AR (1) może być równie dobrze, ponieważ istnieje również wyraźny skok w PACF). Skoki przy opóźnieniu 1: 4 wskazują składnik MA (4), który odpowiada rozkładowi wykładniczemu w PACF z odrobiną wyobraźni. Zatem ręcznie wybrany model początkowy może być:
z
Series: x
ARIMA(0,1,4)(0,1,1)[96]
Coefficients:
ma1 ma2 ma3 ma4 sma1
-0.2187 -0.2233 -0.0996 -0.0983 -0.9796
s.e. 0.0231 0.0234 0.0257 0.0251 0.0804
sigma^2 estimated as 364612: log likelihood=-15138.91
**AIC=30289.82 AICc=30289.87 BIC=30323.18**
Funkcja auto.arima oblicza następujący model (z krokowym i przybliżeniem wartości PRAWDA, w przeciwnym razie potrzeba długiego czasu na konwergencję):
z
Series: x
ARIMA(1,1,1)(2,0,2)[96]
Coefficients:
ar1 ma1 sar1 sar2 sma1 sma2
0.7607 -1.0010 0.4834 0.4979 -0.3369 -0.4168
s.e. 0.0163 0.0001 0.0033 0.0116 0.0216 0.0255
sigma^2 estimated as 406766: log likelihood=-15872.02
**AIC=31744.99 AICc=31745.05 BIC=31784.25**
Co oznacza, że nie stosuje się różnicowania sezonowego. Oto resztki obu modeli. Statystyka Ljunga Boxa daje bardzo małą wartość p, wskazując, że nadal istnieje pewna autokorelacja (popraw mnie, jeśli się mylę).
Prognozowanie
Zatem w celu ustalenia, który z nich jest lepszy, test dokładności na próbce jest wtedy najlepszy. Tak więc dla obu modeli sporządzana jest prognoza z 24-godzinnym wyprzedzeniem, która jest porównywana ze sobą. Wyniki są następujące: auto.arima http://i.share.pho.to/5d1dd934_l.png model ręczny http://i.share.pho.to/7ca69c97_l.png
Automatyczny:
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set -2.586653 606.3188 439.1367 -1.284165 7.599403 0.4914563 -0.01219792 NA
Test set -330.144797 896.6998 754.0080 -7.749675 13.268985 0.8438420 0.70219229 1.617834
podręcznik
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set 2.456596e-03 589.1267 435.6571 -0.7815229 7.509774 0.4875621 -0.002034122 NA
Test set 2.878919e+02 919.7398 696.0593 3.4756363 10.317420 0.7789892 0.731013599 1.281764
pytania
Jak można sobie wyobrazić, jest to analiza pierwszych trzech tygodni zbioru danych. Zmagam się z następującymi pytaniami:
- Jak wybrać najlepszy model ARIMA (próbując wszystkich różnych zamówień i sprawdzając najlepszy MASE / MAPE / MSE? Gdzie wybór pomiaru wydajności może być dyskusją samą w sobie ...)
- Jeśli generuję nowy model i prognozę dla każdej nowej prognozy dziennej (jak w przypadku prognozowania online), czy muszę brać pod uwagę trend roczny i jak? (jak w tak małym podzbiorze zgaduję, że trend jest znikomy)
- Czy spodziewałbyś się, że kolejność modeli pozostanie taka sama przez cały zestaw danych, tzn. Czy przy wyborze innego podzbioru otrzymam ten sam model?
- Jaki jest dobry sposób radzenia sobie z wakacjami w ramach tej metody? A może potrzebny jest do tego ARIMAX z zewnętrznymi wakacyjnymi manekinami?
- Czy muszę stosować podejście z szeregiem Fouriera, aby wypróbować modele
seasonality=672
opisane w Długich okresach sezonowych ? - Jeśli tak, to tak
fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)
(jeśli funkcja fourier jest taka, jak zdefiniowano w blogu Hyndmana) - Czy początkowe komponenty P i Q są dołączone do serii Fouriera?
Najbardziej teoretyczna wiedza uzyskana z FPP , świetne rzeczy!
Przed doradzeniem w sprawie stosowania wygładzania wykładniczego lub (dynamicznej) regresji liniowej jest to również opracowywane w celu porównania.
Dane
https://www.dropbox.com/sh/mzx61sskya5ze6x/Zq3A7Q6htH/trafo.txt
Kod
data<-read.csv("file", sep=";")
load<-data[,3]
Usunąłem kilka wartości zerowych na tydzień przed wartościami
stepback<-672
load[is.na(load)] <- 0 # Assumed no 0's in first 672 values!
idx <- which(load == 0)
idx <- idx[which(idx>stepback)]
load[idx] <- load[idx-stepback]
ED<-ts(load,start=0, end=c(760,96),frequency=96)
x<-window(ED,start=0, end=c(20,96))
Możliwe jest również opublikowanie odtwarzalnego przykładu, ale spowoduje to, że post będzie jeszcze dłuższy, ale w razie potrzeby możliwy. Więc jeśli jest coś, co powinienem podać, proszę dać mi znać.