[確率・統計] [C#]t分布の面積とx座標の求め方

C#で正規分布やt分布、カイ2乗分布を扱うのに便利なMath.NET Numericsがあります。

Math.NET Numericsを使ってt分布の面積(確率)と、特定の確率となるt値を求める方法を記載します。

1.Nugetでライブラリを組み込む
(1)メニューの「プロジェクト-NuGetパッケージの管理」を選択します。


(2)参照を選択し、Math.NET Numericsを検索しプロジェクトに追加します。

これで、Math.NET Numericsが使えるようになりました。

2.t分布の面積や確率を計算するには以下のように記載します。
(1)平均:0、分散:1、自由度:2のときの5%となるt値を求める

double t = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, 2, 0.05);
(2)平均:0、分散:1、自由度:2のときのt=0となる面積を求める
MathNet.Numerics.Distributions.StudentT.CDF(0, 1, 2, 0);

このライブラリで、面積、確率を求めるとは、以下の図の範囲となるようです。

3.EXCELと同じ動作をする関数もあります。 (1)確率0.05のときのt値を求める

MathNet.Numerics.ExcelFunctions.TInv(0.05, 2);
(2)t値=4.303のときのP値を求める。
MathNet.Numerics.ExcelFunctions.TDist(4.302652729749469, 2, 2);

4.全ソースコードです。

using System;

namespace tdistribution
{
    class Program
    {
        static void Main(string[] args)
        {
            //MathNet.Numericsのt分布のテスト
            //面積(確率)となるt値を求める
            Console.WriteLine(String.Format("t分布の面積=0.05の位置 = {0}", MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, 2, 0.05)));

            //-∞からlocationまでの面積(確率)を求める P値は両側なので2倍する
            Console.WriteLine(String.Format("t=0の面積 = {0}", MathNet.Numerics.Distributions.StudentT.CDF(0, 1, 2, -2.91998558035373)));

            //3.EXCELと同じ関数名で求める
            //t値
            Console.WriteLine(String.Format("t値 = {0}", MathNet.Numerics.ExcelFunctions.TInv(0.05, 2)));

            //面積
            Console.WriteLine(String.Format("面積(P値) = {0}", MathNet.Numerics.ExcelFunctions.TDist(4.302652729749469, 2, 2)));
        }
    }
}

5.参考書籍
以下は個人的に面白いと思っている本です。

0 件のコメント :

コメントを投稿