あるデータのリバイスで、患者さんが最後に認知機能検査を受けた時期から亡くなるまでの期間が解析グループで差があるんじゃないか、とレビューアーから指摘された。
なので、その期間が各群で差がないことを示す検定結果をつける事に。
対応のない2群比較の場合は、
- 正規分布で等分散 → Student t-test(スチューデントのt検定、パラメトリック)
- 正規分布で等分散/不等分散両方OK → Welchi's test(ウェルチのt検定)
- 正規分布でも等分散でもない → Wilcoxon rank sum test(= Mann-Whitnes&s U test、ノンパラメトリック)
という感じで検定する。
ヒストグラムで確認したら、正規分布じゃなかったので、ノンパラのWilcoxで検定。
Wilcoxonの順位和検定(=Mann-WhitneyのU検定)
Student t-testとWelchi's t testが平均値(mean)を比較して検定するのに対して、
Wilcoxon rank sum testは中央値(median)を比較して検定する。
データ分布を問わずに使う事ができるが、正規分布の場合はStudent-t testの方が有意差がつきやすい。
Wilcoxsonを使う上での注意事項▼
- 有意水準=5%で検定する場合はn数が4以上必要
- 2群ともn<20の場合、両側確率が表示される
- 「有意差あり」なら確実に有意差があるけど、「有意差なし」の場合は確実ではなく、「有意差があるとは言い切れない」という表現になる
- 分布の片側に大きな外れ値があったり、正規分布より両裾の広がりが大きい分布だったりなど、ヒストグラムを描いて目で確認する
Wilcoxon rank sum test は、
wilcox.test(x, y, alternative = "two.sided")
で。
今回は、"Data_C_LBD"というデータフレームの中で、"LATE"という列の"LATE(+)"と"LATE(-)"に分けて、"MMSEtoDeath" に差があるかどうか検定したいので、下記のように記述。
wilcox.test(Data_C_LBD$MMSEtoDeath[Data_C_LBD$LATE=="LATE(+)"], Data_C_LBD$MMSEtoDeath[Data_C_LBD$LATE=="LATE(-)"], alternative = "two.sided")
ちなみに複数条件の場合は、
Data_C_LBD$MMSEtoDeath[Data_C_LBD$LATE=="LATE(+)",Data_C_LBD$Sex=="Male"]
のように条件をつなげていけばOK。
結果は、
output
Wilcoxon rank sum test with continuity correction
data: Data_C_LBD$MMSEtoDeath[Data_C_LBD$LATE == "LATE(+)"] and Data_C_LBD$MMSEtoDeath[Data_C_LBD$LATE == "LATE(-)"]
W = 1474.5, p-value = 0.8245
alternative hypothesis: true location shift is not equal to 0
という事で、「2つの群に差があるとは言えない」という結果になった。