Wartość „Częstotliwość” dla danych przedziałów sekund / minut w R

28

Używam modeli R (3.1.1) i ARIMA do prognozowania. Chciałbym wiedzieć, jaki powinien być parametr „częstotliwość” przypisany w ts()funkcji , jeśli używam danych szeregów czasowych, które są:

  1. rozdzielone minutami i rozkładają się na 180 dni (1440 minut / dzień)
  2. rozdzielone sekundami i rozkładają się na 180 dni (86 400 sekund / dzień).

Jeśli dobrze pamiętam definicję, „częstotliwość” w ts w R jest liczbą obserwacji na „sezon”.

Pytanie część 1:

Jaki jest „sezon” w moim przypadku?

Jeśli sezon to „dzień”, to czy „częstotliwość” dla minut = 1440 i 86 400 dla sekund?

Pytanie część 2:

Czy „częstotliwość” może zależeć również od tego, co próbuję osiągnąć / prognozować? na przykład w moim przypadku chciałbym mieć bardzo krótkoterminową prognozę. Za każdym razem krok do przodu o 10 minut. Czy wtedy można by uznać sezon za godzinę zamiast dnia? Czy w takim przypadku częstotliwość = 60 minut, częstotliwość = 3600 sekund?

Próbowałem na przykład użyć częstotliwości = 60 dla danych minutowych i uzyskałem lepsze wyniki w porównaniu do częstotliwości = 1440 (używane fourierpatrz link poniżej przez Hyndman) http://robjhyndman.com/hyndsight/forecasting-weekly-data/

(Porównanie przeprowadzono przy użyciu MAPE do pomiaru dokładności prognozy)

W przypadku, gdy wyniki są całkowicie arbitralne, a częstotliwości nie można zmienić. Jaka byłaby interpretacja użycia freq = 60 na moich danych?

Myślę też, że warto wspomnieć, że moje dane zawierają sezonowość co godzinę i co dwie godziny (obserwując surowe dane i funkcję autokorelacji)

Apython
źródło

Odpowiedzi:

38

„Częstotliwość” to liczba obserwacji przypadających na „cykl” (zwykle rok, ale czasem tydzień, dzień, godzina itp.). Jest to przeciwieństwo definicji częstotliwości w fizyce lub w analizie Fouriera, gdzie „okres” jest długością cyklu, a „częstotliwość” jest odwrotnością okresu. Podczas korzystania z ts()funkcji w języku R należy użyć następujących opcji.

Data      frequency
Annual     1
Quarterly  4
Monthly   12
Weekly    52

W rzeczywistości nie ma 52 tygodni w ciągu roku, ale średnio 365,25 / 7 = 52,18. Ale większość funkcji, które wykorzystują tsobiekty, wymaga częstotliwości całkowitej.

Gdy częstotliwość obserwacji jest mniejsza niż tydzień, wówczas zwykle jest więcej niż jeden sposób obsługi częstotliwości. Na przykład dane obserwowane co minutę mogą mieć godzinową sezonowość (częstotliwość = 60), dzienną sezonowość (częstotliwość = 24x60 = 1440), tygodniową sezonowość (częstotliwość = 24x60x7 = 10080) i roczną sezonowość (częstotliwość = 24x60x365.25 = 525960). Jeśli chcesz użyć tsobiektu, musisz zdecydować, który z nich jest najważniejszy.

Alternatywą jest użycie mstsobiektu (zdefiniowanego w forecastpakiecie), który obsługuje wiele szeregów czasowych sezonowości. Następnie możesz określić wszystkie częstotliwości, które mogą być istotne. Jest także wystarczająco elastyczny, aby obsługiwać częstotliwości niecałkowite.

Niekoniecznie będziesz chciał uwzględnić wszystkie te częstotliwości - tylko te, które prawdopodobnie będą obecne w danych. Ponieważ masz tylko 180 dni danych, prawdopodobnie możesz zignorować roczną sezonowość. Jeśli dane są pomiarami zjawiska naturalnego (np. Temperatury), możesz również zignorować cotygodniową sezonowość.

Przy wielu sezonach możesz użyć modelu TBATS lub terminów Fouriera w modelu regresji lub ARIMA. fourierFunkcji z pakietu prognozy będzie obsługiwać mstsobiekty.

Rob Hyndman
źródło
Odmiana tej odpowiedzi została opublikowana na moim blogu: robjhyndman.com/hyndsight/seasonal-periods
Rob Hyndman
Prof. Hyndman, bardzo dziękuję za twój post! Cieszę się, że otrzymałem odpowiedź na moje pytania.
Apython