「標準偏差」の版間の差分

編集の要約なし
 
(同じ利用者による、間の6版が非表示)
3行目: 3行目:
標準偏差は[[平均]]と共によく使われる指標である。
標準偏差は[[平均]]と共によく使われる指標である。


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


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


== 計算式 ==
== 計算式 ==
* データの[[平均]]を求める
* データの[[平均]]を求める
* 各データと平均の差の2乗を求め、足していく
* 各データと平均の差の2乗を求め、足していく
* 要素数で割る
* 要素数で割った平方根を求める


; C#
; C#
16行目: 16行目:
// データ
// データ
var array = new [] { 1, 2, 3, 4, 5 };
var array = new [] { 1, 2, 3, 4, 5 };
// データの平均
// データの平均
var mean = array.Average();
var mean = array.Average();
// 各データと平均の差の2乗を足していく
// 各データと平均の差の2乗を足していく
var sum = 0;
var sum = 0;
23行目: 25行目:
     sum += Math.Pow(array[i] - mean, 2);
     sum += Math.Pow(array[i] - mean, 2);
}
}
// データの要素数で割ると標準偏差になる
 
var std = sum / array.Length;
// データの要素数で割り、その平方根を取ると標準偏差になる
var std = Math.Sqrt( sum / array.Length );
</source>
 
加算している部分はLINQを使うと1行で書けます。
<source lang="csharp">
// データ
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 );
</source>
 
NuGetにあるMath.Net Numericsを使えば何も考える必要はありません。
<source lang="csharp">
using MathNet.Numerics.Statistics;
var array = new [] { 1, 2, 3, 4, 5 };
var std = array.StandardDevaton();
</source>
</source>
== 関連項目 ==
* [[標本標準偏差]]


[[category: アルゴリズム]]
[[category: アルゴリズム]]
[[category: 算数]]
[[category: 算数]]