In [11]:
#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_dev1 = english[0] - english_avg
english_dev2 = english[1] - english_avg
english_dev3 = english[2] - english_avg
english_dev4 = english[3] - english_avg
english_dev5 = english[4] - english_avg

print("Aさんの英語の点数は",english[0],"点です。よって偏差は",english_dev1,"です。")
print("Bさんの英語の点数は",english[1],"点です。よって偏差は",english_dev2,"です。")
print("Cさんの英語の点数は",english[2],"点です。よって偏差は",english_dev3,"です。")
print("Dさんの英語の点数は",english[3],"点です。よって偏差は",english_dev4,"です。")
print("Eさんの英語の点数は",english[4],"点です。よって偏差は",english_dev5,"です。")

math_dev1 = math[0] - math_avg
math_dev2 = math[1] - math_avg
math_dev3 = math[2] - math_avg
math_dev4 = math[3] - math_avg
math_dev5 = math[4] - math_avg

print("Aさんの英語の点数は",math[0],"点です。よって偏差は",math_dev1,"です。")
print("Bさんの英語の点数は",math[1],"点です。よって偏差は",math_dev2,"です。")
print("Cさんの英語の点数は",math[2],"点です。よって偏差は",math_dev3,"です。")
print("Dさんの英語の点数は",math[3],"点です。よって偏差は",math_dev4,"です。")
print("Eさんの英語の点数は",math[4],"点です。よって偏差は",math_dev5,"です。")

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

english_dis = ((english_dev1**2) + (english_dev2**2) + (english_dev3**2) + (english_dev4**2) + (english_dev5**2)) / len(english)
print("英語の分散(英語の偏差の二乗を平均した値)は",english_dis)

math_dis = ((math_dev1**2) + (math_dev2**2) + (math_dev3**2) + (math_dev4**2) + (math_dev5**2)) / len(math)
print("数学の分散(数学の偏差の二乗を平均した値)は",math_dis)

#標準偏差(分散の正の平方根)を求める。
import numpy as np
english_sum_dis = [english_dev1, english_dev2, english_dev3, english_dev4, english_dev5]
english_std = np.std(english_sum_dis)
math_sum_dis = [math_dev1, math_dev2, math_dev3, math_dev4, math_dev5]
math_std = np.std(math_sum_dis)
print("英語の標準偏差は",english_std)
print("数学の標準偏差は",math_std)

#共分散(偏差の積の平均値)を求める。
cov_a = english_dev1 * math_dev1
cov_b = english_dev2 * math_dev2
cov_c = english_dev3 * math_dev3
cov_d = english_dev4 * math_dev4
cov_e = english_dev5 * math_dev5
sum_cov = [cov_a, cov_b, cov_c, cov_d, cov_e]
cov_total = sum(sum_cov) / len(sum_cov)
print("Aさんの偏差の積は",cov_a)
print("Bさんの偏差の積は",cov_b)
print("Cさんの偏差の積は",cov_c)
print("Dさんの偏差の積は",cov_d)
print("Eさんの偏差の積は",cov_e)
print("よって共分散は",cov_total)

#相関係数(共分散を2種類のデータから求めた標準偏差で割る)を求める。
cor = cov_total / (english_std * math_std)
print("2つのデータ(英語と数学の点数)の相関係数は",cor,"です")
英語の平均点は 70.0 点です
数学の平均点は 72.0 点です
Aさんの英語の点数は 50 点です。よって偏差は -20.0 です。
Bさんの英語の点数は 60 点です。よって偏差は -10.0 です。
Cさんの英語の点数は 70 点です。よって偏差は 0.0 です。
Dさんの英語の点数は 80 点です。よって偏差は 10.0 です。
Eさんの英語の点数は 90 点です。よって偏差は 20.0 です。
Aさんの英語の点数は 40 点です。よって偏差は -32.0 です。
Bさんの英語の点数は 70 点です。よって偏差は -2.0 です。
Cさんの英語の点数は 90 点です。よって偏差は 18.0 です。
Dさんの英語の点数は 60 点です。よって偏差は -12.0 です。
Eさんの英語の点数は 100 点です。よって偏差は 28.0 です。
英語の分散(英語の偏差の二乗を平均した値)は 200.0
数学の分散(数学の偏差の二乗を平均した値)は 456.0
英語の標準偏差は 14.142135623730951
数学の標準偏差は 21.354156504062622
Aさんの偏差の積は 640.0
Bさんの偏差の積は 20.0
Cさんの偏差の積は 0.0
Dさんの偏差の積は -120.0
Eさんの偏差の積は 560.0
よって共分散は 220.0
2つのデータ(英語と数学の点数)の相関係数は 0.728492796385774 です
In [33]:
#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 [40]:
#englishとmathという二つのデータを用意する。
english = [8480000, 8180000, 7450000, 6160000, 5450000, 5200000, 5170000]
math = [7092624330, 6957972811, 5439986693, 9148504441, 1978749505, 8175382179, 5745007731]

%matplotlib inline
import matplotlib.pyplot as plt
plt.scatter(english,math)
plt.show()

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

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)
英語の平均点は 6584285.714285715 点です
数学の平均点は 6362603955.714286 点です
英語の偏差= [1895714.2857142854, 1595714.2857142854, 865714.2857142854, -424285.71428571455, -1134285.7142857146, -1384285.7142857146, -1414285.7142857146]
数学の偏差= [730020374.2857141, 595368855.2857141, -922617262.7142859, 2785900485.285714, -4383854450.714286, 1812778223.2857141, -617596224.7142859]
英語の分散= 1753224489795.9185
数学の分散= 4.62651825381968e+18
英語の標準偏差は 1324093.8372320589
数学の標準偏差は 2150934274.639669
英語と数学の点数の積= [1383910052395918.0, 950038587648775.1, -798722944578367.2, -1182017777328368.0, 4972543476953063.0, -2509402997662653.5, 873457517810204.5]
共分散= 527115130748367.44
2つのデータ(英語と数学の点数)の相関係数= 0.18508003737125509
In [36]:
%matplotlib inline
 
import numpy as np
import matplotlib.pyplot as plt
 
# 乱数を生成
x = np.random.rand(100)
y = np.random.rand(100)
 
# 散布図を描画
plt.scatter(x, y)
plt.show()
In [ ]: