MENU

R で割合の差の検定に必要なサンプルサイズを計算する方法

割合の差の検定のサンプルサイズ計算を R で行う方法、エクセルで行う方法

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

割合の差の検定のサンプルサイズ計算 R の関数を使って

統計ソフトRには、power.prop.test()という関数が用意されていて、簡単に計算できる。

第1群が50%(0.5)、第2群が75%(0.75)と想定された場合、有意水準αを5%(0.05)、検出力を80%(0.8)、とすると、必要なサンプルサイズは、一群58例と計算される。

> power.prop.test(p1=0.5, p2=0.75, power=0.8)
Two-sample comparison of proportions power calculation
n = 57.67344
p1 = 0.5
p2 = 0.75
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group

検出力を90%(0.9)に上げると必要なサンプルサイズは大きくなり、一群77例となる。

> power.prop.test(p1=0.5, p2=0.75, power=0.9)
Two-sample comparison of proportions power calculation
n = 76.70693
p1 = 0.5
p2 = 0.75
sig.level = 0.05
power = 0.9
alternative = two.sided
NOTE: n is number in *each* group

割合の差の検定のサンプルサイズ計算を power.prop.test() を使わずに

割合の差の検定のためのサンプルサイズ計算を power.prop.test() を使わずに行ってみる。

power.prop.test() のプログラムの一部を抜き出して、独自の関数 prop.test.sample.size() を作る。

prop.test.sample.size <- function (p1, p2,
sig.level=0.05, power=0.8,
alternative=c("two.sided","one.sided"))
{
alternative <- match.arg(alternative)
tside <- switch(alternative, one.sided=1, two.sided=2)
Za <- qnorm(sig.level/tside, lower.tail=FALSE)
Zb <- qnorm(power)
d <- abs(p1-p2)
q1 <- 1-p1
q2 <- 1-p2
pbar <- (p1+p2)/2
qbar <- 1-pbar
v1 <- p1*q1
v2 <- p2*q2
vbar <- pbar*qbar
n <- ((Za*sqrt(2*vbar)+Zb*sqrt(v1+v2))/d)^2
NOTE <- "n is number in *each* group"
METHOD <- "Two-sample comparison of proportions sample size"
structure(list(n=n, p1=p1, p2=p2,
sig.level=sig.level, power=power,
alternative=alternative, note=NOTE,
method=METHOD), class="power.htest")
}

第1群0.5、第2群0.75、有意水準0.05、検出力0.8での必要例数は、さきほどと同じく一群58例と計算される。

> prop.test.sample.size(p1=0.5, p2=0.75)
Two-sample comparison of proportions sample size
n = 57.67344
p1 = 0.5
p2 = 0.75
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group

検出力を0.9に上げると、77例に必要例数が上昇するのも同じだ。適切に抜き出せている。

> prop.test.sample.size(p1=0.5, p2=0.75, power=0.9)
Two-sample comparison of proportions sample size
n = 76.70693
p1 = 0.5
p2 = 0.75
sig.level = 0.05
power = 0.9
alternative = two.sided
NOTE: n is number in *each* group

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

割合の差の検定のサンプルサイズ計算 1:k の割り付け比の場合

割合の差の検定で、同数の二群ではなく、割り付け比例えば 1:2 とか、1:3 とかで例数に差をつけたい場合がある。

上記関数を少し改造して、そのような場合の関数を作った。

prop.test.sample.size.unequal <- function (p1, p2,
sig.level=0.05, power=0.8,
alternative=c("two.sided","one.sided"),
ctrl.ratio=1)
{
alternative <- match.arg(alternative)
tside <- switch(alternative, one.sided=1, two.sided=2)
Za <- qnorm(sig.level/tside, lower.tail=FALSE)
Zb <- qnorm(power)
k <- ctrl.ratio
d <- abs(p1-p2)
q1 <- 1-p1
q2 <- 1-p2
pbar <- (p1+p2)/2
qbar <- 1-pbar
v1 <- p1*q1
v2 <- p2*q2
vbar <- pbar*qbar
n <- ((Za*sqrt(2*vbar)+Zb*sqrt(v1+v2))/d)^2
nA <- 1/k*((Za*sqrt((k+1)*vbar)+Zb*sqrt(k*v1+v2))/d)^2
nB <- k*nA
NOTE <- "n is number in *each* group"
METHOD <- "Two-sample comparison of proportions sample size"
structure(list(n.equal=n, n.unequal.1=nA,
n.unequal.2=nB, control.ratio=ctrl.ratio,
p1=p1, p2=p2,
sig.level=sig.level, power=power,
alternative=alternative, note=NOTE,
method=METHOD), class="power.htest")
}

参考文書:比率の差の検定の例数設計

http://www012.upp.so-net.ne.jp/doi/sas/simulation/sample_size2/sample_size_prop.pdf

割り付け比 ctrl.ratio を1にすると(デフォルトなので指定不要)、改造前の結果と同一になる。

> prop.test.sample.size.unequal(p1=0.5, p2=0.75)
Two-sample comparison of proportions sample size
n.equal = 57.67344
n.unequal.1 = 57.67344
n.unequal.2 = 57.67344
control.ratio = 1
p1 = 0.5
p2 = 0.75
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group

割り付け比を2にすると、群2と群1の比が2になる。

群1の例数は少なくて済むようになるが、合計必要例数は116例から132例に増加する。

> prop.test.sample.size.unequal(p1=0.5, p2=0.75, ctrl.ratio=2)
Two-sample comparison of proportions sample size
n.equal = 57.67344
n.unequal.1 = 43.85406
n.unequal.2 = 87.70811
control.ratio = 2
p1 = 0.5
p2 = 0.75
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group

割り付け比を3にすると、合計必要例数はさらに大きくなり158例になる。

> prop.test.sample.size.unequal(p1=0.5, p2=0.75, ctrl.ratio=3)
Two-sample comparison of proportions sample size
n.equal = 57.67344
n.unequal.1 = 39.2444
n.unequal.2 = 117.7332
control.ratio = 3
p1 = 0.5
p2 = 0.75
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group

割合の差の検定のサンプルサイズ計算をエクセルで

エクセルシートでサンプルサイズ計算ができるように、エクセルファイルを作成した。

よければどうぞ。

割合の差の検定(割り付け比にも対応)サンプルサイズ計算【エクセルでサンプルサイズ】 | TKER SHOP

割合の差の検定のサンプルサイズ計算 エクセルファイルの使い方の解説【動画】

まとめ

割合の差の検定のサンプルサイズ計算を R で実施してみた。

割り付け比を考慮したサンプルサイズ計算もできるスクリプトも書いてみた。

1:1 以外は、検出力が下がるため、必要な全体例数が大きくなる。

割り付けは、可能な限り1:1が望ましい。

また、エクセルファイルでも実施できるようにした。

参考になれば。

参考PDF

比率の差の検定の例数設計

http://www012.upp.so-net.ne.jp/doi/sas/simulation/sample_size2/sample_size_prop.pdf

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメント一覧 (2件)

コメントする

目次