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