Hoe de rollende correlatie bij panda's te berekenen: met voorbeelden
Rolling correlaties zijn correlaties tussen twee tijdreeksen over een glijdend venster. Een van de voordelen van dit soort correlatie is dat u de correlatie tussen twee tijdreeksen in de loop van de tijd kunt visualiseren.
In deze zelfstudie wordt uitgelegd hoe u rollende correlaties voor een panda’s DataFrame in Python kunt berekenen en visualiseren.
Hoe rollende correlaties bij panda’s te berekenen
Stel dat we het volgende gegevensframe hebben dat het totale aantal verkochte producten voor twee verschillende producten ( x en y ) weergeeft over een periode van 15 maanden:
import pandas as pd import numpy as np #createDataFrame df = pd.DataFrame({'month': np. arange (1, 16), 'x': [13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20], 'y': [22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28]}) #view first six rows df. head () month xy 1 1 13 22 2 2 15 24 3 3 16 23 4 4 15 27 5 5 17 26 6 6 20 26
Om een rollende correlatie bij panda’s te berekenen, kunnen we de functie Rolling.corr() gebruiken.
Deze functie gebruikt de volgende syntaxis:
df[‚x‘].rolling(breedte).corr(df[‚y‘])
Goud:
- df: Naam van gegevensframe
- breedte: geheel getal dat de breedte van het venster voor glijdende correlatie specificeert
- x, y: de twee kolomnamen om de glijdende correlatie tussen te berekenen
U kunt deze functie als volgt gebruiken om de driemaandelijkse voortschrijdende correlatie van de omzet tussen product x en product y te berekenen:
#calculate 3-month rolling correlation between sales for x and y df[' x ']. rolling (3). corr (df[' y ']) 0 NaN 1 NaN 2 0.654654 3 -0.693375 4 -0.240192 5 -0.802955 6 0.802955 7 0.960769 8 0.981981 9 0.654654 10 0.882498 11 0.817057 12 -0.944911 13 -0.327327 14 -0.188982 dtype:float64
Deze functie retourneert de correlatie tussen de verkoop van twee producten in de afgelopen drie maanden. Bijvoorbeeld:
- De correlatie van de omzet in de maanden 1-3 was 0,654654 .
- De verkoopcorrelatie in de maanden 2-4 was -0,693375.
- De verkoopcorrelatie in de maanden 3-5 was -0,240192.
Enzovoort.
We kunnen deze formule eenvoudig aanpassen om de voortschrijdende correlatie voor een andere tijdsperiode te berekenen. De volgende code laat bijvoorbeeld zien hoe u de zesmaandelijkse voortschrijdende correlatie van de verkopen tussen de twee producten berekent:
#calculate 6-month rolling correlation between sales for x and y df[' x ']. rolling (6). corr (df[' y ']) 0 NaN 1 NaN 2 NaN 3 NaN 4 NaN 5 0.558742 6 0.485855 7 0.693103 8 0.756476 9 0.895929 10 0.906772 11 0.715542 12 0.717374 13 0.768447 14 0.454148 dtype:float64
Deze functie retourneert de correlatie tussen de twee productverkopen in de afgelopen zes maanden. Bijvoorbeeld:
- De correlatie van de omzet in de maanden 1-6 was 0,558742 .
- De verkoopcorrelatie in de maanden 2-7 was 0,485855.
- De verkoopcorrelatie in de maanden 3-8 was 0,693103.
Enzovoort.
Opmerkingen
Hier volgen enkele opmerkingen over de functies die in deze voorbeelden worden gebruikt:
- De breedte (dat wil zeggen het vervolgkeuzevenster) moet gelijk zijn aan of groter dan 3 om correlaties te kunnen berekenen.
- U kunt de volledige documentatie voor de functie Rolling.corr() hier vinden.
Aanvullende bronnen
Hoe de glijdende correlatie in R te berekenen
Hoe de Rolling Correlatie in Excel te berekenen