母比率の検定・区間推定のパワーアナリシス Last modified: Apr 13, 2004
目的
母比率の検定・区間推定を指定する条件で行うために必要な標本サイズを計算するなどのパワーアナリシスを行う。
使用法
power.one.sample.prop.test(n=NULL, p=NULL, p0=NULL, sig.level=0.05, power=NULL, alternative=c("two.sided", "one.sided"))
n, p, p0, power, sig.level のどれか一つだけを NULL として指定して関数を呼び出すと,そのパラメータの値を求めることができる(sig.level を求めるときには,明示的に NULL を指定する必要がある)。
引数
n 標本サイズ
p 標本比率
p0 母比率
power 検出力
sig.level 有意水準
alternative 仮説・信頼区間の種類(指定しない場合には両側検定・両側信頼区間)
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/power_one_sample_prop_test.R", encoding="euc-jp")
# 母比率の検定・区間推定のパワーアナリシス
power.one.sample.prop.test <- function( n=NULL, # 標本サイズ
p=NULL, # 標本比率
p0=NULL, # 母比率
sig.level=0.05, # 有意水準
power=NULL, # 検出力
alternative=c("two.sided", "one.sided")) # 仮説・信頼区間の種類
{
if (sum(sapply(list(n, p, p0, power, sig.level), is.null)) != 1) {
stop("n, p, p0, power, sig.level のどれか一つだけを NULL とする")
}
alternative <- match.arg(alternative) # 引数の補完
tside <- switch(alternative, one.sided=1, two.sided=2)
power.function <- quote(pnorm((sqrt(n)*abs(p-p0)-qnorm(sig.level/tside, lower.tail=FALSE)*sqrt(p0*(1-p0)))/(sqrt(p*(1-p)))))
if (is.null(power)) {
power <- eval(power.function)
}
else if (is.null(n)) {
n <- uniroot(function(n) eval(power.function)-power, c(1, 1e7))$root
}
else if (is.null(p)) {
p <- uniroot(function(p) eval(power.function)-power, c(1e-5, p0))$root
}
else if (is.null(p0)) {
p0 <- uniroot(function(p0) eval(power.function)-power, c(1e-5, p))$root
}
else if (is.null(sig.level)) {
sig.level <- uniroot(function(sig.level) eval(power.function)-power, c(1e-5, 0.99999))$root
}
else {
stop("internal error")
}
METHOD <- "Power calculation of the one-sample proportion test."
structure(list(n=n, p=p, p0=p0, sig.level=sig.level, power=power, alternative=alternative, method=METHOD), class="power.htest")
}
使用例・出力結果例
# 必要なサンプルサイズを求める
> power.one.sample.prop.test(p=0.6, p0=0.5, power=0.8, alt="one")
Power calculation of the one-sample proportion test.
n = 152.4571
p = 0.6
p0 = 0.5
sig.level = 0.05
power = 0.8
alternative = one.sided
# 検出力を求める
> power.one.sample.prop.test(n=152, p=0.6, p0=0.5, alt="one")
Power calculation of the one-sample proportion test.
n = 152
p = 0.6
p0 = 0.5
sig.level = 0.05
power = 0.7989397
alternative = one.sided
# 検出できる標本比率を求める
> power.one.sample.prop.test(n=152, p0=0.5, power=0.8, alt="one")
Power calculation of the one-sample proportion test.
n = 152
p = 0.3998584
p0 = 0.5
sig.level = 0.05
power = 0.8
alternative = one.sided
# 検出できる母比率を求める
> power.one.sample.prop.test(n=152, p=0.6, power=0.8, alt="one")
Power calculation of the one-sample proportion test.
n = 152
p = 0.6
p0 = 0.4998621
sig.level = 0.05
power = 0.8
alternative = one.sided
# 有意水準を求める
> power.one.sample.prop.test(n=152, p=0.6, p0=0.5, power=0.8, sig.level=NULL, alt="one")
Power calculation of the one-sample proportion test.
n = 152
p = 0.6
p0 = 0.5
sig.level = 0.05038771
power = 0.8
alternative = one.sided
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI ( @si.gunma-u.ac.jp )