目的 有限母集団の割合の推定に必要な標本サイズを決める。 使用法 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