パンダでローリング相関を計算する方法: 例付き
ローリング相関は、スライディング ウィンドウにわたる 2 つの時系列間の相関です。このタイプの相関関係の利点の 1 つは、2 つの時系列間の相関関係を経時的に視覚化できることです。
このチュートリアルでは、Python で pandas DataFrame のローリング相関を計算して視覚化する方法について説明します。
パンダでローリング相関を計算する方法
15 か月間で 2 つの異なる製品 ( xとy ) の販売総数を表示する次のデータ フレームがあるとします。
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
pandas でローリング相関を計算するには、 Rolling.corr() 関数を使用できます。
この関数は次の構文を使用します。
df[‘x’].rolling(width).corr(df[‘y’])
金:
- df:データフレーム名
- width:スライディング相関のウィンドウの幅を指定する整数
- x、y:間のスライド相関を計算するための 2 つの列名
この関数を使用して、製品xと製品yの間の売上の 3 か月のローリング相関を計算する方法は次のとおりです。
#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
この関数は、過去 3 か月間の 2 つの製品の売上間の相関関係を返します。例えば:
- 1 ~ 3 か月間の売上の相関は0.654654でした。
- 2 ~ 4 か月間の売上相関は-0.693375 でした。
- 3 ~ 5 か月間の売上相関は-0.240192 でした。
等々。
この式を簡単に調整して、異なる期間のローリング相関を計算できます。たとえば、次のコードは、2 つの製品間の売上の 6 か月のローリング相関を計算する方法を示しています。
#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
この関数は、過去 6 か月間の 2 つの製品売上間の相関関係を返します。例えば:
- 1 か月目から 6 か月目の売上の相関は0.558742でした。
- 2 ~ 7 か月間の売上相関は0.485855 でした。
- 3 ~ 8 か月間の売上相関は0.693103 でした。
等々。
コメント
これらの例で使用されている関数に関するいくつかの注意事項を次に示します。
- 相関関係を計算するには、幅(つまり、ドロップダウン ウィンドウ) が 3 以上である必要があります。
- Rolling.corr() 関数の完全なドキュメントはここにあります。