備忘録
LINQには最大値・最小値・合計値などを算出する便利な機能があるが、標準偏差を求めるメソッドがない。
サンプルコード
List<double> doubles = new List<double> { 3.2, 3.5, 3.6, 4 };
//最大値
double max = doubles.Max();
//最小値
double min = doubles.Min();
//合計値
double sum = doubles.Sum();
//平均値
double mean = doubles.Average();
//分散 = 自乗和 / 要素数 - 平均値^2
double variance = doubles.Select(x => Math.Pow(x - mean, 2)).Average();
//標準偏差 = 分散の平方根
double stdDev = Math.Sqrt(variance);
//最頻値
double mode = doubles.GroupBy(x => x) // 各要素の出現回数をカウントする
.OrderByDescending(g => g.Count()) // 出現回数が最大の要素を取得する
.Select(g => g.Key) // 最頻値を取得する
.First();
//中央値
double median = doubles.OrderBy(x => x).ElementAt(doubles.Count / 2);
参考ページ