【超便利】C# Math.NET で統計計算をしようよ!

当ページのリンクには広告が含まれています。

C#で最大、最小、中央値、標準偏差、分散、四分位などの統計情報を計算する際、Math.NET というフリーのライブラリが良く使われます。

今回は、この Math.NET のインストール方法と使い方、そして簡単な関数のサンプルを作ったてみたので、それらを合わせて紹介したいと思います。

目次

Math.NETとは

.NET で数値計算を行う場合、標準のMathクラスが用意されていますが、これはルートや乗数、三角関数などの計算に用いるメソッドしか用意されていません。

一方、Math.NET は、行列やベクトル計算、データ生成、回帰など、標準のMathには無い様々な数値計算用クラスや関数が用意されています。

詳しい説明はこちらの公式ページに記載されていますので、必要に応じてご参照下さい。英語ですが、Chromeなどで日本語に翻訳すれば、おおよその使い方は理解できると思います。

あわせて読みたい

インストール方法

NuGetでインストールします(NuGetの使い方が知りたい方は、こちらのページをご覧ください)。

Math、又は Math.NET で検索すれば 「MathNet.Numerics」が表示されるので、これを選んでプロジェクトにインストールします。

Math.NETによる統計量の計算方法と関数一覧

プログラムの先頭に以下の通り using を記述します。

統計量の計算は、double型の配列に対する拡張メソッドとして呼び出すことが可能です。

Math.NET で使える統計量のメソッドは次の通りです。

機能メソッド名
最大値values.Maximum()
最小値values.Minimum()
中央値values.Medan()
平均値values.Average()
母標準偏差values.PopulatonStandardDevaton()
標準偏差values.StandardDevaton()
母分散values.PopulatonVarance()
分散values.Varance()
歪度values.Skewness()
尖度values.Kurtoss()
25%パーセンタイル(第一四分位)values.Percentle(25)
50%パーセンタイル(中央値)values.Percentle(50)

サンプルプログラム(関数サンプル)

Math.NET の使い方を紹介するにあたり、一通りの統計量を返す関数にしてみました。
とりあえず使いたいという方は、コピペして直ぐにお使いいただけます。

関数のソースコード

以下が関数のソースコードですが、単純にMath.NETのメソッドを呼んでListに結果を格納しているだけです。
これを使う際には、プログラム先頭に using MathNet.Numerics.Statistics; の記述をお忘れなく。

関数の使い方

関数の使い方は CalcStatics の引数に配列を指定するだけです。
MathNet.Numerics.Generate.Normal() を使うと、正規分布のサンプルデータを簡単に生成することが出来ます。

第1引数にデータ個数、第2引数に平均値、第3引数に標準偏差を指定出来ます。

MathNet.Numerics.Generate.Normal() で自動生成したデータは、以下の分布になっています。

サンプルプログラムを実行した結果は次の通りです。

最大値 15.791455911737938
最小値 3.962619679598153
中央値 9.986782046921993
平均値 9.93137690012798
母標準偏差 1.9780080643264362
標準偏差 1.9789978107302926
母分散 3.912515902540415
分散 3.9164323348752905
歪度 -0.00477716332587092
尖度 -0.29619411501881826
25%パーセンタイル(第一四分位) 8.542725661820077
50%パーセンタイル(中央値) 9.986782046921993
75%パーセンタイル(第三四分位) 11.249605639810254
-3σ 3.9943834679371015
+3σ 15.868370332318857

まとめ

今回は .NET 用のフリーな数値演算ライブラリ Math.NET について、インストール方法と使い方について紹介致しました。

データ分析をする上で統計量を使う場合、標準偏差や分散などの単一情報ではなく、統計量全体を見ることが多いので、一括して結果を返す仕様で関数を作りました。

データ分析と言えばPythonが良く使われますが、色々なデータに対して簡単に統計量を表示するようなケースでは、WPFやWindowsForm でツール化したくなります。

そんな時、このMath.NETが大いに役立つと思います。

この記事が皆さんのお役に立てれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次