Engineering Skills

製品開発エンジニアがデータ解析のノウハウを垂れ流します

自己相関関数と周期性解析

製品開発においては不具合、不良をつぶしていかなければなりません。そういったものの中には設計に起因して規則性を持つ場合があります。逆に言えば、規則性が理解できると設計との対応から不具合箇所を特定できる可能性があります。今回は規則性を持つデータから周期性を見つけられる自己相関関数について述べます。

自己相関関数

自己相関関数(ACF, auto correlated function)は時系列データの分析に用いられる手法です。冒頭で述べたように製造工程の規則的な傾向や、設計に起因した規則性なども簡単に調べらます。

説明のために、まず「自己」という文字を取り除いた「相関関数」を考えてみます。相関を確認するとき、よく用いられる指標は「相関係数」です。相関関数というのは相関係数が「何か」の関数になっているということです。さらに自己相関であるからには自分自身との相関を意味します。

解析対象は一次元のデータです。そして時系列であったり、データアドレス順であったり、物理配置順であったりと、並びに意味があるデータです。

f:id:OceanOne:20200413225825j:plain

このようなデータに対して自分自身との相関係数を考えます。相関係数は(xi, yi)といったペアが対象がですから、データ並び順をずらした自分自身とのペアを考えます。

f:id:OceanOne:20200413225840j:plain

このようにするとハッチングされたデータのペアの集合について相関係数が計算できます。一つだけずらす必要もないので、ずらし量の分だけ沢山の相関係数が計算できることになります。

f:id:OceanOne:20200413225851j:plain

上図のずらし量をラグ(Lag)と呼びます。自己相関関数は自己相関係数についてラグをパラメータとして関数としたものです。グラフ化するためにX軸にラグ、Y軸に自己相関関数をとったものを教科書的にはコレログラムと呼びます。Y軸は相関係数なので、コレログラムの縦軸は-1~+1になります。

自己相関関数の適用例

サンプルデータに自己相関関数を適用してみます。

 

(1) 周期8+正規分布ノイズ小

並び順に意味を持った変数t=0~127に対し、x(t)としてtを8で割った余り(t mod 8)に標準偏差1の正規分布乱数を加えたものをテストデータとします。上段のグラフにt - x(t)、下段に対象データのコレログラムを示します。以下、同じ形式でいくつかサンプル解析を示します。

f:id:OceanOne:20200413230455j:plain

上段のグラフではなんとなく周期8の規則性が見える程度ですが、コレログラムの方でははっきりと8の倍数で正の相関が強いことがわかります。周期8の依存性がある場合8の倍数周期も相関が高くなるので、周期的なピークの最大公約数が本当の周期性になります。

 

(2) 周期8+正規分布ノイズ大

今度は(1)と同様で標準偏差2の正規分布乱数を加えたテストデータです。

f:id:OceanOne:20200413231933j:plain

この例ではノイズが大きく上段のグラフでは周期性を読み取るのが辛くなってきますが、コレログラムは安定して8周期を捉えられています。

 

(3) 周期8+周期16+正規分布ノイズ大

今度は(2)のデータにさらにtを16で割った余り÷2([t mod 16]/2)を加えてみます。

f:id:OceanOne:20200413232546j:plain

上段を見ると16周期に見えますが、コレログラムでは確かに8周期と16周期で正の相関が強そうです。例(1)で倍数周期も見えてしまうと書きました。通常ラグが大きくなると対となるデータが減少するので相関係数のバラツキも 大きくなります。しかし、この例では明らかに8周期より16周期の方が相関が高いです。こういった例では16周期も意味があることが多いです。

まとめ

周期性を簡単に確認できる自己相関関数を紹介しました。この手法は信号解析や時系列解析で使われることが多いです。しかし応用範囲は広く、製造工程や製品不良の周期のチェックなど周期的なものなら全て対象に出来ます。(学問的にはウィーナー=ヒンチンの定理に出会えたりして、ちょっとした感動を体験できます。

またこちらでは順位相関係数を使って自己相関化数ライクなものをプロットしてみています。

たとえノイズだらけのデータであっても、データ数が膨大な場合はコレログラムを図示するだけで色々気付く事があります。盲目的に適用するだけでも、このアプローチを知っている人とそうでない人には大きな差がつくように思います。