MENU

R でマンホイットニーの U 検定に必要なサンプル数を計算する方法

マンホイットニー U 検定のサンプルサイズ計算の方法

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

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

目次

マンホイットニーの U 検定 サンプルサイズ計算

R の”samplesize“というパッケージで、マンホイットニーの U 検定のサンプルサイズ計算ができる。

samplesize パッケージのn.wilcox.ord()を使う。

マンホイットニーの U 検定は、ウィルコクソンの順位和検定と数学的に同じなため、ウィルコクソン・マン・ホイットニー検定とも言われるため、n.wilcox.ord() という名前の関数になっている。

これは、正規近似を用いた簡易的な方法である。

samplesizeパッケージをインストールして、library()で呼び出す。

install.packages("samplesize")
library(samplesize)

検出力80%、有意水準5%、両群同数で1:1(t=0.5)、グループ1は33%、33%、34%と三分割したグループが同数に対し、グループ2は、66%、20%、14%だとすると、サンプルサイズは36例ずつ必要と計算される。

> n.wilcox.ord(power=0.8, alpha=0.05, t=0.5, p=c(0.33, 0.33, 0.34), q=c(0.66, 0.20, 0.14))
$`total sample size`
[1] 72
$m
[1] 36
$n
[1] 36

マンホイットニーの U 検定 サンプルサイズ計算 プログラムの中身を見てみる

n.wilcox.ord() のプログラム中の主要な部分を抜き出してみると以下のようになる。

計算結果が見やすいように改造してある。

n.wilcox.ord.abs <- function(power=0.8, sig.level=0.05,
t, p, q, alternative=c("two.sided","one.sided")){
alternative <- match.arg(alternative)
side <- switch(alternative, one.sided=1, two.sided=2)
Za <- qnorm(sig.level/side, lower.tail=FALSE)
Zb <- qnorm(power)
pq1 <- function(p,q){
D <- length(p)
PQ1 <- 0
for (i in 2:D){
PQ1 <- PQ1 + p[i] * sum(q[1:(i-1)])
}
return(PQ1)
}
p.t <- (1-t)*p
q.t <- t*q
pq.t <- p.t+q.t
pq.t.3 <- pq.t^3
t.sum <- sum(pq.t.3)
pq <- cbind(p,q)
pq.sum <- sum(apply(pq,1,prod))
N <- (((Za+Zb)^2)*(1-t.sum))/(12*t*(1-t)*(pq1(p=p,q=q)+0.5*pq.sum-0.5)^2)
samplesize <- ceiling(N)
m <- round(ceiling(N)*(1-t),0)
n <- round(ceiling(N)*t,0)
NOTE <- "m or n means sample size for each group"
METHOD <- "Wilcoxon-Mann-Whitney test sample size"
structure(list(`total sample size` = samplesize, m=m, n=n,
t=t, p=p, q=q, sig.level=sig.level, power=power,
alternative=alternative, note=NOTE, method=METHOD),
class="power.htest")
}

同じ設定で計算してみると、一群36例と計算されて、同一の結果になる。

> n.wilcox.ord.abs(t=0.5, p=c(0.33, 0.33, 0.34), q=c(0.66, 0.20, 0.14))
Wilcoxon-Mann-Whitney test sample size
total sample size = 72
m = 36
n = 36
t = 0.5
p = 0.33, 0.33, 0.34
q = 0.66, 0.20, 0.14
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: m or n means sample size for each group

片群を小さくして2:1の割り付け(t=0.33)にすると、56例と28例と計算される。

> n.wilcox.ord.abs(t=0.33, p=c(0.33, 0.33, 0.34), q=c(0.66, 0.20, 0.14))
Wilcoxon-Mann-Whitney test sample size
total sample size = 84
m = 56
n = 28
t = 0.33
p = 0.33, 0.33, 0.34
q = 0.66, 0.20, 0.14
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: m or n means sample size for each group

片側検定にも対応できるように改造した。

両群同じ例数で片側検定の場合、28例ずつと計算される。

> n.wilcox.ord.abs(t=0.5, p=c(0.33, 0.33, 0.34), q=c(0.66, 0.20, 0.14), alternative="one.sided")
Wilcoxon-Mann-Whitney test sample size
total sample size = 57
m = 28
n = 28
t = 0.5
p = 0.33, 0.33, 0.34
q = 0.66, 0.20, 0.14
sig.level = 0.05
power = 0.8
alternative = one.sided
NOTE: m or n means sample size for each group

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

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

マンホイットニーの U 検定のサンプルサイズ計算をエクセルで

エクセルシートでマンホイットニーの U 検定のためのサンプルサイズ計算ができるようにした。

よければぜひ。

マン・ホイットニーのU検定 サンプルサイズ計算【エクセルでサンプルサイズ】 | TKER SHOP

使い方解説動画を作成した。

こちらもよければぜひ。

まとめ

マンホイットニーの U 検定のためのサンプルサイズ計算を R で実施した。

エクセルでも計算できるように移植した。

正確な方法ではなく正規近似を用いる方法であるが、実用上は問題ないと思う。

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

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

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

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

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメント一覧 (2件)

コメントする

目次