対応のある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, ... という具合で数値が対になっています。
# 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