Rで符号順位和検定(対応のある2群の差のノンパラメトリック検定)

読み込んだデータから対応のある2群間の差の検定を行ってみる。今回は、ノンパラメトリックな方法で、符号順位和検定を使う。

読み込んだデータは表の通り。読み込み方はここ

このデータは、計画行列(デザイン行列)となっている。同一の被験者で筋トレ前と筋トレ後で握力を測定したことを想定した仮想のデータとなっている。groups列はpre(前)とpost(後)で、subjectsは被験者、valuesは握力の値となっている。今回の検定ではsubjectsのデータは使わないが、対応ありということでわかりやすくするため載せている。

groupssubjectsvalues
pres132.1
pres229.5
pres334.8
pres431.6
pres532.6
pres634.1
pres725.3
pres831.4
pres930.2
pres1030.8
pres1127.7
pres1232.2
pres1331.3
pres1430
pres1527.8
pres1632.9
pres1734.5
pres1834.2
pres1926.4
pres2032.7
posts134.6
posts234.9
posts336.2
posts434.3
posts535.7
posts635.8
posts732.3
posts832.8
posts935.3
posts1033.8
posts1133.1
posts1233.3
posts1334.7
posts1435
posts1535.9
posts1633.5
posts1734.4
posts1835.2
posts1936.4
posts2035.1

でもって、以下のコードを実行する
なお、このデータの名前はdata1という名前になっている。~の前にvalues~の後にgroupsを指定する。なお、data1の後に$をつけてからvalusesまたはgroupsを指定しているが、これはdata1の中にあるvaluesまたはgroupsという意味になる。
paired=は、対応があるかないかを指定する。TRUEにすると対応ありを指定できる。

 wilcox.test(data1$values ~ data1$groups, paired = TRUE)

そうすると以下の結果が返ってくる。

	Wilcoxon signed rank exact test

data:  data1$values by data1$groups
V = 1, p-value = 3.815e-06
alternative hypothesis: true location shift is not equal to 0

p-valueがp値になる。3.815e-05は指数表示で3.815*10のマイナス5乗ということで、すごく小さい値になっている。

なお、以下のようなデータの並びにして分析をする場合も記述しておく。
これは1列目被験者、2列目にpreの握力、3列目にpostの握力を記述している。1列目のsubjectsはわかりやすくするために記述しているが、無くても良い。

subjectsprepost
s132.134.6
s229.534.9
s334.836.2
s431.634.3
s532.635.7
s634.135.8
s725.332.3
s831.432.8
s930.235.3
s1030.833.8
s1127.733.1
s1232.233.3
s1331.334.7
s143035
s1527.835.9
s1632.933.5
s1734.534.4
s1834.235.2
s1926.436.4
s2032.735.1

このような場合のt検定のコードは以下の通り。~を , にして、2列目にpre、3列目にpostを配置している。結果は同じになる。

wilcox.test(data1$pre, data1$post, paired = TRUE)

コメント