ウィルコクソンの順位和検定、マン・ホイットニーのU検定

wilcox_testの Z値 の求め方

Z=2.2798 の算出方法について解説します

X群とY群の順位和 $(W)$
R
rank_sum <- dat_xy3 %>%<br>  group_by(group) %>%<br>  summarise(sum_rank = sum(rank))<br>print(rank_sum)

X群の順位和: $W_x=75$
Y群の順位和: $W_y=135$
X群のサイズ: $n_x$
Y群のサイズ: $n_y$
サンプルサイズ: $N=n_x+n_y$

Z値の求め方

Y群を基準として記載

順位和の期待値 $E[W]=\dfrac{n_y(n+1)}{2}$

順位和の分散 $V[W]=\dfrac{n_xn_y(n+1)}{12}$

Z値

$z=\dfrac{W-E[W]}{\sqrt{V[W]}}$

R
# グループ別のランク和の計算
Wx = 75
Wy = 135

# サンプルサイズ
nx <- sum(group == "X")
ny <- sum(group == "Y")
n <- nx + ny

# U統計量の計算
# Y群を基準にしているので、ここではWyを使用します


#期待値
EW <- ny*(n+1)/2
#分散
VW <-  nx*ny*(n+1)/12
# Z値の計算
Zw <- (Wy - EW) / sqrt(VW)

# 結果の出力
Zw
R
#p値
pnorm(Zw, lower.tail = FALSE)

coinパッケージのwilcox_testの答えと微妙に違うようです・・・?
タイデータを考慮したマン・ホイットニーU検定を実行してみましょう

マン・ホイットニーのU検定

タイデータのがあるので補正したZ値を求めます

マン・ホイットニーのU統計量 $U=n_xn_y+\dfrac{n_y(n_y+1)}{2}-W_y$

順位和の期待値 $E[U]=\dfrac{n_xn_y}{2}$

補正項 $T=\sum{t_i^3-t_i}$ (t=タイデータの個数)

分散 $V[U]=\dfrac{n_xn_y(N+1)}{12}-\dfrac{n_xn_y}{12N(N-1)}T$

検定統計量

$z=\dfrac{|U-E[U]|}{\sqrt{V[U]}}$

R
# グループ別のランク和の計算
Wx = 75
Wy = 135

# サンプルサイズ
nx <- sum(group == "X")
ny <- sum(group == "Y")
n <- nx + ny

# U統計量の計算
# Y群を基準にしているので、ここではWyを使用します
U <- nx*ny+ny*(ny+1)/2-Wy

#期待値
EU <- nx*ny/2

# タイデータの個数
t <- table(dat_xy3$rank) 
# タイの修正項
T <- sum(t^3 - t) 
#分散
VU <- (nx*ny/12)*((n+1)-T/(n*(n-1)))

# Z値の計算
Zu <- abs(U - EU) / sqrt(VU)

# 結果の出力
Zu
R
#p値
pnorm(Zu, lower.tail = FALSE)

これでwilcox_testのZ値、p値と同値になりました

前半で使用した wilcox.test を使用する場合には、correct =FALSE とすることで連続性の補正が省かれてマン・ホイットニーU検定を実行することができます

R
wilcox.test(
  data ~ group,
  data = dat_xy,
  alternative = "greater",
  correct =FALSE
)

p値は同値となりました

タイがあるので正確検定ができず”警告メッセージ”が記載されますが問題ありません(correct =FALSEにしているので、このメッセージは不要かと思うのですが、、、)

コメント欄 『間違い』や『分かりにくい部分』などのご意見もお寄せください

タイトルとURLをコピーしました