対応のある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