Problem ze zdefiniowaniem zamówienia ARIMA

16

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:

ZARjaM.ZA(p,1,q)(P.,1,Q)96

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

ZARjaM.ZA(0,1,4)(0,1,1)96

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

ZARjaM.ZA(1,1,1)(2),0,2))96

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:

  1. 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 ...)
  2. 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)
  3. 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?
  4. 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?
  5. Czy muszę stosować podejście z szeregiem Fouriera, aby wypróbować modele seasonality=672opisane w Długich okresach sezonowych ?
  6. 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)
  7. 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ć.

Peter Nijhuis
źródło

Odpowiedzi:

9
  1. 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 ...)

Oszacowania ryzyka poza próbą stanowią złoty standard oceny wyników, a zatem wyboru modeli. Najlepiej, jeśli przeprowadzasz walidację krzyżową, aby oszacowania ryzyka były uśredniane dla większej liczby danych. FPP wyjaśnia jedną metodę walidacji krzyżowej dla szeregów czasowych. Zobacz Tashman, aby przejrzeć inne metody:

Tashman, LJ (2000). Próby dokładności prognozowania poza próbą: analiza i przegląd. International Journal of Forecasting, 16 (4), 437–450. doi: 10.1016 / S0169-2070 (00) 00065-0

Oczywiście wzajemna walidacja jest czasochłonna, dlatego ludzie często wybierają model w próbie, aby wybrać model, taki jak AIC, a auto.arima wybiera najlepszy model. To podejście jest całkowicie poprawne, jeśli nie być może tak optymalne.

  1. 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)

Nie jestem pewien, co rozumiesz przez roczny trend. Zakładając, że masz na myśli roczną sezonowość, tak naprawdę nie ma sposobu, aby wziąć to pod uwagę przy danych o wartości krótszej niż rok.

  1. 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?

Spodziewałbym się, że z wyjątkiem pewnych zmian w sposobie generowania danych, najbardziej poprawny model bazowy będzie taki sam w całym zbiorze danych. Nie oznacza to jednak, że model wybrany przez dowolną procedurę (taką jak procedura używana przez auto.arima) będzie taki sam, jeśli ta procedura zostanie zastosowana do różnych podzbiorów danych. Wynika to z faktu, że zmienność wynikająca z próbkowania spowoduje zmienność wyników procedury wyboru modelu.

  1. 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?

Zewnętrzne manekiny wakacyjne to najlepsze podejście.

  1. Czy muszę stosować podejście z szeregiem Fouriera, aby wypróbować modele seasonality=672opisane w Długich okresach sezonowych ?

Musisz coś zrobić, ponieważ, jak wspomniano w tym artykule, funkcja arima w R nie obsługuje okresów sezonowych większych niż 350. Miałem rozsądny sukces z podejściem Fouriera. Inne opcje obejmują prognozowanie po rozkładzie sezonowym (również objęte FPP) oraz wykładnicze modele wygładzania, takie jak nietoperze i nietoperze.

  1. 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)

To wygląda poprawnie. Powinieneś eksperymentować z różnymi liczbami terminów. Zauważ, że teraz jest fourierfunkcja w pakiecie prognozy z nieco inną specyfikacją, która, jak zakładam, zastępuje tę na blogu Hyndmana. Składnia znajduje się w pliku pomocy.

  1. Czy początkowe komponenty P i Q są dołączone do serii Fouriera?

Nie jestem pewien, o co tu pytasz. P i Q zwykle odnoszą się do stopni składników sezonowych AR i MA. Stosując podejście Fouriera, nie ma składników sezonowych, a zamiast tego istnieją zmienne towarzyszące czterokresowym warunkom związanym z sezonem. To już nie sezonowa ARIMA, to ARIMAX, gdzie zmienne towarzyszące przybliżają sezon.

Jeremy Coyle
źródło