自己相関関数と周期性解析(2)
こちらでは自己相関関数について簡単な紹介を書きました。実装してみたのと、スピアマンやケンドールの順位相関係数でも自己相関関数(コレオグラム)ライクな表示をしてみています。
順位相関係数で自己相関
自己相関関数とはこちらに示すように、時系列データに対しLag#分ずらして相関係数を計算するものです。周期性などがわかったりします。
例えば下記のようなデータの自己相関関数をプロットすると
周期4と8の成分がある傾向がわかります。点線は95%の棄却限界です。
通常、相関係数というとピアソンの積率相関係数を指しますが、スピアマンやケンドールの順位相関係数というものもあります。順位に基づいた統計量なので、外れ値や正規性の仮定についてロバストです。
スピアマンの順位相関係数で自己相関を計算した結果と
ケンドールの順位相関係数で自己相関を計算した結果がこちらです。
全て重ねると下図のようになり、どれも似たような感じです。ややケンドールの順位相関係数が鈍感でしょうか。
外れ値を含む時系列データ
今度は外れ値を含むデータに適用してみます。先ほどと同じデータを用いてt=4付近にx(t)=100の外乱を挿入しています。下図の通りです。
通常の自己相関関数
スピアマンの順位相関関数ベース
ケンドールの順位相関関数ベース
全て重ねた結果
大きなノイズを加えたので、途端に通常の自己相関関数は相関係数が小さくなってnoisyになっています。ノイズの多いデータを解析する場合は、やはり順位統計量ベースの方がロバストに思えます。
まとめ
順位相関係数ベースで自己相関関数を計算してみました。実務の上で以前からこれを計算したかったのですが、簡単に計算してくれるものがなく実装がてら比較してみました。
こちらのツールに実装しています。メニューバー"File">Open File (Auto correlation)からヘッダ1行系列名で数値縦書きのテキストファイルを読み込ませる。メニューバー"Setting">optionからACFタブで各相関係数の表示/非表示切り替えです。