[ 簡単な説明 ] 検定ライブラリの使用例です。 それぞれのルーチンの使い方は難しくありませんが、パラメータの意味をよく理解して使用して下さい。 本使用例が参考になると思います。 「仮説が有意である」とは、その仮説がある危険率のもとで成立するとみなせることを意味します。 |
/* 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"); } |
< 正規母集団の母平均検定 > 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 仮説 '各母集団の母相関係数は等しい' は,有意でない。 |