Mann-Whitney U テスト (Wilcoxon rank-sum test):
ノンパラメトリックな 2 群比較

statistics/group_comparison/mw_u_test
2018/09/20 更新

  1. 概要: Mann-Whitney の U テストとは
  2. R で Mann-Whitney の U テストを実行する

広告

概要: Mann-Whitney U test とは

Mann-Whitney U test とは,正規分布 normal distribution を仮定しない 2 つの群の平均値が異なるかどうかを評価するノンパラメトリックな検定である。仮説 は以下のように説明されることが多い。

帰無仮説: 2 つの群は同じ母集団に由来する。
対立仮説: 片方の群が大きな値をもつ。

Mann–Whitney–Wilcoxon test, Wilcoxon rank-sum test, Wilcoxon–Mann–Whitney test とも呼ばれる。ただし,Wilcoxon signed-rank test は異なる検定なので注意すること。


R で Mann-Whitney の U テストを実行する

R では Wilcoxon rank-sum test の名前が使われている。

このテストでは、単純に 2 つのベクトル形式のデータがあればよい。データの作り方については、R: データフレームの作成 を参照のこと。

一次元なので、Excel からコピペするのが簡単だと思ったので、上記の R: データフレームの作成 にある通り


> group1=read.table(pipe("pbpaste"))
> group2=read.table(pipe("pbpaste"))


として 2 つのグループを作り、


> wilcox.test(group1,group2)


で検定した。ところが

Error in wilcox.test.default(group1,group2) : 'x' must be numeric

というエラーが出てしまい、どうも変数が数値として認識されていないようであった。たぶん Excel からコピペすると list 型になってしまうのだろう。

そこで


> group1=c(10,12,10,15,11)
> group2=c(28,29,28,30,34)


のようにして手入力でデータ作成。再びテストを実行すると、今度は cannot compute exact p-value with ties というエラーが出る。このページ によると、ties とは「同じ値」のことで、それが含まれていると p 値を計算できないらしい。

wilcox.test は、データ数の合計が 50 未満で、同値がない場合にのみ正確な p 値を計算するらしい (3)。同値がある場合は、近似で p 値を計算するしかないらしい。

同値がある場合でも実行できる wilcox.exact() という関数があり、これを使用するにはパッケージをインストールする必要がある (4)。


> install.packages("exactRankTests", repos="http://cran.ism.ac.jp/")
> $ library(exactRankTests)



広告

コメント欄

フォーラムを作ったので、各ページにあるコメント欄のうち、コメントがついていないものは順次消していきます。今後はフォーラムをご利用下さい。管理人に直接質問したい場合は、下のバナーからブログへ移動してコメントをお願いします。


References

  1. Amazon link: 岩波 理化学辞典 第5版: 使っているのは 4 版ですが 5 版を紹介しています。
  2. By i dont know - google, CC BY-SA 4.0, Link
  3. 順序尺度. Link: Last access 2018/09/20.
  4. Rによるウィルコクソンの順位和検定. Link: Last access 2018/09/20.