目的
二群の平均値の差の検定(両側検定)において,二群のサンプルサイズが異なるときの検出力を求める。
R には,power.t.test という関数があり,
二群のサンプルサイズが同じであるときのパワーアナリシスを行うことができる。
使用法
power.t.test2(n1, n2, delta, sig.level=0.05)
引数
n1, n2 両群のサンプルサイズ
delta 効果量
sig.level 有意水準(省略時には 0.05 が仮定される)
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/power_t_test2.R", encoding="euc-jp")
# 二群の平均値の差(両側検定)において,二群のサンプルサイズが異なるときの検出力を求める
power.t.test2 <- function( n1, # サンプルサイズ
n2, # サンプルサイズ
delta, # 効果量
sig.level=0.05) # 有意水準
{
phi <- n1+n2-2 # 自由度
lambda <- sqrt(n1*n2/(n1+n2))*delta
q <- qt(sig.level/2, phi, lower.tail=FALSE)
return(pt(-q, phi, ncp=lambda)+pt(q, phi, ncp=lambda, lower.tail=FALSE))
}
使用例
> power.t.test2(10, 8, 0.6)
[1] 0.2214264
全体で 100 のサンプルを採るとき,
サンプルサイズをどのように配分したら最も検出力が高くなるか。
> n <- 100
> n1 <- 3:(n-3)
> power <- sapply(n1, function(n1) { n2 <- n-n1; power.t.test2(n1, n2, 0.6) })
> pdf("power.pdf", width=6, height=5)
> plot(n1, power,type="l")
> dev.off()
50 ずつにしたときが最も検出力が高い。