標準偏差

提供: MonoBook
ナビゲーションに移動 検索に移動

標準偏差(ひょうじゅんへんさ、standard deviation、std)とは、データの散らばっている範囲の中心のことである。

標準偏差は平均と共によく使われる指標である。

一般的な分布ではデータの9割(±5%=95%)は相加平均を中心として、標準偏差の約2倍(1.96倍)の範囲内に収まる。この状態は「正規分布」と呼ばれる。

逆をいえばデータの1割以上が範囲外の場合は、そもそもデータ数が足りておらず、統計もクソもない状態であるといえる。そのような状態にも関わらず、あえて正規分布をもちいた「現実とは乖離した数値」を提示し、よくわかっていない一般人を、煽り、騙す、という詐欺師の手法なども有名なので数字のマジックには注意しよう。

計算式

  • データの平均を求める
  • 各データと平均の差の2乗を求め、足していく
  • 要素数で割った平方根を求める
C#
// データ
var array = new [] { 1, 2, 3, 4, 5 };

// データの平均
var mean = array.Average();

// 各データと平均の差の2乗を足していく
var sum = 0;
for (int i = 0; i < array.Length; i++) {
    sum += Math.Pow(array[i] - mean, 2);
}

// データの要素数で割り、その平方根を取ると標準偏差になる
var std = Math.Sqrt( sum / array.Length );

加算している部分はLINQを使うと1行で書けます。

// データ
var array = new [] { 1, 2, 3, 4, 5 };

// データの平均
var mean = array.Average();

// 各データと平均の差の2乗を足していく
var sum = array.Sum(d => Math.Pow(d - average, 2));

// データの要素数で割り、その平方根を取ると標準偏差になる
var std = Math.Sqrt( sum / array.Length );

NuGetにあるMath.Net Numericsを使えば何も考える必要はありません。

using MathNet.Numerics.Statistics;
var array = new [] { 1, 2, 3, 4, 5 };
var std = array.StandardDevaton();

関連項目