こんにちは。ほしのはやしです。
3群以上の数値の比較では、one-way ANOVAがしばしば使われます。
しかしながら、one-way ANOVAは全ての群で正規性かつ等分散性を満たす場合のみにしか使えないため、非正規性である場合の解析手法についても知っておく必要があります。
One-way ANOVAについての説明はこちらのページをご参照ください!
このページでは、one-way ANOVAのノンパラメトリック版とでも言うべき、Kruskal-Wallis検定のやり方について説明していきます!
Kruskal-Wallis検定
いつ使う?Kruskal-Wallis検定の使い道
3群以上の数値を比較したい場合で、いずれかの群が一つでも正規性を満たさないか、等分散性を満たさない場合です。
実験とかで評価する場合は正規性を満たすことはあまりないので、one-way ANOVAよりもよく使うという説もあります。
具体的なコード(R studio)
薬A, B, Cをそれぞれ使ったあと4週後に測定した血圧(BP)に差があるか調べたい、状況を考えます。
テーブル名:datasheet2
Drug | BP |
---|---|
A | 138 |
A | 145 |
B | 120 |
C | 138 |
A | 165 |
C | 135 |
… | … |
library(tidyverse)
kurskal.test(BP ~ Drug, data = datasheet2)
これだけで結果が出ます!
P値に有意差が出たらどうする?
3群以上の比較の場合、有意差はいずれかの2群で差があることを示唆しているに過ぎません。
そのため、有意差が出た場合は、どの群間で差があるかを調べるpost-hoc analysisというのをやる必要があります。
Kruskal-Wallis検定における全ての群間を調べるPost-hoc analysisには以下の方法があります。
- Dunn’s test:N数が多い場合
- Conover test:少数のアンバランスなグループ、またはバランスかアンバランスかは問わず多数のグループの場合
- Nemenyi test:サブグループがアンバランスでグループの数が少ない場合
- Steel–Dwass-Critchlow–Fligner test:N数が少ない場合
N数の基準については定まっていませんが、Steel-Dwassが実験などの場合には安定かもしれません。
ただ多くの論文ではDunnテストが使われている事実もあります。
DunnまたはSteel-Dwassによるpost-hoc analysis (R studio)
先程の続きとします。
library(tidyverse)
#Dunn’s Kruskal-Wallis post-hoc testの場合
dunnTest(BP ~ Drug, data = datasheet2, method=”holm”)
#Dwass, Steel, Critchlow, Fligner post-hoc testの場合
dscfAllPairsTest(BP ~ Drug, data = datasheet2)
これでそれぞれの群についての調整されたP値(adj P)が計算されました。
どの群に差があるか調べることができますね!
まとめ
正規性を満たさず3群以上の数値の比較したい場合に使えるKruskal-Wallis検定とPost-hoc解析について説明しました!
少しでも統計について慣れていただけると幸いです!
コメント