環境
macOS Sierra 10.12.6
ターミナル
Anaconda
Python 3.6.4
Anacondaをインストールすればデータサイエンスに必要なライブラリが使えるので、
ぜひインストールしましょう。
Anacondaのインストール手順についてはこちら
→MacにAnacondaをインストールする
「分散」を求める
分散を求めるPythonコードは以下のような感じです。
不偏分散です。
不偏分散はなぜn-1で割るのかということは割愛します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
from statistics import mean # mean()を使うためインポート def de_mean(x): # mean(x)はxの平均を出す # mean([1, 2, 3, 4, 5])は3となる x_bar = mean(x) # x_barにはxの平均が入る return [x_i - x_bar for x_i in x] # 要素と平均の差を格納したリストを返す def sum_of_squares(n): return sum(i**2 for i in n) # リストの要素の2乗を返す def variance(x): n = len(x) deviations = de_mean(x) # nではなくn-1で割る。詳しくは不偏分散で検索。 return sum_of_squares(deviations) / (n - 1) |
実行してみましょう。
1 2 3 4 5 6 7 8 9 |
>>> import variance >>> a_class = [150, 160, 170, 175, 180] >>> b_class = [130, 140, 150, 160, 170] >>> variance.variance(a_class) # A組の身長の分散 145.0 >>> variance.variance(b_class) # B組の身長の分散 250.0 # B組のほうが身長差のバラつきが大きい |