2025/5/2

エクセル関数を使ったマンホイットニーのU検定のやり方【コピペ用テンプレートあり】

Thumbnail for エクセル関数を使ったマンホイットニーのU検定のやり方【コピペ用テンプレートあり】

はじめに

エクセル関数を使った、 マンホイットニーのU検定(ウィルコクソンの順位和検定)のやり方を紹介します。 ここでは大標本向けの方法(正規近似)を用います。

下にテンプレート(セルデータサンプル)があるので、 コピペですぐに使用できます。

マンホイットニーのu検定とは

マンホイットニーのU検定とは、「2つの母集団の分布の中央値に有意差があるか」を判定する統計的仮説検定の1つです。 ウィルコクソンの順位和検定とも呼ばれます。 対応のないt検定のノンパラメトリック版として使用されます。

いつ使うのか?

マンホイットニーのU検定は、以下のような場合に使用します。

  • カテゴリデータでない
  • データが正規分布していない、または外れ値が大きい(間隔・比率尺度データのとき)
  • データが独立した2群(グループ)

マンホイットニーのU検定は、 標本サイズによって途中の手順が変わります。 ここでは、 大標本向けの方法(正規近似)を用いる ため、 以下のいずれかの条件を満たす必要があります。

  • 2群の両方のサイズ n ≧ 8
  • 2群の内の片方のサイズ n ≧ 21

算出値の意味

仮説検定では、 p値 を算出し、 有意水準α と比較を行います。 マンホイットニーのU検定(正規近似)での p値 は、 検定統計量 ZUZ_Uから NORMSDIST関数を使って得られます。

p値有意水準α による判定は以下の通りです。

  • p値 < α のとき: 各群の母集団の中央値の間に有意差が ある
  • p値 ≥ α のとき: 各群の母集団の中央値の間に有意差が ない

エクセルでの算出方法

以下の 全セルをコピー ボタンをクリックし、エクセルの A1 セルに貼り付けると、 K16 セルにp値(下記の場合 0.031449255)、 K19セルに検定結果(下記の場合 (有意差)あり)が出力されます。

データを書き換える場合は、 A, B列のデータを書き換え、 J3, J4セルのグループ名も更新してください。 またデータ数に応じて、D ~ G列のセル中の計算式を下に拡張(コピー)、 または削除してください。

ABCDEFGHIJKLM
1データ
2グループ順位同値判定kk^3-k順位和nU
3X9953110X101431257
4Y13735110Y58225518
5X10851110
6X11147110
7Y12442110N56
8Y13438110T78
9X11643110
10X13339110U257
11Y150261324μ_u387.5
12X10352110σ_u^23679.614
13Y13536.5126z_u2.151
14X13933.5126
15Y9054110有意水準α0.05
16Y11245.5126p値0.031
17X14630110
18X15026000結果
19X15520.5126有意差あり
20X14132110
21X13933.5000
22X1961110
23X15520.5000
24X15919110
25X16117110
26X16414.5126
27X14431110
28X15026000
29X13240110
30Y16414.5000
31Y17210110
32Y15422.5126
33Y15422.5000
34X13041110
35Y15124110
36X14729110
37Y16018110
38Y16216110
39Y1789110
40Y1798110
41Y1825.5126
42Y1825.5000
43X11245.5000
44Y16911110
45Y1874110
46Y14928110
47Y10949.5126
48X7955110
49X10949.5000
50X1883110
51X6456110
52X16812.5126
53X16812.5000
54X11544110
55Y1807110
56X13536.5000
57Y1912110
58Y11048110

算出手順

エクセルでマンホイットニーのU検定(正規近似)を行うための手順は、以下の6つです。

1. データ値の順位を算出

2グループを混ぜたデータを、RANK.AVG()関数で小さい順に並べます。 同値の場合は平均値をとります。

2. 重複の補正項の計算

データ中に重複がある場合、検定統計量 ZUZ_U を算出する値に補正項 TT を入れる必要があります。

補正項:

T=i=1ki3kiT = \sum_{i=1} k_i^3 - k_i

そのために必要な k2kk^2-k の計算を、E ~ G列で以下のように行います。

  1. 同値判定 (E列):重複している場合は、2回目以降の重複値で0を、それ以外は1を返す(ROW(), MATCH()関数使用)。
  2. kk の算出 (F列): 重複数をカウント(同値判定 = 1 の行のみ)。
  3. k2kk^2-k の算出 (G列):kk を使って計算。

ROW関数

指定したセルの行番号を返す。
未指定の場合、呼び出し元のセルが指定される。

例:=ROW()

  • 第1引数 : セルの指定範囲(オプション)

MATCH関数

指定した範囲の中で検索し、最初にヒットした相対位置を返す。

例:=MATCH(50,B:B,0)

  • 第1引数 (99): 検索値(必須)
  • 第2引数 (B:B): 検索範囲(必須)
  • 第3引数 (0): 照合の型を 0, -1, 1 で指定(オプション)
    • 0: 完全一致したセルを返す
    • 1: 検索値以下の最大値のセルを返す
    • -1: 検索値以上の最小値のセルを返す

3. グループ別に順位和, nn, UUを算出

2グループそれぞれ、個別の順位和とデータサイズ nnUU値 を算出します。

a. 順位和

SUMIFS()関数を使い、各グループごとに順位和(順位の合計値)を算出します。

SUMIFS関数

条件にマッチした値のみの合計値を返す。
第4引数, 第5引数, ... を追加することで、条件を増やすことができる(省略可、最大127条件)。

例:=SUMIFS(D:D,A:A,J3)

  • 第1引数 (D:D): 合計する値の範囲(必須)
  • 第2引数 (A:A): 条件をチェックする範囲(必須)
  • 第3引数 (J3): 条件(必須)
  • 第4引数, 第5,...引数 : 条件範囲と条件を追加(オプション)
b. データサイズ nn

=COUNTIFS()関数を使い、各グループごとにデータサイズを算出します。

COUNTIFS関数

条件にマッチした値をカウントする。
第3引数, 第4引数, ... を追加することで、条件を増やすことができる(省略可、最大127条件)。

例:=COUNTIFS(A:A,J3)

  • 第1引数 (J3): 条件をチェックする範囲(必須)
  • 第2引数 (J3): 条件(必須)
  • 第3引数, 第4,...引数 : 条件範囲と条件を追加(オプション)
c. UU

上記の a., b.の結果を使って、各グループごとにUU値を算出します。 データ中の2グループがX, Yのとき、 グループ XXUU値は、以下の通りです。

UX=nXnY+nX(nX+1)2HXU_X = n_Xn_Y + \frac{n_X(n_X+1)}{2} - H_X
  • nXn_X : グループ XX のデータサイズ
  • nYn_Y : グループ YY のデータサイズ
  • HXH_X : グループ XX の順位和

4. 検定統計量 ZUZ_U の算出

手順2, 3で算出した値を使って、検定統計量 ZUZ_U を算出します。

ZU=UμUσU2Z_U = \frac{|U - \mu_U |}{\sqrt{\sigma_U^2}} \\
  • U=min(UX,UY)U = {\rm min}(U_X, U_Y)
  • μU=nXnY/2\mu_U = n_Xn_Y/2
  • σU2=nXnY/12×(N+1TN(N+1))\sigma_U^2 = n_Xn_Y/12 \times (N+1-\frac{T}{N(N+1)})
  • N=nX+nYN = n_X + n_Y

5. α設定、p値の算出

事前に、有意水準αを設定します。 0.05(5%)や 0.01(1%)が一般的です。

次に、検定統計量 ZUZ_U から、NORMSDIST()関数を使ってp値を算出します。

NORMSDIST関数

標準正規分布の累積分布関数を返す。

例:=NORMSDIST(1.96)

  • 第1引数 (1.96): 標準正規分布の値(必須)

6. 結果の表示

手順5で設定した有意水準と、算出したp値を比較し、検定結果を表示します。