相関係数とトレンド

相関係数とトレンドとの関係を考えてみる。

正相関ならトレンド的か?

時系列データにおいて、データの階差とその前のデータの階差とが正相関、つまり相関係数がプラスの場合、トレンド的と言えるだろうか。

また、逆にデータの階差とその前のデータの階差とが逆相関、つまり相関係数がマイナスの場合、平均回帰的と言えるだろうか。

この問いに対して何となく「そうだろう」と考えている人は少なくないのではないかと思われる。というか、私がそうだった(笑)。

ただ、共和分の時系列データは平均回帰的だが、必ずしも逆相関ではない。したがって、完全に対応しているわけではない。しかし、それでも対応しているケースが多いのではないかと私は考えていたのである。

y = sin(x)における相関係数

そういうケースが多いか少ないかということは置いておく。ここでは正相関であり、かつ平均回帰的であって、しかも、それが極端であるデータを作成してみる。これはいたって簡単で、「y = sin(x)」のデータを作成すればいいだけである。

先ず、データを作成して相関係数を見てみる。

In [1]:
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-360, 360, 1)
y = np.sin(x / 180 * np.pi)

diff = y[1:] - y[:-1]
diff0 = diff[1:]
diff1 = diff[:-1]
cor = np.corrcoef(diff1, diff0)[0, 1]
print('cor = ', cor)


cor =  0.999846842234


相関係数はほぼ1.0で、完全に近い正相関となっている。考えてみれば、これは当然である。sin(x)の向きはずっとプラスか、ずっとマイナスで、プラスからマイナス、またはマイナスからプラスに転じるのは頂点だけだからだ。

y = sin(x)のグラフ

では次に、同じデータを使ってグラフを作成して見てみる。

In [2]:
plt.plot(x, y, label='y = sin(x)')
plt.title('y = sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.xticks([-360, -270, -180, -90, 0, 90, 180, 270, 360])
plt.legend(loc='upper right')
plt.axvline(x=0.0, color='black')
plt.axhline(y=0.0, color='black')
plt.tight_layout()
plt.savefig('sinx.png', dpi=150)
plt.show()



高校数学でよく見かけるグラフだが、改めて見ると完全に平均回帰的である。-1で買い、+1で売れば百戦百勝だ。

相関係数とトレンドは別物

ほぼ完全な正相関でありながら完全に平均回帰的であるデータを作成できるということを考えると、相関係数とトレンド(あるいは平均回帰)は全くの別物と見たほうがいいだろう。

(2017/03/20更新)

コメント

非公開コメント