Rで対応のない2群検定:Mann-Whitney U検定、Wilcoxon Rank-Sum 検定、箱ひげ図、バイオリンプロット

Rでプレゼンテーション

例えば、数学のテストでXクラスとYクラスで平均点に差があるのか?ないのか?を調べたいとします。

教壇でタブレットを使う先生のイラスト(男性)このクラスの点数は、他のクラスと比べて差があるのか???

これは、XクラスとYクラスが異なる学生からなり、それぞれが受けた数学のテストの点数を比較しますので、”対応のない”2群の検定を行います。

”対応のない”2群の検定を行う場合は、2群のデータは正規性があるのか?2群のデータは等分散性があるのか?を確認してから、検定方法を決める必要があります。

正規性等分散性選択手法
Student t 検定
×Welch’s t 検定
××Man Whitney U 検定
(= Wilcoxon signed-rank 検定)

データに正規性がある場合は、Student t検定、あるいはWelch’st検定です。

以下をご参照ください。

Rで対応のない2群検定:Student t 検定, Welch's t検定, 箱ひげ図, バイオリンプロット,ビースウォームプロット
例えば、国語のテストがあった時に、XクラスとYクラスのテストの点数の平均値に差があるのか?ないのか?を知りたいとします。 隣のクラスと差があるのか..?? 各クラスのテストの点数の平均値を比較する際に使用するのは対応のない2群の...

正規性がない場合は、Man Whitney U検定(マンホイットニーU検定)(=Wilcoxon Rank-Sum 検定(ウィルコクソンの順位和検定))を用います。

同一人物が受けた異なるテストの比較などは、”対応のある”2群のt検定を行います。下記をご参照ください。

対応のある2群のt検定 ー箱ひげ図, ggpairedー
例えば、同じ人が睡眠薬AとBを服用すると、それぞれの効果に差があるのか?ないのか?を知りたいとします。 その際に、よく使用されるのが対応のある2群のt検定です。 ”対応のある”2群のt検定は、比べるデータは同じ人がAを服...




1. 2群の正規性(シャピロ・ウィルク検定)と2群間の等分散性(F検定)を確認


 

正規性等分散性選択手法
Student t 検定
×Welch’s t 検定
××Man Whitney U 検定
(= Wilcoxon signed-rank 検定)

正規性はシャピロ・ウィルク検定で、分散性の差はF検定で確認できます。以下に方法を記載していきます。

X<-c(50,90,86,76,84,96,84,95,96)
Y<-c(5,10,50,73,80,80,80) #1
shapiro.test(X)  #2
  Shapiro-Wilk normality test 
 data: X
 W = 0.7902, p-value = 0.01577

shapiro.test(Y) #2
  Shapiro-Wilk normality test
 data: Y
 W = 0.77272, p-value = 0.02178

var.test(x=X,y=Y) #3
 F test to compare two variances
 data: X and Y
 F = 0.18565, num df = 8, denom df = 6, p-value = 0.03296
 alternative hypothesis: true ratio of variances is not equal to 1
 95 percent confidence interval:
 0.0331544 0.8635972
 sample estimates:
 ratio of variances 
 0.1856521 

#1 Xクラスは9名、Yクラスは7名がテストを受け、それぞれの点数をデータをいれました。ダミーデータです。

#2 シャピロ・ウィルク検定。p-value<0.05で、正規性に従うといえない。p-value≧0.05で正規性に従う。 ⇒ X,Yともに正規性に従わない。

※正規性が確認できた場合は、分散性を確認してStudent t検定あるいはWelch’s t 検定を実施します。下記をご参照ください。

Rで対応のない2群検定:Student t 検定, Welch's t検定, 箱ひげ図, バイオリンプロット,ビースウォームプロット
例えば、国語のテストがあった時に、XクラスとYクラスのテストの点数の平均値に差があるのか?ないのか?を知りたいとします。 隣のクラスと差があるのか..?? 各クラスのテストの点数の平均値を比較する際に使用するのは対応のない2群の...

#3 分散性を確認するF検定。p-value<0.05であれば、分散性に差がないといえない。p-value≧0.05であれば、分散性が差がない。 ⇒2群間は等分散ではない。





2. 2群が正規分布でなく、等分散でない。Mann-Whitney U検定


wilcox.test(X, Y) #4
  Wilcoxon rank sum test with continuity correction
 data: X and Y
 W = 55.5, p-value = 0.01241 
 alternative hypothesis: true location shift is not equal to 0

#4 Mann-Whitney U検定を行いました。p-value<0.05 なので帰無仮説「2群の平均に差がない」が棄却され、XとYは差があると結論づけます。

データの可視化を行います。

name1<-c("X","X","X","X","X","X","X","X","X") #5
D1  <- data.frame(Class=name1, Score=X)
name2 <-c("Y","Y","Y","Y","Y","Y","Y")
D2  <- data.frame(Class=name2, Score=Y)  
D3<-rbind(D1, D2)

library(ggplot2)
ggplot(D3, aes(x=Class, y=Score,color=Class)) + geom_boxplot(lwd=1.5)+theme_classic()+ theme(axis.text=element_text(size=16),axis.title=element_text(size=18),legend.position = "none")+scale_color_manual(values = c("orange", "blue")) #6 箱ひげ図

library(ggpubr)
ggplot(D3, aes(x=Class, y=Score,color=Class)) + geom_violin(lwd=1.5)+theme_classic()+stat_compare_means(comparisons = list(c("X", "Y")),label = "p.signif",method = "wilcox.test")+theme(axis.text=element_text(size=16),axis.title=element_text(size=18),legend.position = "none")+scale_color_manual(values = c("orange", "blue"))  #9 バイオリンプロット

#5  ggplotでの作業を行いやすいよう、XとYのデータを結合しました。Classという名の列に、Xの名前を入れ、Scoreという名の列にX組の生徒の点数を入れたdata.frameを作成しました。

#6 箱ひげ図の作成

#7 バイオリンプロットの作成

library(ggpubr)は、インストールされていなければ、install.package(ggpubr)をお願いします。

stat_compare_means()で、下記のように有意差表示を行うことができます。





4. Rでプレゼンテーション ーMann-Whitney U検定, バイオリンプロットー


コメント

タイトルとURLをコピーしました