上へ

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対応である。

 

上へ