C# の標準偏差
このチュートリアルでは、C# でリストの要素の標準偏差を見つける方法を紹介します。
C# の自己定義メソッドによる標準偏差
標準偏差は、統計の平均からの分散の尺度です。これは、平均値からの各要素の差の 2 乗を取り、すべての 2 乗値を加算し、回答を値の総数で除算し、結果の値の平方根をとることによって計算されます。
残念ながら、C# の標準偏差を計算するための組み込みメソッドはありません。しかし、それを計算するためのロジックを定義することはできます。次のコード例は、C# でリスト内の要素の標準偏差を見つける方法を示しています。
using System;
using System.Collections.Generic;
using System.Linq;
namespace sd_list {
class Program {
static double standardDeviation(IEnumerable<double> sequence) {
double result = 0;
if (sequence.Any()) {
double average = sequence.Average();
double sum = sequence.Sum(d => Math.Pow(d - average, 2));
result = Math.Sqrt((sum) / sequence.Count());
}
return result;
}
static void Main(string[] args) {
List<double> intList = new List<double> { 1, 2, 3, 4, 5 };
double standard_deviation = standardDeviation(intList);
Console.WriteLine("Standard Deviation = {0}", standard_deviation);
}
}
}
出力:
Standard Deviation = 1.4142135623731
上記のコードでは、C# の double のリストの要素の標準偏差を計算する関数 standardDeviation()
を作成しました。まず、sequence.Average()
関数を使用して値の平均を計算しました。次に、平均から個々の値の差の 2 乗の合計を計算し、それを sum
変数に保存しました。最後に、合計
を値の総数で割り、その平方根を計算しました。この計算の結果を result
変数内に保存し、result
変数を返しました。
C# の拡張機能による標準偏差
前の例で説明したロジックは、使いやすさのために拡張関数に変換することもできます。次のコード例は、前の例のロジックを C# の拡張メソッドに変更する方法を示しています。
using System;
using System.Collections.Generic;
using System.Linq;
namespace sd_list {
public static class ExtensionClass {
public static double standardDeviation(this IEnumerable<double> sequence) {
double average = sequence.Average();
double sum = sequence.Sum(d => Math.Pow(d - average, 2));
return Math.Sqrt((sum) / sequence.Count());
}
}
class Program {
static void Main(string[] args) {
List<double> intList = new List<double> { 1, 2, 3, 4, 5 };
double standard_deviation = intList.standardDeviation();
Console.WriteLine("Standard Deviation = {0}", standard_deviation);
}
}
}
出力:
Standard Deviation = 1.4142135623731
上記のコードでは、以前のコードを C# の拡張メソッドに変換しました。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn