■分散
データの散らばりの大きさを表す指標
(例)
データ:
「1, 2, 3, 4, 5」
平均:
(1 + 2 + 3 + 4 + 5) / 5 = 3
(平均 – 各データの値)の2乗:・・・・・・①
(3 – 1) 2 = 4
(3 – 2) 2 = 1
(3 – 3) 2 = 0
(3 – 4) 2 = 1
(3 – 5) 2 = 4
分散:上記①の和の平均
(4 + 1 + 0 + 1 + 4) / 5 = 2
■標準偏差
分散の正の平方根
(例)
標準偏差:(上記分散の値の平方根を算出する)
√2 = 1.41421356・・・・・・
■サンプルコード
# -*- Coding: UTF-8 -*-
import math
# 分散を算出する関数
def CalVariance(sample_data):
#平均を算出
average_val = sum(sample_data) / len(sample_data)
# 合計値の初期化
total = 0
# データ分処理を繰り返す
for i in sample_data:
#(平均 - 各データの値)の2乗の和を求める・・・・・・①
total = total + ((average_val - i) ** 2)
# 分散:上記①の平均
variance_val = total / len(sample_data)
return variance_val
# 標準偏差を算出する関数
def CalStandardDev(sample_data):
# 標準偏差:分散の正の平方根
sd_val = math.sqrt(CalVariance(sample_data))
return sd_val
############
# メイン処理
############
# データをリストに格納
sample_data = [100, 135, 98, 78, 231, 187, 164, 122]
variance_val = CalVariance(sample_data)
sd_val = CalStandardDev(sample_data)
print("分散:" + str(variance_val))
print("標準偏差:" + str(sd_val))
■実行結果
分散:2327.484375
標準偏差:48.24400869538103
■Numpyを使用して算出する
# -*- Coding: UTF-8 -*-
import numpy as np
# データをリストに格納
sample_data = [100, 135, 98, 78, 231, 187, 164, 122]
#numpyで算出
variance_val = np.var(sample_data)
sd_val = np.std(sample_data)
print("分散:" + str(variance_val))
print("標準偏差:" + str(sd_val))
■実行結果
分散:2327.484375
標準偏差:48.24400869538103
コメント