複数の時系列間の関係を見つける

Pythonで学ぶ時系列データの可視化

Thomas Vincent

Head of Data Science, Getty Images

2変数間の相関

  • 統計学において、相関係数は2変数間の関係の強さを示す指標です:
    • 関係が線形と考えられる変数には、ピアソンの係数を使用します
    • 関係が非線形と考えられる変数には、ケンドールのタウまたはスピアマン順位相関を使用します
Pythonで学ぶ時系列データの可視化

相関の計算

from scipy.stats.stats import pearsonr
from scipy.stats.stats import spearmanr
from scipy.stats.stats import kendalltau
x = [1, 2, 4, 7]
y = [1, 3, 4, 8]
pearsonr(x, y)
SpearmanrResult(correlation=0.9843, pvalue=0.01569)
spearmanr(x, y)
SpearmanrResult(correlation=1.0, pvalue=0.0)
kendalltau(x, y)
KendalltauResult(correlation=1.0, pvalue=0.0415)
Pythonで学ぶ時系列データの可視化

相関行列とは?

  • 3変数以上の相関係数を計算すると、相関行列が得られます
    • 範囲:[-1, 1]
    • 0:関係なし
    • 1:強い正の関係
    • -1:強い負の関係
Pythonで学ぶ時系列データの可視化

相関行列とは?

  • 相関行列は常に「対称」です
  • 対角要素の値は常に1になります
   x     y     z
x  1.00 -0.46  0.49
y -0.46  1.00 -0.61
z  0.49 -0.61  1.00
Pythonで学ぶ時系列データの可視化

Pandasによる相関行列の計算

corr_p = meat[['beef', 'veal','turkey']].corr(method='pearson')
print(corr_p)
          beef     veal     turkey
beef      1.000   -0.829    0.738
veal     -0.829    1.000   -0.768
turkey    0.738   -0.768    1.000
corr_s = meat[['beef', 'veal','turkey']].corr(method='spearman')
print(corr_s)
          beef     veal     turkey
beef      1.000   -0.812    0.778
veal     -0.812    1.000   -0.829
turkey    0.778   -0.829    1.000
Pythonで学ぶ時系列データの可視化

Pandasによる相関行列の計算

corr_mat = meat.corr(method='pearson')
Pythonで学ぶ時系列データの可視化

ヒートマップ

import seaborn as sns

sns.heatmap(corr_mat)
Pythonで学ぶ時系列データの可視化

ヒートマップ

相関行列のヒートマップ

Pythonで学ぶ時系列データの可視化

クラスターマップ

sns.clustermap(corr_mat)
Pythonで学ぶ時系列データの可視化

相関行列のクラスターマップ

Pythonで学ぶ時系列データの可視化

練習しましょう!

Pythonで学ぶ時系列データの可視化

Preparing Video For Download...