So berechnen sie die rollierende korrelation bei pandas: mit beispielen


Rollierende Korrelationen sind Korrelationen zwischen zwei Zeitreihen über ein gleitendes Fenster. Einer der Vorteile dieser Art der Korrelation besteht darin, dass Sie die Korrelation zwischen zwei Zeitreihen im Zeitverlauf visualisieren können.

In diesem Tutorial wird erläutert, wie Sie rollierende Korrelationen für einen Pandas-DataFrame in Python berechnen und visualisieren.

So berechnen Sie rollierende Korrelationen bei Pandas

Angenommen, wir haben den folgenden Datenrahmen, der die Gesamtzahl der verkauften Produkte für zwei verschiedene Produkte ( x und y ) über einen Zeitraum von 15 Monaten anzeigt:

 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

Um eine rollierende Korrelation in Pandas zu berechnen, können wir die Funktion Rolling.corr() verwenden.

Diese Funktion verwendet die folgende Syntax:

df[‚x‘].rolling(width).corr(df[‚y‘])

Gold:

  • df: Name des Datenrahmens
  • width: Ganzzahl, die die Breite des Fensters für die gleitende Korrelation angibt
  • x, y: die beiden Spaltennamen, zwischen denen die gleitende Korrelation berechnet werden soll

So verwenden Sie diese Funktion, um die rollierende 3-Monats-Korrelation der Verkäufe zwischen Produkt x und Produkt y zu berechnen:

 #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

Diese Funktion gibt die Korrelation zwischen den Verkäufen zweier Produkte in den letzten 3 Monaten zurück. Zum Beispiel:

  • Die Korrelation der Verkäufe in den Monaten 1–3 betrug 0,654654 .
  • Die Umsatzkorrelation in den Monaten 2 bis 4 betrug -0,693375.
  • Die Umsatzkorrelation in den Monaten 3–5 betrug -0,240192.

Und so weiter.

Wir können diese Formel leicht anpassen, um die rollierende Korrelation für einen anderen Zeitraum zu berechnen. Der folgende Code zeigt beispielsweise, wie die rollierende 6-Monats-Korrelation der Verkäufe zwischen den beiden Produkten berechnet wird:

 #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

Diese Funktion gibt die Korrelation zwischen den beiden Produktverkäufen der letzten 6 Monate zurück. Zum Beispiel:

  • Die Korrelation der Verkäufe in den Monaten 1–6 betrug 0,558742 .
  • Die Umsatzkorrelation in den Monaten 2–7 betrug 0,485855.
  • Die Umsatzkorrelation in den Monaten 3–8 betrug 0,693103.

Und so weiter.

Kommentare

Hier einige Hinweise zu den in diesen Beispielen verwendeten Funktionen:

  • Um Korrelationen berechnen zu können, muss die Breite (d. h. das Dropdown-Fenster) gleich oder größer als 3 sein.
  • Die vollständige Dokumentation zur Funktion Rolling.corr() finden Sie hier .

Zusätzliche Ressourcen

So berechnen Sie die gleitende Korrelation in R
So berechnen Sie die rollierende Korrelation in Excel

Einen Kommentar hinzufügen

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