Hoe kruiscorrelatie in python te berekenen
Kruiscorrelatie is een manier om de mate van gelijkenis tussen een tijdreeks en een vertraagde versie van een andere tijdreeks te meten.
Dit type correlatie is handig om te berekenen, omdat het ons kan vertellen of waarden in de ene tijdreeks voorspellend zijn voor toekomstige waarden in een andere tijdreeks. Met andere woorden, het kan ons vertellen of de ene tijdreeks een voorlopende indicator is voor een andere tijdreeks.
Dit type correlatie wordt op veel verschillende gebieden gebruikt, waaronder:
Bedrijven: Marketinguitgaven worden vaak beschouwd als een voorlopende indicator van toekomstige bedrijfsinkomsten. Als een bedrijf bijvoorbeeld in een kwartaal een ongewoon hoog bedrag aan marketing uitgeeft, dan zou de totale omzet x kwartalen later hoog moeten zijn.
Economie: De Consumer Confidence Index (CCI) wordt beschouwd als een voorlopende indicator van het bruto binnenlands product (bbp) van een land. Als de CCI bijvoorbeeld in een bepaalde maand hoog is, zal het bbp waarschijnlijk x maanden later hoger zijn.
Het volgende voorbeeld laat zien hoe u de kruiscorrelatie tussen twee tijdreeksen in Python kunt berekenen.
Voorbeeld: kruiscorrelatie berekenen in Python
Laten we zeggen dat we de volgende tijdreeksen in Python hebben die de totale marketinguitgaven (in duizenden) voor een bepaald bedrijf weergeven, evenals de totale inkomsten (in duizenden) gedurende 12 opeenvolgende maanden:
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])
We kunnen de kruiscorrelatie voor elke vertraging tussen de twee tijdreeksen als volgt berekenen met behulp van de ccf()- functie uit het statsmodels-pakket :
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 ])
U kunt deze uitvoer als volgt interpreteren:
- De kruiscorrelatie bij lag 0 is 0,771 .
- De kruiscorrelatie bij lag 1 is 0,462 .
- De kruiscorrelatie bij lag 2 is 0,194 .
- De kruiscorrelatie bij lag 3 is -0,061 .
Enzovoort.
Merk op dat de correlatie tussen de twee tijdreeksen steeds minder positief wordt naarmate het aantal vertragingen toeneemt. Dit vertelt ons dat de marketinguitgaven in een bepaalde maand behoorlijk voorspellend zijn voor de omzet één of twee maanden later, maar niet voor de omzet na twee maanden.
Dit is intuïtief logisch: we verwachten dat hoge marketinguitgaven in een bepaalde maand voorspellend zijn voor een omzetstijging in de komende twee maanden, maar niet noodzakelijkerwijs een omzetstijging over enkele maanden.
Aanvullende bronnen
Hoe autocorrelatie in Python te berekenen
Hoe gedeeltelijke correlatie in Python te berekenen
Hoe punt-biseriële correlatie in Python te berekenen