目的 二群の比率の差の検定(両側検定)において,二群のサンプルサイズが異なるときの検出力を求める。 R には,power.prop.test という関数があり, 二群のサンプルサイズが同じであるときのパワーアナリシスを行うことができる。 使用法 power.prop.test2(Nc, Nt, Pc, Pt, sig.level=0.05) 検出力を求める power.prop.test3(Pc, Pt, r=1, sig.level=0.05, power=0.8) 必要サンプルサイズを求める 引数 Nc, Nt 両群のサンプルサイズ Pc, Pt 両群における比率 sig.level 有意水準(省略時には 0.05 が仮定される) r サンプルサイズの割合 Nc/Nt power 検出力(省略時には 0.80 が仮定される) ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/power_prop_test2.R", encoding="euc-jp") # サンプルサイズが異なる二群の比率の差の検定の検出力 power.prop.test2 <- function( Nc, # 第一群のサンプルサイズ Nt, # 第二群のサンプルサイズ Pc, # 第一群での比率 Pt, # 第二群での比率 sig.level=0.05) # 有意水準 { P <- (Nc*Pc+Nt*Pt)/(Nc+Nt) # プールした比率 Z.alpha <- qnorm(sig.level/2, lower.tail=FALSE) Z.beta <- (abs(Pc-Pt)-Z.alpha*sqrt(P*(1-P)/Nc+P*(1-P)/Nt)) / sqrt(Pc*(1-Pc)/Nc+Pt*(1-Pt)/Nt) return(pnorm(Z.beta)) # 検出力 } #========================================================================================= # サンプルサイズが異なる二群の比率の差の検定の必要サンプルサイズ power.prop.test3 <- function( Pc, # 第一群での比率 Pt, # 第二群での比率 r=1, # r = Nc/Nt sig.level=0.05, # 有意水準 power=0.8) # 検出力 { P <- (r*Pc+Pt) / (r+1) # プールした比率 Z.alpha <- qnorm(sig.level/2, lower.tail=FALSE) Z.beta <- qnorm(1-power, lower.tail=FALSE) Nt <- (Z.alpha*sqrt((r+1)*P*(1-P))+Z.beta*sqrt(r*Pt*(1-Pt)+Pc*(1-Pc)))^2 / r / (Pt-Pc)^2 return(c(Nc=Nt*r, Nt=Nt)) # 第一群,第二群の必要サンプルサイズ } 使用例 > power.prop.test2(200, 200, 0.6, 0.5) [1] 0.5200849 > power.prop.test2(54, 269, 0.5, 0.7) [1] 0.8011749 > power.prop.test3(0.5, 0.7) Nc Nt 92.99884 92.99884 > power.prop.test3(0.5, 0.7, r=1/5) Nc Nt 53.79549 268.97743