In [1]:
#englishとmathという二つのデータを用意する。
english = [50, 60, 70, 80, 90]
math = [40, 70, 90, 60, 100]

#相関係数を求めるためにはまずはそれぞれの平均を求める。

english_avg = sum(english) / len(english)
math_avg = sum(math) / len(math)

print("英語の平均点は",english_avg,"点です")
print("数学の平均点は",math_avg,"点です")

#偏差(数値 - 平均値)を求める。

english_dev = []

for e in english:
    e_dev = e - english_avg
    english_dev.append(e_dev)
print("英語の偏差=",english_dev)

math_dev = []

for m in math:
    m_dev = m - math_avg
    math_dev.append(m_dev)
print("数学の偏差=",math_dev)

#分散(偏差の2乗の平均)を求める。

english_d = []

for e in english_dev:
    e_dis = e ** 2
    english_d.append(e_dis)
    english_dis = sum(english_d) / len(english_d)
    
print("英語の分散=",english_dis)

math_d = []

for m in math_dev:
    m_dis = m ** 2
    math_d.append(m_dis)
    math_dis = sum(math_d) / len(math_d)
print("数学の分散=",math_dis)

#標準偏差(分散の正の平方根)を求める。
import numpy as np
english_std = np.std(english_dev)
print("英語の標準偏差は",english_std)

math_std = np.std(math_dev)
print("数学の標準偏差は",math_std)

#共分散(偏差の積の平均値)を求める。

cov_mul = [e * m for (e, m) in zip(english_dev, math_dev)]
print("英語と数学の点数の積=",cov_mul)
cov = sum(cov_mul) / len(cov_mul)
print("共分散=",cov)

#相関係数(共分散を2種類のデータから求めた標準偏差で割る)を求める。

cor = cov / (english_std * math_std)
print("2つのデータ(英語と数学の点数)の相関係数=", cor)
英語の平均点は 70.0 点です
数学の平均点は 72.0 点です
英語の偏差= [-20.0, -10.0, 0.0, 10.0, 20.0]
数学の偏差= [-32.0, -2.0, 18.0, -12.0, 28.0]
英語の分散= 200.0
数学の分散= 456.0
英語の標準偏差は 14.142135623730951
数学の標準偏差は 21.354156504062622
英語と数学の点数の積= [640.0, 20.0, 0.0, -120.0, 560.0]
共分散= 220.0
2つのデータ(英語と数学の点数)の相関係数= 0.728492796385774
In [ ]: