Python で相互相関を計算する方法


相互相関は、ある時系列と、別の時系列の時間差バージョンとの間の類似性の程度を測定する方法です。

このタイプの相関関係は、ある時系列の値が別の時系列の将来の値を予測できるかどうかを知ることができるため、計算に役立ちます。言い換えれば、ある時系列が別の時系列の先行指標であるかどうかを知ることができます。

このタイプの相関関係は、次のようなさまざまな分野で使用されます。

ビジネス:マーケティング支出は、将来のビジネス収益の先行指標とみなされることがよくあります。たとえば、企業がある四半期にマーケティングに異常に多額の費用を費やした場合、 x四半期後の総収益は高くなるはずです。

経済:消費者信頼感指数 (CCI) は、国の国内総生産 (GDP) の先行指標とみなされます。たとえば、特定の月の CCI が高い場合、 xか月後の GDP は高くなる可能性があります。

次の例は、Python で 2 つの時系列間の相互相関を計算する方法を示しています。

例: Python で相互相関を計算する方法

Python で、連続 12 か月間の特定の企業の総マーケティング支出 (千単位) と総収益 (千単位) を示す次の時系列があるとします。

 import numpy as np

#define data 
marketing = n.p. array ([3, 4, 5, 5, 7, 9, 13, 15, 12, 10, 8, 8])
income = np. array ([21, 19, 22, 24, 25, 29, 30, 34, 37, 40, 35, 30])

次のようにstatsmodels パッケージccf()関数を使用して、2 つの時系列間の各ラグの相互相関を計算できます。

 import statsmodels. api as sm

#calculate cross correlation
sm. tsa . stattools . ccf (marketing, revenue, adjusted= False )

array([ 0.77109358, 0.46238654, 0.19352232, -0.06066296, -0.28159595,
       -0.44531104, -0.49159463, -0.35783655, -0.15697476, -0.03430078,
        0.01587722, 0.0070399 ])

この出力を解釈する方法は次のとおりです。

  • ラグ 0 での相互相関は0.771です。
  • ラグ 1 での相互相関は0.462です。
  • ラグ 2 での相互相関は0.194です。
  • ラグ 3 での相互相関は-0.061です。

等々。

ラグの数が増加するにつれて、2 つの時系列間の相関関係が正でなくなることに注意してください。これは、特定の月のマーケティング支出は 1 ~ 2 か月後の収益をかなり予測しますが、2 か月以降の収益は予測できないことを示しています。

これは直感的に理にかなっています。特定の月に多額のマーケティング支出があれば、次の 2 か月間で収益が増加すると予想されますが、必ずしも数か月後に収益が増加するとは限りません。

追加リソース

Python で自己相関を計算する方法
Pythonで偏相関を計算する方法
Python で点と双系列の相関を計算する方法

コメントを追加する

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