有限母集団からの標本サイズ     Last modified: Apr 13, 2004

目的

有限母集団の割合の推定に必要な標本サイズを決める。

使用法

finite(n=NULL, N=NULL, p=NULL, epsilon=NULL, conf.level=NULL)
n, N, epsiron, conf.level の何れか一つを NULL にして関数を呼び出すと,その値を計算して返す。

引数

n          標本サイズ
N          母集団サイズ
p          母比率
epsilon    精度
conf.level 信頼度(信頼係数)

ソース

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/finite.R", encoding="euc-jp")

# 有限母集団の割合の推定に必要な標本サイズを決める
finite <- function(  n=NULL,                 # 標本サイズ
                        N=NULL,                 # 母集団サイズ
                        p=NULL,                 # 母比率
                        epsilon=NULL,           # 精度
                        conf.level=NULL)        # 信頼度(信頼係数)
{
        if (sum(sapply(list(n, N, p, epsilon, conf.level), is.null)) != 1) {
                stop("n, N, p, epsilon, conf.level のうちの,どれか一つだけが NULLでなければならない")
        }
        n.function <- quote(N/((epsilon/qnorm(0.5-conf.level/2, lower.tail=FALSE))^2*((N-1)/(p*(1-p)))+1))
        if (is.null(n)) {
                n <- eval(n.function)
        }
        else if (is.null(epsilon)) {
                epsilon <- uniroot(function(epsilon) eval(n.function)-n, c(1e-7, 0.9999999))$root
        }
        else if (is.null(N)) {
                N <- uniroot(function(N) eval(n.function)-n, c(1, 1e7))$root
        }
        else if (is.null(p)) {
                p <- uniroot(function(p) eval(n.function)-n, c(1e-7, 0.9999999))$root
        }
        else if (is.null(conf.level)) {
                conf.level <- uniroot(function(conf.level) eval(n.function)-n, c(1e-7, 0.9999999))$root
        }
        METHOD <- "有限母集団の割合の推定に必要な標本サイズ"
        structure(list(n=n, N=N, p=p, epsilon=epsilon, conf.level=conf.level, method=METHOD), class="power.htest")
}


使用例と出力結果例

# 標本サイズを求める
> finite(N=100, p=0.5, epsilon=0.05, conf.level=0.95) # n=80

     required sample size from finite population. 

              n = 79.5093
              N = 100
              p = 0.5
        epsilon = 0.05
     conf.level = 0.95

# 母集団のサイズを求める
> finite(n=80, p=0.5, epsilon=0.05, conf.level=0.95) # N=100

     required sample size from finite population. 

              n = 80
              N = 100.7795
              p = 0.5
        epsilon = 0.05
     conf.level = 0.95

# 精度を求める
> finite(n=80, N=100, p=0.5, conf.level=0.95) # epsilon=0.05

     required sample size from finite population. 

              n = 80
              N = 100
              p = 0.5
        epsilon = 0.04924529
     conf.level = 0.95

# 信頼度を求める
> finite(n=80, N=100, p=0.5, epsilon=0.05) # conf.level=0.95

     required sample size from finite population. 

              n = 80
              N = 100
              p = 0.5
        epsilon = 0.05
     conf.level = 0.953404

# 母比率を求める…はずだが,このプログラムでは求まらない
> finite(n=80, N=100, epsilon=0.05, conf.level=0.95) # p=0.5
Error in uniroot(function(p) eval(n.function) - n, c(1e-07, 0.9999999)) : 
	f() values at end points not of opposite sign


・ 参考文献
  東京大学教養学部統計学教室編「基礎統計学II 人文・社会科学の統計学」東京大学出版会


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI ( @si.gunma-u.ac.jp )

Made with Macintosh