セージ の メモ書き

メモこそ命の恩人だ

C# - 標準偏差

偏差

偏差 - Wikipedia

  • "平均値" との差。
  • 例:テスト => 自分50点、平均60点
    • 50 - 60 = -10

分散

  • 偏差の二乗の平均値。
  • 例:Aさん50点、Bさん60点、Cさん70点、平均60点
    • ( (50-60)2 + (60-60)2 + (70-60)2 ) ÷ 3
    • ( 100 + 0 + 100 ) ÷ 3 = 66
  • 二乗することで全て正の値になる。絶対値として扱える。
  • つまり、分散は標準偏差を算出するための下処理。だと思う。
  • 標準偏差は、分散の値を √ (平方根) する。
  • 二乗した後を元に戻している。これで偏差の平均値が算出できる。

標準偏差

  • 分散の値を √ (平方根) した値。
  • "偏差" の平均値。
  • 標準偏差が小さい => 平均値からのばらつきが小さい。
  • 標準偏差が大きい => 平均値からのばらつきが大きい。
  • 例:Aさん50点、Bさん60点、Cさん70点、平均60点
  • 例:Aさん55点、Bさん60点、Cさん65点、平均60点
  • 例:Aさん40点、Bさん60点、Cさん80点、平均60点

C# だと、こんな感じ。

var result1 = Calc.GetStandardDeviation(new List<double>() { 50, 60, 70});
Debug.WriteLine(result1);
// 8.16496580927726

var result2 = Calc.GetStandardDeviation(new List<double>() { 55, 60, 65 });
Debug.WriteLine(result2);
// 4.08248290463863

var result3 = Calc.GetStandardDeviation(new List<double>() { 40, 60, 80 });
Debug.WriteLine(result3);
// 16.32993161855452

internal class Calc
{
    public static double GetStandardDeviation(IEnumerable<double> pointList) 
    {
        // 平均値
        var average = pointList.Average();
        // 分散
        var distributed = pointList.Sum(point => Math.Pow(point - average, 2)) / pointList.Count();
        // 標準偏差
        return Math.Sqrt(distributed);
    }
}

補足

標準偏差の問題

14-5. 標準正規分布表の使い方1 | 統計学の時間 | 統計WEB

問題例:90点以上の得点者が最も多い教科は?
(正規分布)

教科 平均点 標準偏差
A 45 18
B 60 15
C 75 5
  • 偏差(平均値との差)
    • A:90 - 45 = 45
    • B:90 - 60 = 30
    • C:90 - 75 = 15
  • 標準偏差に対する偏差の割合
    • A:45 / 18 = 2.5
    • B:30 / 15 = 2
    • C:15 / 5 = 3
  • B が正解(小さい方が確率が高い)

正規分布 (ガウス分布)



以上