Jak określić przewidywalność szeregów czasowych?

10

Jedną z ważnych kwestii, przed którymi stoją prognozy, jest to, czy daną serię można prognozować, czy nie?

Natknąłem się na artykuł zatytułowany „ Entropia jako wskaźnik Priori przewidywalności ” autorstwa Petera Catta, który wykorzystuje aproksymalną entropię (ApEn) jako miarę względną do określenia danego szeregu czasowego.

Artykuł mówi:

„Mniejsze wartości ApEn wskazują na większą szansę, że po zestawie danych pojawią się podobne dane (prawidłowość). I odwrotnie, większa wartość ApEn wskazuje na mniejszą szansę na powtórzenie podobnych danych (nieregularność). Dlatego większe wartości przenoszą więcej nieporządku , losowość i złożoność systemu. ”

Po nim następują wzory matematyczne do obliczania ApEn. Jest to interesujące podejście, ponieważ zapewnia wartość liczbową, której można użyć do oceny możliwości prognozowania w sensie względnym. Nie wiem, co oznacza przybliżona entropia, czytam o tym więcej.

Jest to pakiet o nazwie pracma w Rktóry pozwala obliczyć APEN. Dla celów ilustracyjnych wykorzystałem 3 różne szeregi czasowe i obliczyłem liczby ApEn.

  1. Seria 1: Słynna seria czasowa AirPassenger - jest wysoce deterministyczna i powinniśmy być w stanie łatwo przewidzieć.
  2. Seria 2: Sunspot Time Series - jest bardzo dobrze zdefiniowana, ale powinna być mniej przewidywalna niż seria 1.
  3. Seria 3: Liczba losowa Nie ma możliwości przewidzenia tej serii.

Jeśli więc obliczymy ApEn, seria 1 powinna być mniejsza niż seria 2 powinna być bardzo, bardzo mniejsza seria 3.

Poniżej znajduje się fragment kodu R, który oblicza ApEn dla wszystkich trzech serii.

library("pracma")
> series1 <- approx_entropy(AirPassengers)
> series1
[1] 0.5157758
> series2 <- approx_entropy(sunspot.year)
> series2
[1] 0.762243
> series3 <- approx_entropy(rnorm(1:30))
> series3
[1] 0.1529609

Nie tego się spodziewałem. Seria losowa ma niższą liczbę niż dobrze określona seria AirPassenger. Nawet jeśli zwiększę liczbę losową do 100, nadal otrzymuję następujący wynik, który jest mniejszy niż dobrze zdefiniowana seria 2 / Seria Sunspot.yealry.

> series3 <- approx_entropy(rnorm(1:100))
> series3
[1] 0.747275

Poniżej moje pytania:

  1. Istnieją 2 parametry w obliczaniu ApEn ( mi r)? Jak je ustalić. Użyłem wartości domyślnych w Rpowyższym kodzie.
  2. Co robię niepoprawnie, to pokazuje, że niepoprawnie ApEn jest niższy dla liczb losowych w porównaniu z dobrze zdefiniowaną serią, taką jak plamka słoneczna. Rok.
  3. Czy powinienem zdezasonalizować / odrzucić serię, a następnie oszacować ApEn. Autor zastosował jednak ApEn bezpośrednio do serii.
  4. Czy istnieje inny sposób ustalenia, czy seria jest przewidywalna?
Synoptyk
źródło
Jak stwierdzono w artykule, nie należy stosować przybliżonej entropii w krótkich szeregach czasowych, N <200. Co ważniejsze, w artykule użyto przykładowej entropii, a nie przybliżonej entropii. Pracma zawiera oba. Dzięki
Czy uwzględnia zmienne objaśniające? Na przykład, jeśli prognozujesz osłabienie konta firmy, może to być skorelowane z wydatkami marketingowymi, a wydatki są wysoce przewidywalne, w rzeczywistości planowane są miesiące wcześniej. Jak można to uwzględnić w proponowanym podejściu?
Aksakal,
@Aksakal, nie, nie ma żadnych zmiennych objaśniających. Szukałem prognozowania szeregów czasowych wielowymiarowych (bez zmiennej objaśniającej) na dużą skalę, w których potrzebujemy obiektywnego pomiaru do oceny przewidywalności. Ponadto w wielu przypadkach prognozowanie jednowymiarowe jest znacznie dokładniejsze niż modele zbudowane ze zmiennych objaśniających.
prezenter
1
Wydaje mi się, że jest to węższe pytanie niż sugerowany duplikat. Głosowanie pozostawia otwarte, ale sugerują OP rozważyć bardziej konkretny tytuł, aby uniknąć pomylenia tych dwóch. Powiedz: „Jak określić przewidywalność szeregów czasowych przy użyciu przybliżonej entropii ?”
Sean Easter,

Odpowiedzi:

7

Parametry mi r, zaangażowane w obliczanie przybliżonej entropii (ApEn) szeregów czasowych, to odpowiednio długość okna (sekwencja) i tolerancja (wartość filtra) . W rzeczywistości, zarówno pod względem m, rjak i N(liczby punktów danych), ApEn jest definiowany jako „logarytm naturalny względnej częstości powtarzalnych wzorów długości mw porównaniu z wzorcami długości m + 1” (Balasis, Daglis, Anastasiadis i Eftaxias, 2011 , s. 215):

ApEn(m,r,N)=Φm(r)Φm+1(r),

where 

Φm(r)=ΣilnCim(r)/(Nm+1)

Wydaje się zatem, że zmiana tolerancji rpozwala kontrolować (czasową) ziarnistość określania entropii szeregów czasowych. Niemniej jednak użycie wartości domyślnych dla obu parametrów mi rparametrów w pracmawywołaniach funkcji entropii pakietu działa dobrze. Jedyną poprawką, którą należy zrobić, aby zobaczyć prawidłową relację wartości entropii dla wszystkich trzech szeregów czasowych (niższa entropia dla bardziej dobrze zdefiniowanych serii, wyższa entropia dla więcej danych losowych) to zwiększenie długości wektora danych losowych :

 library(pracma)
 set.seed(10)
 all.series <- list(series1 = AirPassengers,
                    series2 = sunspot.year,
                    series3 = rnorm(500)) # <== size increased
 sapply(all.series, approx_entropy)
  series1   series2   series3 
  0.5157758 0.7622430 1.4741971 

Wyniki są spodziewane - jak przewidywalność zmian zmniejsza się od najbardziej określona series1większości losowo series 3ich entropia konsekwencji zwiększa: ApEn(series1) < ApEn(series2) < ApEn(series3).

W odniesieniu do innych środków o forecastability , może chcesz sprawdzić średnie bezwzględne błędy skalowane (MASE) - zobaczyć dyskusję o więcej szczegółów. Prognozowana analiza komponentów wydaje się również być interesującym i nowym podejściem do określania przewidywalności szeregów czasowych. I, jak można się spodziewać, istnieje również Rpakiet do tego - ForeCA .

library(ForeCA)
sapply(all.series,
       Omega, spectrum.control = list(method = "wosa"))
 series1   series2   series3 
 41.239218 25.333105  1.171738 

Ω[0,1]Ω(whitenoise)=0%Ω(sinusoid)=100%

Bibliografia

Balasis, G., Daglis, IA, Anastasiadis, A., i Eftaxias, K. (2011). Wykrywanie dynamicznych zmian złożoności w sSeries w czasie Dst z wykorzystaniem koncepcji entropii i analizy przeskalowanego zakresu. W W. Liu i M. Fujimoto (red.), The Dynamic Magnetosphere, IAGA Special Sopron Book, Series 3, 211. doi: 10.1007 / 978-94-007-0501-2_12. Skoczek. Źródło: http://members.noa.gr/anastasi/papers/B29.pdf

Georg M. Goerg (2013): Forecastable Component Analysis. JMLR, W&CP (2) 2013: 64-72. http://machinelearning.wustl.edu/mlpapers/papers/goerg13

Aleksandr Blekh
źródło
Testowałem również pracma::sample_entropy()funkcję i koryguje relację wyników w szeregu czasowym również w tym scenariuszu.
Aleksandr Blekh,
@forecaster: Nie ma za co.
Aleksandr Blekh
1
Zobacz także ten dokument notsoirrational.files.wordpress.com/2015/04/schulz15.pdf, który wykorzystuje dane eksperymentalne do uzasadnienia swoich miar przewidywalności. Odnosi także część pracy do pracy ForeCA wspomnianej w tym poście
Georg M. Goerg,
@ GeorgM.Goerg: Dziękujemy za sugestie, link i zmiany.
Aleksandr Blekh,
@forecaster: Cała przyjemność po mojej stronie.
Aleksandr Blekh
0

Za każdym razem seria składa się z 3 elementów: trendu, sezonowości i losowości. Jeśli dane wykazują silny trend i / lub są sezonowe, przewidywanie będzie stosunkowo łatwe. Jeśli dane są w większości przypadkowe, to z definicji nie można niczego przewidzieć.

Ukryty model Markowa
źródło