検定ライブラリ 使用例



[ 簡単な説明 ]

検定ライブラリの使用例です。

それぞれのルーチンの使い方は難しくありませんが、パラメータの意味をよく理解して使用して下さい。
本使用例が参考になると思います。

「仮説が有意である」とは、その仮説がある危険率のもとで成立するとみなせることを意味します。

プログラム・ソース("test25.c")           top (先頭に戻る)
/*		test25.c		*/
#include <stdio.h>
#include "sslib.h"

void judge(char *s, int sw);

int main(void)
{
	int i, j, l, m, n, n1, n2, sw, sw1, sw2;
	static double aa[9] = { 41.,  9., 72., 20., 24.,111.,141., 15., 66. };
	double ac[3], ar[3], at, ef[9];
	double a, al, b, c, d, f, f0, pm, pp, ps, ps1, ps2, pv, pv1, pv2, nv, rp, r0, r01, r02;
	double s, s1, s2, t, t0, u, uv1, uv2, u0, v, xbar, xbar1, xbar2;
	double xk, x2, x20, x21, x22;

	printf("< 正規母集団の母平均検定 >\n");
	sw = 5;			/* 両側検定≧0, 片側検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	n = 20;			/* 標本数 */
	xbar = 89.6;	/* 標本平均 */
	pm = 83.5;		/* 母集団平均 */
	pv = 81.0;		/* 母分散 */
	al = 0.05;		/* 危険率 */
	mtst1(n, xbar, pm, pv, al, &sw, &u0, &u);
	printf("test results from mtst1 (母分散既知)\n");
	printf("  統計量 u0 = %6.3f  危険率に対する正規分布のパーセント点 u = %6.3f\n", u0, u);
	judge("μ=μo", sw);

	printf("\n< 正規母集団の母平均検定 >\n");
	sw = 5;			/* 両側検定≧0, 片側検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	n = 6;			/* 標本数 */
	xbar = 19.0;	/* 標本平均 */
	pm = 18.0;		/* 母集団平均 */
	nv = 6.8;		/* 標本の不偏分散 */
	al = 0.05;		/* 危険率 */
	mtst2(n, xbar, pm, nv, al, &sw, &t0, &t);
	printf("test results from mtst2 (母分散未知)\n");
	printf("  統計量 t0 = %6.3f  危険率に対するt分布のパーセント点 t = %6.3f\n", t0, t);
	judge("μ=μo", sw);

	printf("\n< 2つの正規母集団の平均値の差検定 >\n");
	sw = 5;			/* 両側検定≧0, 片側検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	n1 = 950;		/* 各母集団の標本数 */
	n2 = 1050;
	xbar1 = 12.5;	/* 各標本平均 */
	xbar2 = 11.3;
	pv1 = 9.2;		/* 各母分散 */
	pv2 = 6.3;
	al = 0.01;		/* 危険率 */
	mdtst1(n1, n2, xbar1, xbar2, pv1, pv2, al, &sw, &u0, &u);
	printf("test results from mdtst1 (母分散既知)\n");
	printf("  統計量 u0 = %6.3f  危険率に対する正規分布のパーセント点 u = %6.3f\n", u0, u);
	judge("μ1=μ2", sw);

	printf("\n< 2つの正規母集団の平均値の差検定 >\n");
	sw = 5;			/* 両側検定≧0, 片側検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	n1 = 10;		/* 各母集団の標本数 */
	n2 = 10;
	xbar1 = 37.2;	/* 各標本平均 */
	xbar2 = 25.7;
	s1 = 709.6;		/* 各標本の偏差平方和 */
	s2 = 128.1;
	al = 0.05;		/* 危険率 */
	mdtst2(n1, n2, xbar1, xbar2, s1, s2, al, &sw, &t0, &t);
	printf("test results from mdtst2 (母分散未知:等しい)\n");
	printf("  統計量 t0 = %6.3f  危険率に対するt分布のパーセント点 t = %6.3f\n", t0, t);
	judge("μ1=μ2", sw);

	printf("\n< 2つの正規母集団の平均値の差検定 >\n");
	sw = 5;			/* 両側検定≧0, 片側検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	n1 = 25;		/* 各母集団の標本数 */
	n2 = 20;
	xbar1 = 82.2;	/* 各標本平均 */
	xbar2 = 86.4;
	uv1 = 81.0;		/* 各標本の不偏分散 */
	uv2 = 76.0;
	al = 0.05;		/* 危険率 */
	mdtst3(n1, n2, xbar1, xbar2, uv1, uv2, al, &sw, &t0, &t);
	printf("test results from mdtst3 (母分散未知:異なる)\n");
	printf("  統計量 t0 = %6.3f  危険率に対するt分布のパーセント点 t = %6.3f\n", t0, t);
	judge("μ1=μ2", sw);

	printf("\n< 2項母集団の母百分率(不良率)の検定 >\n");
	sw = 5;			/* 両側検定≧0, 片側検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	n = 4000;		/* 標本数 */
	ps = 0.729;		/* 標本中における不良率 */
	pp = 0.75;		/* 母百分率(不良率) */
	al = 0.05;		/* 危険率 */
	nbptst(n, ps, pp, al, &sw, &u0, &u);
	printf("test results from nbptst (正規分布検定)\n");
	printf("  統計量 u0 = %6.3f  危険率に対する正規分布のパーセント点 u = %6.3f\n", u0, u);
	judge("p=po", sw);

	printf("\n< 2項母集団の母百分率(不良率)の検定 >\n");
	sw = 5;			/* 両側検定≧0, 片側検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	n = 4000;		/* 標本数 */
	ps = 0.729;		/* 標本中における不良率 */
	pp = 0.75;		/* 母百分率(不良率) */
	al = 0.05;		/* 危険率 */
	fbptst(n, ps, pp, al, &sw, &f0, &f);
	printf("test results from fbptst (F分布検定)\n");
	printf("  統計量 f0 = %6.3f  危険率に対するF分布のパーセント点 f = %6.3f\n", f0, f);
	judge("p=po", sw);

	printf("\n< 2つの母集団の母百分率(不良率)の差検定 >\n");
	sw = 5;			/* 両側検定≧0, 片側検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	n1 = 70;		/* 各母集団の標本数 */
	n2 = 100;
	ps1 = 0.57;		/* 各標本中における不良率 */
	ps2 = 0.45;
	al = 0.05;		/* 危険率 */
	bpdtst(n1, n2, ps1, ps2, al, &sw, &u0, &u);
	printf("test results from bpdtst !\n");
	printf("  統計量 u0 = %6.3f  危険率に対する正規分布のパーセント点 u = %6.3f\n", u0, u);
	judge("p1=p2", sw);

	printf("\n< 正規母集団の母分散の検定 >\n");
	sw1 = -1;		/* 母平均既知≧0, 未知<0 */
	sw2 = 5;		/* 両側検定≧0, 片側検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	n = 20;			/* 標本数 */
	s = 1660.0;		/* 母平均既知の場合,標本の母平均に対する偏差平方和,
					   母平均未知の場合,標本平均に対する偏差平方和 */
	v = 100.0;		/* 母分散 */
	al = 0.05;		/* 危険率 */
	vtst(sw1, n, s, v, al, &sw2, &x20, &x21, &x22);
	printf("test results from vtst !\n");
	printf("  統計量 χo^2 = %6.3f  危険率に対するパーセント点 χ1^2 = %6.3f   χ2^2 = %6.3f\n", x20, x21, x22);
	judge("", sw2);

	printf("\n< 2つの正規母集団の等分散の検定 >\n");
	n1 = 6;			/* 各母集団の標本数 */
	n2 = 6;
	uv1 = 23.5;		/* 各標本の不偏分散 */
	uv2 = 16.3;
	al = 0.05;		/* 危険率 */
	vdtst(n1, n2, uv1, uv2, al, &sw, &f0, &f);
	printf("test results from vdtst !\n");
	printf("  統計量 f0 = %6.3f  危険率に対するF分布のパーセント点 f = %6.3f\n", f0, f);
	judge("σ1^2 = σ2^2", sw2);

	printf("\n< 2元分割表(two way contigency tables)による独立性の検定 >\n");
	sw = -5;		/* 一般のχ2検定≧0, イエーツ(Yetes)のχ2検定< 0,
					   検定後, 有意(仮説が成立):1, 有意でない:0	*/
	a = 20.0;		/*       Y1   Y2	*/
	b = 220.0;		/*   X1   a    b	*/
	c = 4.0;		/*   X2   c    d	*/
	d = 236.0;
	al = 0.05;		/* 危険率 */
	cont22(&sw, a, b, c, d, al, &x20, &x2);
	printf("test results from cont22 !\n");
	printf("  統計量 χo^2 = %6.3f  危険率に対するパーセント点 χ^2 = %6.3f\n", x20, x2);
	judge("独立", sw);

	printf("\n< L×M分割表による独立性の検定 >\n");
	l = 3;			/* 分割表の行・列数  l,m ≧ 2 */
	m = 3;
	al = 0.05;		/* 危険率 */
	contlm(l, m, aa, al, ac, ar, &at, ef, &x20, &x2, &sw);
	printf("test results from contlm !\n");
	printf("< 分割表データ >\n");
	printf("    ");
	for(j =0; j < m; j++)	printf("   %3d   ", j + 1);
	printf("     行和\n");
	for(i = 0; i < l; i++)
	{
		printf("%3d ", i + 1);
		for(j = 0; j < m; j++)	printf(" %8.3f", aa[i * m + j]);
		printf(" %10.3f\n", ar[i]);
	}
	printf("列和");
	for(i = 0; i < l; i++)	printf(" %8.3f", ac[i]);
	printf(" %10.3f : 総和\n\n", at);
	printf("< 分割表の期待度数 >\n");
	printf("    ");
	for(j =0; j < m; j++)	printf("   %3d   ", j + 1);
	putchar('\n');
	for(i = 0; i < l; i++)
	{
		printf("%3d ", i + 1);
		for(j = 0; j < m; j++)	printf(" %8.3f", ef[i * m + j]);
		putchar('\n');
	}
	printf("  統計量 χo^2 = %6.3f  危険率に対するパーセント点 χ^2 = %6.3f\n", x20, x2);
	judge("独立", sw);

	printf("\n< 任意標本中の異常値の棄却検定(Thompson's method) >\n");
	n = 10;			/* 標本数 */
	xk = 25.0;		/* 異常値 */
	xbar = 52.7;	/* 標本平均 */
	v = 111.81;		/* 標本の分散 */
	al = 0.05;		/* 危険率 */
	thomp(n, xk, xbar, v, al, &sw, &t0, &t);
	printf("test results from thomp !\n");
	printf("  統計量 t0 = %6.3f  危険率に対するt分布のパーセント点 t = %6.3f\n", t0, t);
	judge("異常値", sw);

	printf("\n< 母集団の相関係数の検定(無相関のt検定) >\n");
	n = 18;			/* 標本数 (n≧2) */
	r0 = 0.842;		/* 標本の相関係数 */
	al = 0.05;		/* 危険率 */
	rttst(n, r0, al, &sw, &t0, &t);
	printf("test results from rttst !\n");
	printf("  統計量 t0 = %6.3f  危険率に対するt分布のパーセント点 t = %6.3f\n", t0, t);
	judge("", sw);

	printf("\n< 母集団の相関係数の検定(母相関係数検定) >\n");
	n = 18;			/* 標本数 (n≧3) */
	r0 = 0.842;		/* 標本の相関係数 */
	rp = 0.894;		/* 母相関係数 */
	al = 0.05;		/* 危険率 */
	rptst(n, r0, rp, al, &sw, &u0, &u);
	printf("test results from rptst !\n");
	printf("  統計量 u0 = %6.3f  危険率に対する正規分布のパーセント点 u = %6.3f\n", u0, u);
	judge("", sw);

	printf("\n< 2つの母集団の母相関係数の比較検定 >\n");
	n1 = 126;		/* 各母集団の標本数 */
	n2 = 56;
	r01 = 0.162;	/* 各標本の相関係数 */
	r02 = 0.34;
	al = 0.05;		/* 危険率 */
	rptst2(n1, n2, r01, r02, al, &sw, &u0, &u);
	printf("test results from rptst2 !\n");
	printf("  統計量 u0 = %6.3f  危険率に対する正規分布のパーセント点 u = %6.3f\n", u0, u);
	judge("各母集団の母相関係数は等しい", sw);
	return 1;
}

void judge(char *s, int sw)
{
	printf("仮説 '%s' は,有意で", s);
	if(sw)	printf("ある。\n");
	else	printf("ない。\n");
}

出力結果           top (先頭に戻る)
< 正規母集団の母平均検定 >
test results from mtst1 (母分散既知)
  統計量 u0 =  3.031  危険率に対する正規分布のパーセント点 u =  1.960
仮説 'μ=μo' は,有意である。

< 正規母集団の母平均検定 >
test results from mtst2 (母分散未知)
  統計量 t0 =  0.939  危険率に対するt分布のパーセント点 t =  2.571
仮説 'μ=μo' は,有意でない。

< 2つの正規母集団の平均値の差検定 >
test results from mdtst1 (母分散既知)
  統計量 u0 =  9.582  危険率に対する正規分布のパーセント点 u =  2.576
仮説 'μ1=μ2' は,有意である。

< 2つの正規母集団の平均値の差検定 >
test results from mdtst2 (母分散未知:等しい)
  統計量 t0 =  3.769  危険率に対するt分布のパーセント点 t =  2.101
仮説 'μ1=μ2' は,有意である。

< 2つの正規母集団の平均値の差検定 >
test results from mdtst3 (母分散未知:異なる)
  統計量 t0 = -1.583  危険率に対するt分布のパーセント点 t =  2.179
仮説 'μ1=μ2' は,有意でない。

< 2項母集団の母百分率(不良率)の検定 >
test results from nbptst (正規分布検定)
  統計量 u0 = -3.067  危険率に対する正規分布のパーセント点 u =  1.960
仮説 'p=po' は,有意である。

< 2項母集団の母百分率(不良率)の検定 >
test results from fbptst (F分布検定)
  統計量 f0 =  1.115  危険率に対するF分布のパーセント点 f =  1.061
仮説 'p=po' は,有意である。

< 2つの母集団の母百分率(不良率)の差検定 >
test results from bpdtst !
  統計量 u0 =  1.540  危険率に対する正規分布のパーセント点 u =  1.960
仮説 'p1=p2' は,有意でない。

< 正規母集団の母分散の検定 >
test results from vtst !
  統計量 χo^2 = 16.600  危険率に対するパーセント点 χ1^2 = 32.850   χ2^2 =  8.910
仮説 '' は,有意でない。

< 2つの正規母集団の等分散の検定 >
test results from vdtst !
  統計量 f0 =  1.442  危険率に対するF分布のパーセント点 f =  7.146
仮説 'σ1^2 = σ2^2' は,有意でない。

< 2元分割表(two way contigency tables)による独立性の検定 >
test results from cont22 !
  統計量 χo^2 =  9.868  危険率に対するパーセント点 χ^2 =  3.841
仮説 '独立' は,有意である。

< L×M分割表による独立性の検定 >
test results from contlm !
< 分割表データ >
         1        2        3        行和
  1    41.000    9.000   72.000    122.000
  2    20.000   24.000  111.000    155.000
  3   141.000   15.000   66.000    222.000
列和  202.000   48.000  249.000    499.000 : 総和

< 分割表の期待度数 >
         1        2        3   
  1    49.387   11.735   60.878
  2    62.745   14.910   77.345
  3    89.868   21.355  110.778
  統計量 χo^2 = 102.484  危険率に対するパーセント点 χ^2 =  9.488
仮説 '独立' は,有意である。

< 任意標本中の異常値の棄却検定(Thompson's method) >
test results from thomp !
  統計量 t0 = -5.068  危険率に対するt分布のパーセント点 t =  2.306
仮説 '異常値' は,有意である。

< 母集団の相関係数の検定(無相関のt検定) >
test results from rttst !
  統計量 t0 =  6.243  危険率に対するt分布のパーセント点 t =  2.120
仮説 '' は,有意である。

< 母集団の相関係数の検定(母相関係数検定) >
test results from rptst !
  統計量 u0 = -0.827  危険率に対する正規分布のパーセント点 u =  1.960
仮説 '' は,有意でない。

< 2つの母集団の母相関係数の比較検定 >
test results from rptst2 !
  統計量 u0 = -1.160  危険率に対する正規分布のパーセント点 u =  1.960
仮説 '各母集団の母相関係数は等しい' は,有意でない。