共分散とは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. ]])