2標本ウィルコクソン検定

Rコマンダーの警告

 オリジナルのRコマンダー†1「2標本ウィルコクソン検定」で計算されるウィルコクソンの検定は,wilcox.testという関数を使用しており「タイがあるため、正確な p 値を計算することができません」という警告の出るときがあります.なお,2標本ウィルコクソン検定=Mann-Whitney検定です.

★注意  †1
 ややこしいですがCRAN配布の「Rコマンダー」です.本HPの「改変Rコマンダー」とは異なります.以降はRコマンダー,改変Rコマンダーを区別して述べます.

タイ(ties)とは何か?

● この警告の件に関しては,webでも様々説明されています→ ここ や ここ
結論としては,誤った結果が出ています.Rコマンダーの「2標本ウィルコクソン検定」は,そのまま行うと間違っているというわけです.
「タイ(ties)」とは,同順位のことです.ノンパラメトリックな手法全般に共通なのですが,データに順位をつけるときに同順位があると,補正(同順位補正)が必要になります.
たとえば,

データ例:10,25,30,40,55,68

というデータがあるとき,このデータに順位をつけると,うえのデータ並びと同じにして,小さい順に

順位を付けたデータ例:1,2,3,4,5,6

となります.
もしこれが,

データ例:10,25,25,40,40,68

というデータだとすれば,順位をつけると,うえのデータ並びと同じにして(同じ数値があるので),

順位を付けたデータ例:1,2,2,4,4,6

となります.2位のデータと4位のデータが2つずつあり,これが同順位となります.
警告は「タイ(=同順位のデータ)があるため、正確な p 値を計算することができません」という意味なわけです.Wilcoxon検定の計算過程では,順位の和を使用します.

例えば,

データA:10,22,34,48,50
データB:11,15,20,30,40

これをA,B全てのデータで順位付けすると,

順位を付けたデータA:1,5,7,9,10 → 順位の合計 32
順位を付けたデータB:2,3,4,6,8 → 順位の合計 23

となります.順位の合計値が小さい方はデータBなのでデータBが小さいと判断します(※実際のWilcoxon検定はこんなに単純ではないですが,イメージとしてはこんな感じです).
別の例で,

データA:10,15,30,40,50
データB:10,15,34,30,55

のとき,データをA,B全ての数値で順位付けすると,

順位を付けたデータA:135,8,9 → 順位の合計 26
順位を付けたデータB:13,7,5,10 → 順位の合計 26

となります.AとBに同じ数字があるので同順位(1,3,5)となっています.単純に合計を比べれば同じなのですが,そもそもWilcoxon検定が同順位を想定してない計算なので,同順位があることで計算が合わなくなるのです.従って,同順位の存在しないときと同じような状態になるように補正してやる必要があります.
タイ(=同順位のデータ)があるため、正確な p 値を計算することができません」というのは「同順位の存在しない方法では順位付けに問題ないのに,同順位があるせいで同じ順位が出てしまい,pをちゃんと計算できない」という意味です.

何がどうなっているのか?

まず, Rコマンダーの[ノンパラメトリック検定]-[2標本ウィルコクソン検定]のところでオプションタブから「連続修正を用いた正規近似」を選ぶと,IBM SPSS(Ver.24)のMann-Whitney検定の漸近有意確率(両側)と一致します.しかも警告は出ません.
オプションを何も操作しないと「デフォルト」で計算します.「デフォルト」では「連続修正を用いた正規近似」と一致したり,しなかったりします.警告も出るときがあります.別にオプションの「正確」「正確近似」を選ぶと,「正確」なp値かと思いきやSPSS(Ver.24)のMann-Whitney検定の「正確な有意確率」と一致しません.
結局,Rコマンダーの「2標本ウィルコクソン検定」を行うときは,オプションタブから「連続修正を用いた正規近似」を選ぶときだけ,SPSS(Ver.24)のMann-Whitney検定の漸近有意確率(両側)と一致します.
なお,nが多いときは,同順位が存在しない=警告が出ないときもありますが,必ずしもそうとは限りません.

 

正確な確率を出力したいときは?

nが小さいとき(データの質にもよりますが),同順位が頻発します.その場合は,連続修正(同順位補正)を用いた近似値ではなく,正確確率を参照した方が良いと考えられています(この意見に関しては,確約できる根拠がなく,絶対に良いとはいえません).
Rで正確確率を出力するためには,coinパッケージというオプションにある,wilcox_testという関数を使用します(. が _ に置き換わっています).
Rコマンダーの「2標本ウィルコクソン検定」のオプションで「連続修正を用いた正確近似」を選ぶと,wilcox.testのp値=wilcox_testのp値となります.従って,wilcox_testを使えば,デフォルトで補正した近似値を出力します.

改変Rコマンダーのメニュー「統計量」-「差の検定」には「2標本Wilcoxonの検定(Mann-Whitneyの検定)」というメニューがあり,そこではcoinパッケージのwilcox_testの計算ができます.「検定のタイプ」で「正確」にチェックを入れると正確なp値(=SPSS(Ver.24)のMann-Whitney検定の「正確な有意確率」†2)が出ます.
この場合はSPSSのMann-Whitney検定の正確な有意確率と一致します.正確確率検定は,少数例の時に有効といわれますが,その是非については上述した通り,意見が分かれています.従って,上記のどちらをつかったかを明記すれば,どちらでも間違いではないといえます.

★注意  †2
 SPSSのオプションExactを使用した場合の正確確率です.