[戻る]

Wilcoxonの符号化順位検定


対応のある2群の標本集団において、それらの母集団平均値に差があるかを検定します。 使用できる尺度水準は「間隔」と「比率」。 各ペア間で絶対値の差をとり、その差の大きさの順位を付けて、第一群が大きいペアの順位合計と、第二群が大きいペアの順位合計を求めます。 そして、これら順位合計のうちの小さい方を検定統計量として用います。

このプログラムでは、検定統計量のみを求めますので、差が有意かどうかを調べるためには、別にWilcoxon検定統計量の分布表が必要となります。 ご面倒ですが、こちらのサイトなどで別に計算して下さい。(”統計学上の分布関数の計算”をクリック → "ウィルコクソンの符号順位検定統計量"をクリック → データペア数を送信して現れた表のSが検定統計量、F(S)が片側有意確率、通常は2*F(S)の両側有意確率をお使い下さい)。 これでは面倒なので、そのうち一発で検定できるようにします。



半角文字列で入力して下さい。 最初から表示されている数列は入力例です。

第1群と第2群との間で、データが対になるように順番に入力して下さい。 入力例では、3.2 vs 9.4, 7.5 vs 1.7, 1.1 vs 3.5, ... という具合で数値が対になっています。

第1群:

第2群:

数値の区切り方: カンマ,  タブ,  スペース



ソースコード(Ruby)

# Wilcoxon test
# (C) Copyright 2002, Hisashi SATO 
#
# combination(x,y)は組合せの数を求めるメソッド
# max(x,y) , min(x,y) は、それぞれ大きい方と小さい方の数値を取り出すメソッド

 def wilcoxon(array1, array2)

   # 同じ数値の入っているペアを削除する
   i = 0
   until i == array1.size do
      if array1[i] == array2[i] then
         array1.delete_at(i)
         array2.delete_at(i)
      else
      	 i += 1
      end
   end
   
   # ペア間の差の絶対値を取る
   difference = Array.new(i, 0.0)
   for j in 0..i-1
      difference[j] = (array1[j] - array2[j]).abs
   end

   # ペア間の差の絶対値の順位を求める
   ranking = Array.new(i, 0)
   for j in 0..i-1
   rank = 1
      for k in 0..i-1
         if difference[j] > difference[k] then rank += 1 end
      end
   ranking[j] = rank
   end

   # 順位合計を求める
   rank1, rank2 = 0, 0
   for j in 0..i-1
      if array1[j] > array2[j] then
         rank1 += ranking[j]
      else
         rank2 += ranking[j]
      end
   end

   #return(有効ペア数,第1群の順位合計,第2群の順位合計)
   return i, rank1, rank2

 end






戻る