共分散について
最近はめっぽう数学にはまっている。
もう少ししたら、パイトーチのSSDに進むが、
なにぶん、ここまで数学を全くやってこなかったので、
年末年始の休みでいっきに数学の基礎を知ろうとしている段階だ。
あぁ、早くコード書きたい笑
共分散
聞きなれない言葉だが、
共分散とは、2組のデータの関係性を表現する数値のこと。
あまり初めはぴんと来なかったが、例を出すと理解が深まった。
では、どうやって求めるのか?
初めにテキストで書いておく、
①まずは、それぞれ数値のへいきんをとる。
②それぞれの数値を平均点と引き算し、それぞれ対応する数値をかける
③かけたものを全て足算して、最後にまた平均値をとる
この結果が
正:Xは大きい場合、Yも大きく、XがちいさければYも小さい
0ないし0に近い:XとYはあまり関係がない
負:Xが大きかったらYが小さく、Xが小さかったら、Yが大きい傾向にある
では、例を出す。
国語の点数(X)と数学の点数(Y)がそれぞれ下記の通りだったとしよう。
X=50、70、40、60、80
Y=60、80、50、50、70
そうすると結果が正の数値であったため、Xが大きければ、Yも大きく、
Xが小さければ、Yも小さくなる、という傾向にあることが分かった。
import numpy as np import matplotlib.pyplot as plt x = np.array([50, 70, 40, 60, 80]) # 数学の点数 y = np.array([60, 80, 50, 50, 70]) # 英語の点数 z = np.array([60, 40, 60, 40, 30]) # 国語の点数 cov_xy = np.average((x-np.average(x))*(y-np.average(y))) print("cov_xy", cov_xy) cov_xz = np.average((x-np.average(x))*(z-np.average(z))) print("cov_xz", cov_xz) plt.scatter(x, y, marker="*", label="xy") plt.scatter(x, z, marker="+", label="xz") plt.legend() plt.show()