Autokorelacja

Przewodnik w obliczaniu autokorelacji dla danego szeregu czasowego. Obliczenia w arkuszu kalkulacyjnym oraz pakiecie Octave (Matlab)

Czy to mi jest potrzebne?

Każde narzędzie powinno czemuś służyć. Osobiście wykres autokorelacji wykorzystuje przede wszystkim aby wykluczyć, że szereg jest losowy (oczywiste do pewnego stopnia), w dalszej kolejności by sprawdzić, czy w szeregu występuje zależność pomiędzy kolejnymi danymi, stwierdzić długość ewentualnego cyklu oraz pomocniczo do rekonstrukcji przestrzeni fazowej. Dodatkowo otrzymuję też informację jakiej długości średnią kroczącą zastosować, aby nie zniekształcić głównego cyklu, likwidując jednocześnie szum (losowe zachowania).

Przeanalizujmy naprawdę najprostszy przykład jaki tylko nasunął mi się na myśl - funkcja sinus doskonale znana ze szkoły, stworzona oczywiście za pomocą pakietu Octave

funkcja sinus

Wykres 1. Funkcja sinus.

Poniżej wykres autokorelacji

autokorelacja dla funkcji sinus

Wykres 2. Autokorelacja dla funkcji sinus.

Dzięki niemu mogę powiedzieć, że istnieje okresowa zależność, której długość wynosi 629 danych (629 x 0.01 = 6.29 (2*pi)). Dodatkowo otrzymuję informację jakiego opóźnienia użyć do rekonstrukcji przestrzeni fazowej. W danym przypadku jest to 157 danych. Nie może to być ani 629, ani 315, gdyż dla tych wartości otrzymałbym linię o nachyleniu 45 stopni - niezbyt interesującą.

przestrzeń fazowa dla funkcji sinus

Wykres 3. Przestrzeń fazowa dla funkcji sinus.

Kolejny przykład zastosowania dla szeregu czasowego plam na słońcu znajdą Państwo w końcowej części przewodnika autokorelacji.

Obliczanie współczynnika korelacji

Zaocznie przedstawiam Państwu mojego kolegę Zbyszka. Zbyszek jest ze Śląska, dużo marudzi, ale ma silną wolę walki. Żeby zredukować stres wywołany pracą kilka razy w tygodniu robi pompki.

Zbyszek

Wykres 4. Zbyszek.

Oczywiście bez jego zgody zamieściłem średnią ilość wyciśniętych pompek na tydzień na przestrzeni ostatnich dziewięciu miesięcy (kolumna 2), a obok średnie temperatury jakie panowały w danym miesiącu (kolumna 3). Wykorzystując współczynnik korelacji zbadamy wpływ temperatury na osiągnięcia sportowe Zbyszka - nie na odwrót.

zestawienie temp i ilosci pompek

Wykres 5. Zestawienie pompek zrobionych przez Zbyszka w danym miesiącu oraz średnich temperatur.

Doskonałym narzędziem będzie arkusz kalkulacyjny - osobiście polecam OpenOffice, z którego pochodzą wszystkie zrzuty ekranów. Wzór na kowariancję przedstawiony jest poniżej i wg. niego zostaną wykonane obliczenia.

wzór współczynnika korelacji

Wykres 6. Wzór kowariancji.

Zacznijmy obliczenia od mianownika. Kreseczka nad zmienna oznacza wartość średnią danej zmiennej, czyli w naszym wypadku bar p oznacza średnią liczbę pompek przypadających na dany miesiąc. Analogicznie bar t oznacza średnią temperaturę w rozpatrywanym okresie. Poniżej wzór do obliczania średniej.

wzór średniej

Wykres 7. Wzór na obliczenie średniej.

Mała literka n pod znakiem sumowania suma oznacza kolejne dane i jest odpowiednikiem kolejnych miesięcy (kolumna 1). Duża litera N oznacza całkowitą liczbę miesięcy, które wykorzystamy w obliczeniach - wartość ta w naszym przykładzie jest ujęta w komórce B15 i C15.

wykres średniej ilości pompek

Wykres 8. Średnia ilość pompek.

Aby obliczyć średnią należy zsumować wszystkie dane i podzielić przez ich liczbę. Liczbę danych, sumy oraz średnie w arkuszu umieściłem poniżej tabelką z danymi. Użyte formuły oraz wyniki obliczeń znajdują się poniżej.

formuły do obliczania średniej


oraz wyniki

Wykres 9. Formuły do obliczenia średniej oraz wyniki dla przedstawionego przykładu.

Znając średnią możemy przystąpić do dalszych obliczeń. W 4. i 5. kolumnie znajduje się różnica pomiędzy średnią a poszczególnymi danymi.

Obliczenia różnicy pomiędzy średnią, a kolejnymi danymi.

Wykres 10. Obliczenia różnicy pomiędzy średnią, a kolejnymi danymi.

Wyliczone różnice mnożymy przez siebie - zgodnie z mianownikiem wzoru na kowariancję - oraz sumujemy (komórka o adresie H16.)

Obliczenie licznika zgodnie z wzorem na kowariancję.

Wykres 11. Obliczenie licznika wzoru na kowariancję.

Aby uzyskać wartość kowariancji dla danych temperatury i ilości pompek pozostaje tylko podzielić otrzymaną sumę przez liczebność pojedynczego szeregu pomniejszoną o jeden. Obliczenia w arkuszu widoczne są poniżej.

Kowariancja


Kowariancja

Wykres 12. Końcowe obliczenia kowariancji.

Obliczona w powyższy sposób wartość kowariancji może przyjmować wartości z zakresu od minus nieskończoności do plus nieskończoności. Z tego względu skaluje się ją przez iloczyn odchyleń standardowych poszczególnych szeregów tak by przyjmowała wartości z przedziału od -1 do 1. Tak przeskalowaną wartość nazywa się współczynnikiem korelacji. Wzór na współczynnik korelacji znajduje się poniżej.

wzór współczynnika korelacji

Wykres 13. Wzór na współczynnik korelacji.

Mianownik mamy obliczony, pozostaje obliczyć tylko odchylenia standardowe. Wzór do obliczenia odchylenia standardowego widoczny jest poniżej.

odchylenie standardowe wzór

Wykres 14. Odchylenie standardowe - wzór.

Niezbędne obliczenia wykonamy w obecnym arkuszu. Pierwszym krokiem jest pomnożenie przez same siebie wartości z kolumn D i E.

odchylenie standardowe obliczanie licznika we wzorze

Wykres 15. Odchylenie standardowe - obliczanie licznika we wzorze.

Ostatnim krokiem w obliczaniu odchylenia standardowego jest wyciągnięcie pierwiastka kwadratowego z obliczonych sum (komórki F16 oraz G16) oraz podzielenie przez liczbę obserwacji pomniejszoną o 1 (komórki F18 oraz G18 na poniższym zrzucie ekranu).

odchylenie standardowe - przykład obliczeń

Wykres 16. Odchylenie standardowe - dzielenie licznika przez liczbę danych pomniejszoną o jeden oraz wyciągnięcie pierwiastka.

Dysponując odchyleniami standardowymi dla szeregów dzielimy wartość kowariancji przez iloczyn odchyleń. Komórka H20 zawiera końcowy wynik.

współczynnik korelacji

Wykres 17. Współczynnik korelacji dla analizowanego przykładu.

Uzyskana wartość współczynnika korelacji to 0.36. Świadczy to o słabej zależności osiągnięć sportowych Zbycha od temperatury. Nie mniej jednak w tym konkretnym przypadku ważniejsza wydaje się umiejętność obliczeń, niż osiągnięcia sportowe Zbyszka, któremu życzymy dalszych sukcesów w pracy nad jego ciałem.

Arkusz zawierający wykonane powyżej obliczenia (w formacie obsługiwanym przez OpenOffice) można pobrać klikając na link

Autokorelacja

Obliczenia autokorelacji wygodnie będzie zacząć od pewnego uproszczenia. Poniższe obliczenia zostały wykonane dla dwóch jednakowych szeregów czasowych - współczynnik korelacji wynosi oczywiście 1, gdyż identyczne szeregi są ze sobą doskonale skorelowane.

współczynnik korelacji szeregu z samym sobą

Wykres 18. Współczynnik korelacji dla identycznych szeregów czasowych.

Odchylenia standardowe są identyczne dla obu szeregów czasowych, co pozwala uprościć wzór do obliczania współczynnika korelacji. Przekształcenia są zamieszczone poniżej. Zamieniam też oznaczenie zmiennej na x. Przez literę m oznaczone zostało opóźnienie - zostanie ono wkrótce opisane poniżej.

Uproszczenie wzoru na współczynnik korelacji.

Wykres 19. Uproszczenie wzoru na współczynnik korelacji.

Po przekształceniach można nieznacznie uprościć obliczenia w arkuszu kalkulacyjnym. Współczynnik korelacji będzie teraz obliczony jako iloraz komórek H19 i F19, zgodnie z przekształceniami powyżej.

Obliczanie współczynnika korelacji po uproszczeniu wzoru

Wykres 20. Obliczanie współczynnika korelacji po uproszczeniu wzoru.

Obliczanie właściwej autokorelacji odbywa się poprzez obliczenie współczynników korelacji dla badanego szeregu względem jego samego opóźnionego kolejno o 1, 2, 3 ... i kolejno m obserwacji. Poniżej jest zamieszczone opóźnienie dla m = 1.

Wykonanie opóźnienia czasowego. opóźnienie m = 1

Wykres 21. Wykonanie opóźnienia czasowego. Opóźnienie m = 1.

Oraz obliczenia współczynnika korelacji dla opóźnienia równego 1.

Obliczenia współczynnika korelacji dla szeregu i szeregu z opóźnieniem m = 1.

Wykres 22. Obliczenia współczynnika korelacji dla szeregu i szeregu z opóźnieniem m = 1.

W dalszej kolejności obliczenia dla opóźnienia równego 2.

Obliczenia współczynnika korelacji dla szeregu i szeregu z opóźnieniem m = 2.

Wykres 23. Obliczenia współczynnika korelacji dla szeregu i szeregu z opóźnieniem m = 2.

Ostatecznie z otrzymanych wartości współczynnika korelacji możemy sporządzić wykres autokorelacji, na osiach znajdują się odpowiednio wartość opóźnienia oraz wartość współczynnika korelacji.

autokorelacja. wykres w arkuszu kalkulacyjnym

Wykres 24. Wykres autokorelacji dla analizowanego szeregu.

Otrzymane wyniki zostaną zinterpretowane w końcowej części przewodnika. Arkusz zawierający wykonane powyżej obliczenia (w formacie obsługiwanym przez OpenOffice) można pobrać klikając na link

Obliczenia w pakiecie Octave

Obliczenia w pakiecie Octave są prawdziwą przyjemnością. Szybkie i proste. Na początek należy wprowadzić, lub wczytać dane zmiennej z dysku.

Wprowadzanie zmiennej do programu Octave

Wykres 25. Wprowadzanie zmiennej do programu Octave.

Na powyższym zrzucie ekranu wprowadzam szereg za pomocą poniższego polecenia:

x = [25 15 5 5 10 20 20 30 10];

Do wykonania obliczeń można użyć funkcji autocor.m z pakietu Octave. Najprostszym sposobem sprawdzenia, czy jest ona dostępna jest wpisanie polecenia

help autocor.m

Pomoc dla funkcji autocor.m

Wykres 26. Pomoc dla funkcji autocor.m.

Aby wykonać obliczenia wystarczy polecenie

autocor (x)

Wynik obliczeń funkcji autocor.m dla wprowadzonego szeregu

Wykres 27. Wynik obliczeń funkcji autocor.m dla wprowadzonego szeregu.

Otrzymane wartości powinny odpowiadać wynikom uzyskanym z arkuszy kalkulacyjnych używanych do tej pory.

Do stworzenia wykresu z otrzymanych danych potrzebna jest komenda plot.

plot (ans)

Komenda tworząca wykres w pakiecie Octave

Wykres 28. Komenda tworząca wykres w pakiecie Octave.

ans jest domyślną zmienna, skrótem od słowa answer (odpowiedź).

Poniżej otrzymany wykres autokorelacji.

Autokorelacja dla analizowanego szeregu. Wykres stworzony za pomocą pakietu Octave

Wykres 29. Autokorelacja dla analizowanego szeregu. Wykres stworzony za pomocą pakietu Octave.

Praktyczne przykłady zastosowania autokorelacji

Po skompletowaniu narzędzi do stworzenia wykresu autokorelacji, brakuje tylko kilku słów na temat jego interpretacji.

Dla opóźnienia równego 0 wartość współczynnika korelacji jest równa jeden, a cały wykres może zawierać się w przedziale od -1 do 1.

Poniżej został umieszczony wykres skumulowanej sumy losowych liczb o rozkładzie normalnym. Ponieważ jest to szereg, w którym nie istnieje żadna zależność pomiędzy kolejnymi danymi, można spodziewać się, że wykres autokorelacji będzie oscylował w okolicach 0.

Dla uzyskania szeregu użyłem następującej komendy w programie Octave:

a = cumsum(randn (10000,1));

Skumulowana suma liczb losowych o rozkładzie normalnym

Wykres 30. Skumulowana suma liczb losowych o rozkładzie normalnym.

Dla lepszego zobrazowania sporządziłem wykres dla 10 szeregów otrzymanych w podobny sposób oraz ich średniej oznaczonej kolorem czarnym.

Autokorelacja dla dziesięciu skumulowanych szeregów liczb losowych oraz średnia (kolor czarny

Wykres 31. Autokorelacja dla dziesięciu skumulowanych szeregów liczb losowych oraz średnia (kolor czarny).

Jak widać na wykresie po osiągnięciu wartości bliskich zeru wykres oscyluje w zakresie -0.2 i 0.2. Aby można było mówić o szeregu, w którym istnieje zależność pomiędzy poszczególnymi obserwacjami powinniśmy zaobserwować wyraźny szczyt o wartości przynajmniej 0.3 następujący po osiągnięciu lokalnego minimum. (Przykład szeregu plam słonecznych zamieszczony poniżej pokaże takie zachowanie).

Kolejną uwagą jest fakt liczebności danych i wiarygodności wykresu. Ze sposobu obliczania współczynników korelacji tworzących wykres autokorelacji wynika, że wraz ze zwiększającym się opóźnieniem maleje liczba danych na podstawie których został on obliczony. Można było to zauważyć w przedstawionym arkuszu kalkulacyjnym. Tym samym wraz ze wzrostem opóźnienia wiarygodność obliczeń maleje. Skutkuje to między innymi faktem, że jeżeli szereg nie będzie zawierał przynajmniej kilku pełnych długości cyklu, który staramy się odkryć lub potwierdzić, może nam nie udać się zobaczyć tej zależności na wykresie autokorelacji. Jeżeli wracając do naszego przykładu nie zobaczyliśmy powrotu powyżej wartości 0.3-0.4 do wartości opóźnienia odpowiadającej połowie całkowitej liczebności szeregu, możemy spokojnie uznać szereg za losowy, lub jeśli wiemy, że tak nie jest poszukać innego narzędzia do analizy.

Szeregiem, dla którego sporządzę wykres korelacji będą miesięczne obserwacje plam na słońcu z lat 1749 - 1983. Został on pobrany ze strony http://www.robjhyndman.com/TSDL i zapisany odpowiednio w formacie odczytywanym przez OpenOffice oraz Octave.

Hyndman, R.J. (n.d.) Time Series Data Library, http://www.robhyndman.info/TSDL. Accessed on 25/09/2008.

Analizowany szereg plam słonecznych możemy zobaczyć wpisując w programie Octave polecenie: (oczywiście należy wcześniej umieścić plik sunspotmo.oct w katalogu roboczym programu).

load sunspotmo.oct

plot (sunspotmo)

Liczba plam na słońcu w latach 1749 - 1983.

Wykres 32. Liczba plam na słońcu w latach 1749 - 1983.

Widać wyraźnie okresowe zachowania. Spróbujemy obliczyć jak długo trwa pojedynczy cykl. Wpisując

autocor (sunspotmo,500); plot (ans)

tworzymy wykres autokorelacji o długości opóźnienia do 500 danych.

Autokorelacja dla szeregu plam na słońc

Wykres 33. Autokorelacja dla szeregu plam na słońcu.

Siatka została dobrana w ten sposób, aby odpowiadać ekstremom na wykresie autokorelacji.

Sprawdzenie dla jakiej wartości opóźnienia przypada szczyt po pierwszym minimum na wykresie autokorelacji.

Wykres 34. Sprawdzenie dla jakiej wartości opóźnienia przypada szczyt po pierwszym minimum na wykresie autokorelacji.

Pierwsze maksimum przypada dla opóźnienia o długości 126 danych. Ponieważ dane były gromadzone w odstępach miesięcznych, 126 miesięcy odpowiada okresowi 10.5 lat. Rzeczywista długość cyklu to 131 miesięcy, odpowiadająca okresowi 11 lat, a wahania w długości cyklu wynoszą +- 14 miesięcy.

Długość szeregu plam słonecznych, dla którego tworzyliśmy wykres autokorelacji to ponad 2500 danych. W całym szeregu jest ponad 10 pełnych cykli, i pierwszy szczyt po osiągnięciu minimum - 0.4 jest wyraźnie widoczny i osiąga wartość bliską 0.55. Należy jednak zauważyć, że szereg plam słonecznych jest podręcznikowym przykładem i wyznacza w pewnym sensie maksymalne możliwości narzędzia jakim jest autokorelacja.

Po oszacowaniu długości cyklu, dla pełnego obrazu możemy sporządzić wykres średniej kroczącej - poniżej dla długości 64 danych. Wygładza on pierwotne dane, dzięki czemu możemy wyraźnie zobaczyć 11 letni cykl.

Cykl plam słonecznych po wygładzeniu przez średnią kroczącą o długości 64 danych.

Wykres 35. Cykl plam słonecznych po wygładzeniu przez średnią kroczącą o długości 64 danych.

Dziękuję za czas poświęcony na przeczytanie i życzę powodzenia w samodzielnej pracy.

(powrót do menu)