Jak obliczyć korelację krzyżową w pythonie
Korelacja krzyżowa to sposób pomiaru stopnia podobieństwa między szeregiem czasowym a opóźnioną wersją innego szeregu czasowego.
Ten typ korelacji jest przydatny do obliczeń, ponieważ może nam powiedzieć, czy wartości w jednym szeregu czasowym przewidują przyszłe wartości w innym szeregu czasowym. Innymi słowy, może nam powiedzieć, czy jeden szereg czasowy jest wiodącym wskaźnikiem dla innego szeregu czasowego.
Ten typ korelacji jest stosowany w wielu różnych dziedzinach, w tym:
Firmy: Wydatki na marketing są często uważane za wiodący wskaźnik przyszłych przychodów firmy. Na przykład, jeśli firma wydaje niezwykle dużą kwotę na marketing w jednym kwartale, wówczas całkowite przychody powinny być wysokie x kwartałów później.
Gospodarka: Wskaźnik zaufania konsumentów (CCI) jest uważany za wiodący wskaźnik produktu krajowego brutto (PKB) danego kraju. Na przykład, jeśli CCI jest wysoki w danym miesiącu, PKB prawdopodobnie będzie wyższy x miesięcy później.
Poniższy przykład pokazuje, jak obliczyć korelację krzyżową między dwoma szeregami czasowymi w języku Python.
Przykład: Jak obliczyć korelację krzyżową w Pythonie
Załóżmy, że mamy w Pythonie następujące szeregi czasowe, które pokazują całkowite wydatki marketingowe (w tysiącach) dla określonej firmy, a także całkowity przychód (w tysiącach) przez 12 kolejnych miesięcy:
import numpy as np #define data marketing = n.p. array ([3, 4, 5, 5, 7, 9, 13, 15, 12, 10, 8, 8]) income = np. array ([21, 19, 22, 24, 25, 29, 30, 34, 37, 40, 35, 30])
Korelację krzyżową dla każdego opóźnienia pomiędzy dwoma szeregami czasowymi możemy obliczyć za pomocą funkcji ccf() z pakietu statsmodels w następujący sposób:
import statsmodels. api as sm
#calculate cross correlation
sm. tsa . stattools . ccf (marketing, revenue, adjusted= False )
array([ 0.77109358, 0.46238654, 0.19352232, -0.06066296, -0.28159595,
-0.44531104, -0.49159463, -0.35783655, -0.15697476, -0.03430078,
0.01587722, 0.0070399 ])
Oto jak zinterpretować ten wynik:
- Korelacja krzyżowa przy opóźnieniu 0 wynosi 0,771 .
- Korelacja krzyżowa przy opóźnieniu 1 wynosi 0,462 .
- Korelacja krzyżowa przy opóźnieniu 2 wynosi 0,194 .
- Korelacja krzyżowa przy opóźnieniu 3 wynosi -0,061 .
I tak dalej.
Należy zauważyć, że korelacja między tymi dwoma szeregami czasowymi staje się coraz mniej pozytywna w miarę wzrostu liczby opóźnień. To mówi nam, że wydatki marketingowe w danym miesiącu dość dobrze prognozują przychody miesiąc lub dwa później, ale nie pozwalają przewidzieć przychodów po upływie dwóch miesięcy.
Ma to intuicyjny sens: spodziewalibyśmy się, że wysokie wydatki marketingowe w danym miesiącu będą przewidywać wzrost przychodów w ciągu najbliższych dwóch miesięcy, ale niekoniecznie wzrost przychodów za kilka miesięcy.
Dodatkowe zasoby
Jak obliczyć autokorelację w Pythonie
Jak obliczyć częściową korelację w Pythonie
Jak obliczyć korelację punktowo-biseryjną w Pythonie