
99
99
7.5 ピアソンの相関
なる符号を持つ場合は負の数になります。そのため、積の和が、
X
と
Y
が一緒に変
動するかどうかを示す尺度になります。
共分散とはこの偏差の積の平均です。
Cov(X, Y )
=
1
−
n
∑
dx
i
dy
i
ここで
n
は
2
つの数列の長さです(両者は同じ長さを持つ必要があります)。
線形代数を勉強していれば、
Cov
が偏差ベクトルの内積(ドット積)をその長さ
で割ったものだとわかるでしょう。したがって、
Cov
は
2
つのベクトルが同じ方
向なら最大で、直交していれば
0
、反対の方向を向いているなら負になります。
thinkstats2
は、
np.dot
を使って
Cov
を効率的に実装しています。
def Cov(xs, ys, meanx=None, meany=None):
xs = np.asarray(xs)
ys = np.asarray(ys)
if meanx is None:
meanx = np.mean(xs)
if meany is None:
meany = np.mean(ys)
cov = np.dot(xs-meanx, ys-meany) / len(xs)
return cov
デフォルトでは、
Cov
は標本平均からの偏差を計算しますが、既知の平均を与える
こともできます。
xs
と
ys
が
Python
のシーケンスなら、
np.asarray
が
NumPy
配列
に変換してくれます。すでに
NumPy
配列なら
np.asarray
は何もしません。
共分散のこの実装は、説明のために単純化しています ...