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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert