残念ながら .NET の標準ライブラリーで標準偏差を算出することはできません。
もちろんあります。NuGet に。Math.NET Numerics を使って最速で標準偏差を出しましょう。
環境
- Visual Studio 2022
- .NET 6
- コンソールアプリ
手順
1. NuGet パッケージをインストール
- プロジェクトファイルを右クリック
-
NuGet パッケージの管理(N)...
をクリック -
参照
タブでmathnet
と検索 -
MathNet.Numerics
をインストール!
2. 使う
-
using MathNet.Numerics.Statistics
追加 -
IEnumerable<double>
の拡張メソッドStandardDeviation()
orPopulationStandardDeviation()
を呼ぶ!
Program.cs
using MathNet.Numerics.Statistics;
Console.WriteLine("Hello, World!");
double[] doubles = { 1.0, 2.0, 3.0, 5.0, 8.0, 13.0 };
// データを標本だとみなす場合
double stdev = doubles.StandardDeviation();
Console.WriteLine(stdev);
// データを母集団全体だとみなす場合
double pstdev = doubles.PopulationStandardDeviation();
Console.WriteLine(pstdev);
出力
Hello, World!
4.501851470969102
4.109609335312651
はやい!
3. 確認してみる
よし、じゃあ Excel 様と比較しましょう。
Excel 様の有効桁数は15桁なので、下一桁が異なっていますね。実用十分。
まとめ
C# で標準偏差を出したくなったら、Math.NET Numerics を使ってみよう。
Math.NET Numerics には他にも多くの機能があります。これから何度もお世話になりそう。
.NET の標準ライブラリーにあってもいいと思うんだけどなぁ。