[ 簡単な説明 ] 区間推定のライブラリです。区間推定とは、標本の統計で得られたデータから、母集団の特徴を示すパラメータの区間をある信頼度の下で推定するものです。 母平均や母分散関係のパラメータの区間推定は、正規母集団を仮定しています。 母百分率関係のパラメータの区間推定は、2項母集団(要素が1か0)を仮定しています。 |
関数名 | 関数の機能 | 機能説明 | 呼び出し例 |
mest1( ) | 母平均の 区間推定 (母分散既知) |
|
mest1(n, xbar, pv, g, &xl, &xu); |
mest2( ) | 母平均の 区間推定 (母分散未知) |
|
mest2(n, xbar, squv, g, &xl, &xu); |
mdest1( ) | 母平均の差の 区間推定 (母分散既知) |
|
mdest1(n1, n2, xbar1, xbar2, pv1, pv2, g, &xl, &xu); |
mdest2( ) | 母平均の差の 区間推定 (母分散未知 (等しい)) |
|
mdest2(n1, n2, xbar1, xbar2, v1, v2, g, &xl, &xu); |
vest( ) | 母分散の 区間推定 |
|
vest(sw, n, s, g, &xl, &xu); |
vpest( ) | 母分散の比の 区間推定 |
|
vpest(n1, n2, uv1, uv2, g, &xl, &xu); |
bpest( ) | 母百分率 (不良率)の 区間推定 |
|
bpest(n, ps, g, &xl, &xu); |
bpdest( ) | 2つの母百分率 (不良率)の差の 区間推定 |
|
bpdest(n1, n2, ps1, ps2, g, &xl, &xu); |
rest( ) | 母相関係数の 区間推定 |
|
rest(n, r0, g, &xl, &xu); |
/* esti.c */ #include <stdio.h> #include "sslib.h" int mest1(int n, double xbar, double pv, double g, double *xl, double *xu) { double w; if(n < 1 || g <= 0.0 || g >= 1.0) return 999; w = pnorm((1.0 + g) * 0.5) * sqrt(pv / (double)n); *xl = xbar - w; *xu = xbar + w; return 0; } int mest2(int n, double xbar, double squv, double g, double *xl, double *xu) { double w; if(n < 1 || g <= 0.0 || g >= 1.0) return 999; w = pt(1.0 - g, n - 1) * squv / sqrt((double)n); *xl = xbar - w; *xu = xbar + w; return 0; } int mdest1(int n1, int n2, double xbar1, double xbar2, double pv1, double pv2, double g, double *xl, double *xu) { double xb, w; if(n1 < 1 || n2 < 1 || g <= 0.0 || g >= 1.0) return 999; xb = fabs(xbar1 - xbar2); w = pnorm((1.0 + g) * 0.5) * sqrt(pv1 / (double)n1 + pv2 / (double)n2); *xl = xb - w; *xu = xb + w; return 0; } int mdest2(int n1, int n2, double xbar1, double xbar2, double v1, double v2, double g, double *xl, double *xu) { double xb, w; if(n1 < 1 || n2 < 1 || g <= 0.0 || g >= 1.0) return 999; xb = fabs(xbar1 - xbar2); w = pt(1.0 - g, n1 + n2 - 2) * sqrt(1.0 / (double)n1 + 1.0 / (double)n2) * sqrt(((double)n1 * v1 + (double)n2 * v2) / (double)(n1 + n2 - 2)); *xl = xb - w; *xu = xb + w; return 0; } int vest(int sw, int n, double s, double g, double *xl, double *xu) { double q1; if(n < 2 || g <= 0.0 || g >= 1.0) return 999; if(sw < 0) n--; q1 = (1.0 + g) * 0.5; *xl = s / pchi(1.0 - q1, n); *xu = s / pchi(q1, n); return 0; } int vpest(int n1, int n2, double uv1, double uv2, double g, double *xl, double *xu) { double f, w; if(n1 < 2 || n2 < 2 || g <= 0.0 || g >= 1.0) return 999; w = uv1 / uv2; f = (1.0 - g) * 0.5; *xl = w / pf(f, n1 - 1, n2 - 1); *xu = w * pf(f, n2 - 1, n1 - 1); return 0; } int bpest(int n, double ps, double g, double *xl, double *xu) { double w; if(n < 1 || ps <= 0.0 || ps >= 1.0 || g <= 0.0 || g >= 1.0) return 999; w = pnorm((1.0 + g) * 0.5) * sqrt(ps * (1.0 - ps) / (double)n); *xl = ps - w; *xu = ps + w; return 0; } int bpdest(int n1, int n2, double ps1, double ps2, double g, double *xl, double *xu) { double p, w; if(n1 < 1 || n2 < 1 || g <= 0.0 || g >= 1.0 || ps1 <= 0.0 || ps1 >= 1.0 || ps2 <= 0.0 || ps2 >= 1.0) return 999; p = fabs(ps1 - ps2); w = pnorm((1.0 + g) * 0.5) * sqrt(ps1 * (1.0 - ps1) / (double)n1 + ps2 * (1.0 - ps2) / (double)n2); *xl = p - w; *xu = p + w; return 0; } int rest(int n, double r0, double g, double *xl, double *xu) { double qn, w, w1, w2, w3; if(n < 4 || fabs(r0) >= 1.0 || g <= 0.0 || g >= 1.0) return 999; w = log((1.0 + r0) / (1.0 - r0)) * 0.5; w1 = pnorm((1.0 + g) * 0.5) / sqrt((double)(n - 3)); w2 = exp(2.0 * (w - w1)); w3 = exp(2.0 * (w + w1)); *xl = (w2 - 1.0) / (w2 + 1.0); *xu = (w3 - 1.0) / (w3 + 1.0); return 0; } |