search
LoginSignup
2

posted at

updated at

「ちょっと午後までに標準偏差表示しといて」~C# での最速標準偏差~

残念ながら .NET の標準ライブラリーで標準偏差を算出することはできません。
もちろんあります。NuGet に。Math.NET Numerics を使って最速で標準偏差を出しましょう。

環境

  • Visual Studio 2022
  • .NET 6
  • コンソールアプリ

手順

1. NuGet パッケージをインストール

  1. プロジェクトファイルを右クリック
  2. NuGet パッケージの管理(N)... をクリック
  3. 参照 タブで mathnet と検索
  4. MathNet.Numerics をインストール!

image.png
※2022/10/01 現在の最新安定版は 5.0.0

2. 使う

  1. using MathNet.Numerics.Statistics 追加
  2. IEnumerable<double> の拡張メソッド StandardDeviation() or PopulationStandardDeviation() を呼ぶ!
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 様と比較しましょう。

image.png

Excel 様の有効桁数は15桁なので、下一桁が異なっていますね。実用十分。

まとめ

C# で標準偏差を出したくなったら、Math.NET Numerics を使ってみよう。
Math.NET Numerics には他にも多くの機能があります。これから何度もお世話になりそう。
.NET の標準ライブラリーにあってもいいと思うんだけどなぁ。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2