パンダでローリング相関を計算する方法: 例付き


ローリング相関は、スライディング ウィンドウにわたる 2 つの時系列間の相関です。このタイプの相関関係の利点の 1 つは、2 つの時系列間の相関関係を経時的に視覚化できることです。

このチュートリアルでは、Python で pandas DataFrame のローリング相関を計算して視覚化する方法について説明します。

パンダでローリング相関を計算する方法

15 か月間で 2 つの異なる製品 ( xy ) の販売総数を表示する次のデータ フレームがあるとします。

 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() 関数の完全なドキュメントはここにあります。

追加リソース

R でスライド相関を計算する方法
Excel でローリング相関を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です