区間推定ライブラリ



[ 簡単な説明 ]

区間推定のライブラリです。区間推定とは、標本の統計で得られたデータから、母集団の特徴を示すパラメータの区間をある信頼度の下で推定するものです。

母平均や母分散関係のパラメータの区間推定は、正規母集団を仮定しています。
母百分率関係のパラメータの区間推定は、2項母集団(要素が1か0)を仮定しています。

関数名 関数の機能 機能説明 呼び出し例
mest1( ) 母平均の

区間推定

(母分散既知)
  • n : 標本数
  • bar : 標本の平均
  • pv : 母分散
  • g : 信頼係数(0 < g < 1)
  • xl, xu : 信頼下限、上限
mest1(n, xbar, pv, g, &xl, &xu);
mest2( ) 母平均の

区間推定

(母分散未知)
  • n : 標本数
  • bar : 標本の平均
  • squv : 標本の不偏分散平方根
  • g : 信頼係数(0 < g < 1)
  • xl, xu : 信頼下限、上限
mest2(n, xbar, squv, g, &xl, &xu);
mdest1( ) 母平均の差の

区間推定

(母分散既知)
  • n1, n2 : 標本数
  • xbar1, xbar2 : 標本の平均
  • pv1, pv2 : 母分散
  • g : 信頼係数(0 < g < 1)
  • xl, xu : 信頼下限、上限
mdest1(n1, n2, xbar1, xbar2,
pv1, pv2, g, &xl, &xu);
mdest2( ) 母平均の差の

区間推定

(母分散未知

(等しい))
  • n1, n2 : 標本数
  • xbar1, xbar2 : 標本の平均
  • v1, v2 : 標本の分散
  • g : 信頼係数(0 < g < 1)
  • xl, xu : 信頼下限、上限
mdest2(n1, n2, xbar1, xbar2,
v1, v2, g, &xl, &xu);
vest( ) 母分散の

区間推定
  • sw : 母分散既知≧0、
       母分散未知<0
  • n : 標本数
  • s : 母分散既知;
         標本の母平均に対する
         偏差平方和
      母分散未知;
         標本平均に対する
         偏差平方和
  • g : 信頼係数(0 < g < 1)
  • xl, xu : 信頼下限、上限
vest(sw, n, s, g, &xl, &xu);
vpest( ) 母分散の比の

区間推定
  • n1, n2 : 標本数
  • uv1, uv2 : 標本の不偏分散
  • g : 信頼係数(0 < g < 1)
  • xl, xu : 母分散の比の
        信頼下限、上限
vpest(n1, n2, uv1, uv2, g, &xl, &xu);
bpest( ) 母百分率

(不良率)の

区間推定
  • n : 標本数
  • ps : 標本中における不良率
       (0 < ps < 1)
  • g : 信頼係数(0 < g < 1)
  • xl, xu : 母百分率(不良率)の
        信頼下限、上限
bpest(n, ps, g, &xl, &xu);
bpdest( ) 2つの母百分率

(不良率)の差の

区間推定
  • n1, n2 : 標本数
  • ps1, ps2 : 標本中における不良率
  • g : 信頼係数(0 < g < 1)
  • xl, xu : 母百分率(不良率)の差の
        信頼下限、上限
bpdest(n1, n2, ps1, ps2, g, &xl, &xu);
rest( ) 母相関係数の

区間推定
  • n : 標本数
  • r0 : 標本の相関係数
  • g : 信頼係数(0 < g < 1)
  • xl, xu : 母相関係数の
        信頼下限、上限
rest(n, r0, g, &xl, &xu);

プログラム・ソース("esti.c")           top (トップに戻る)
/*	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;
}