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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *