Up

ガンマ分布(カイ2乗分布)の描画

Visual C++/CLRプログラム例

 

 ガンマ分布(gamma distribution)の描画プログラムDrawGamma.exeを作成した。カイ2分布(chi-square distributionは、ガンマ分布の特別な場合である。

ガンマ分布は次式

で与えられる。ただし、である。

 このとき、平均値、分散、モードは次式で与えられる。

 

プログラムDrawGamma.exe.NET Framework 3.5 対応であるが、このプログラムをクリックして実行すると、まず図1のフォームが表示される。

図1

 

パラメタの値を「Alpha =」と「Beta =」の下のテキストボックス、描画範囲を「min_x =」と「max_x =」の下のテキストボックスに設定して、「Draw」ボタンをクリックすると図2のように描画される。

図2

 

図2の描画画面においてパラメタおよび描画範囲の再設定後、「Draw」ボタンをクリックすると、設定した値で再描画が行われる。

描画画面は、「Save」ボタンのクリックでファイルに保存することができる。

 

関数の描画は、以下のコードで行っている。

         array<Point> ^ pnt = gcnew array<Point>(1000);

         for (int i = 0; i < 1000; i++)

                 pnt[i] = Point( xpos((i + 1) / 1000.0),

                                        ypos(gamma(minX + (i + 1) * (maxX - minX) / 1000.0) / maxV) );

         g->DrawLines( pn, pnt );

まず、CLI配列pntに関数のグラフを1000個の値で分割した点を設定して、DrawLines関数によって描画している。

 

 プログラムのソースコードなどを圧縮ファイルとしてまとめた。この圧縮ファイルDrawGamma.zipは、ファイル名をマウスの右ボタンでクリックしてダウンロードすることができる。ダウンロードした圧縮ファイルは、名前をマウスの右ボタンでクリックすると表示されるメニュから「解凍」あるいは「展開」などを選んで解凍することができる。解凍したファイルはVisual C++2008で開くことができる。

 

 

カイ2乗分布

 

ガンマ分布(式(1))のパラメータを

とおいたとき、分布(1)は自由度のカイ2乗分布(chi-square distribution)と呼ばれる。このとき、式(1)は

となる。すなわち、自由度のカイ2乗分布とは、式(2)で与えられる分布である。

 

 

なお、Visual C++/CLRプログラミングの解説書として<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>を用意した。

 

参考文献

Gelman, A., Carlin, J. B., Stern, H. S. and Rubin, D. B. (1995). Bayesian Data Analysis. Chapman & Hall.

 

Up