ガンマ分布(カイ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で開くことができる。
ガンマ分布(式(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.