2項検定
Visual C++/CLRコンソール・アプリケーション
2項検定を行うためのVisual C++/CLRコンソール・プログラムを作成した。2項検定については<岡本安晴「データ分析のための統計学入門」2009、おうふう;第3章:検定>などを参照されたい。プログラムは、ウェブサイト<Visual C++/CLRコンソール・アプリケーションの作成>で説明したプログラムに下記のようにコードを書き加えて作成した。
===============================================
#include "stdafx.h"
using namespace System;
double Combi( int n, int k ){
if ((k == 0) || (k == n)) return
1.0;
double v = 0.0;
for (int i = 0; i
< k; i++)
v
+= Math::Log(n - k + 1 + i) - Math::Log(i + 1);
return Math::Exp(v);
}
double calcBinProb( int n, int k ){
double v;
v =
Combi( n, k ) * Math::Pow(0.5, n);
return v;
}
int main(array<System::String ^> ^args)
{
Console::Write("N = ");
String
^ s = Console::ReadLine();
int n = int::Parse(s);
Console::Write("k = ");
s =
Console::ReadLine();
int k = int::Parse(s);
double p1 = 0.0, p2 = 0.0;
for (int i = 0; i
<= k; i++)
p1
+= calcBinProb( n, i );
Console::WriteLine();
Console::WriteLine("Prob(X <= " + k.ToString() + ") = " + p1.ToString("F9"));
for (int i = n; i
>= k; i--)
p2
+= calcBinProb( n, i );
Console::WriteLine("Prob(X >= " + k.ToString() + ") = " + p2.ToString("F9"));
Console::WriteLine();
Console::WriteLine("Enterキーを押して終了。");
Console::ReadLine();
return
0;
}
===============================================
このプログラムを実行すると、図1のようにコンソール・ウィンドウが表示される。
図1
Nの値を入力してEnterキーを押すと、次にkの値の入力が求められる。kの値の入力後、各試行における確率がであるN試行の2項分布に従う確率変数Xに対して確率
が算出される(図2)。
図2
図2の状態でEnterキーを押すと、プログラムの終了となる。
プログラム・ファイルは圧縮ファイルbinTest.zipとしてまとめた。ファイル名binTest.zipをクリックしてダウンロードしたものをマウスの右ボタンクリックで表示されるメニュ「解凍」あるいは「展開」などを選ぶと解凍できる。解凍したものはVisual C++などで開いてビルド実行することができる。実行形式ファイルbinTest.exeも用意したので、ファイル名binTest.exeをクリックしてダウンロード実行することができる。実行形式ファイルは.NET Framework3.5対応である。