共分散と相関係数

共分散とはxの偏差とyの偏差の積の平均値
一方が増加すると一方も増加するのが正の相関
一方が増加すると一方は減少するのが負の相関
0に近づくほど相関は弱い

x=[3, 8, 9, 7, 4, 5, 8, 10, 9, 7]
y=[4, 6, 8, 4, 5, 4, 7,   9, 7, 6]
xの平均7
yの平均6
xの偏差=[-4,1,2,0,-3,-2,1,3,2]
yの偏差=[-2,0,2,-2,-1,-2,1,3,1]

xの偏差の2乗=[16,1,4,0,9,4,1,9,4]
xの標準偏差=2.19   48/10(xの偏差の2乗の和/10)の平行根

yの偏差の2乗=[4,0,4,4,1,4,1,9,1]
yの標準偏差=1.69  28(yの偏差の2乗の和/10)の平行根

共分散
xの偏差*yの偏差=[8, 0, 4, 0, 3, 4, 1, 9, 2, 0]
xの偏差*yの偏差の和=31
31/10=3.1

相関係数
共分散を標準化した値
共分散/(xの標準偏差*yの標準偏差)=0.84
計算を簡略化すると(10で割っているのを打ち消す)
31/(48の平行根*28の平行根)

pythonで
>>> x = np.array([3, 8, 9, 7, 4, 5, 8, 10, 9, 7])
>>> y = np.array([4, 6, 8, 4, 5, 4, 7, 9, 7, 6])

平均
>>> x.mean()
7.0
>>> y.mean()
6.0

偏差
>>> [i-x.mean() for i in x]
[-4.0, 1.0, 2.0, 0.0, -3.0, -2.0, 1.0, 3.0, 2.0, 0.0]
>>> [i-y.mean() for i in y]
[-2.0, 0.0, 2.0, -2.0, -1.0, -2.0, 1.0, 3.0, 1.0, 0.0]

分散
>>> np.var(x)
4.7999999999999998
>>> np.var(y)
2.7999999999999998

標準偏差
>>> x.std()
2.1908902300206643
>>> y.std()
1.6733200530681511

共分散
>>> np.cov(x,y, bias=True)
array([[ 4.8,  3.1],
       [ 3.1,  2.8]])

相関係数
>>> np.corrcoef(x,y)
array([[ 1.        ,  0.84559432],
       [ 0.84559432,  1.        ]])