統計的検定は、グループ間の違いを明らかにするための重要なツールです。
二つのグループを比較する方法とそのRのコードについて、以前紹介させていただきました。
今回は、3つ以上のグループを比較する方法について紹介します。
例えば、A先生が、1組2組3組で数学の講義を行ったとします。
理解度が異なるのか?などを成績から分析してみます。
1組と2組、2組と3組、3組と1組、といったように、それぞれを2群で比較すると、検定を複数回繰り返すことによる多重検定の問題が発生してしまいます。
そこで、3つ以上のグループ間を検定回数を少なく、評価する分析法が使用されます。
この記事では、Rを使って分散分析(ANOVA)と多重比較(Tukey法)について紹介します。
1. 分散分析(ANOVA)について
2. 一元配置分散分析(one-way ANOVA)の実行と結果の解釈 ーaov関数ー
3. 多重比較(Tukey法)の実行と結果の解釈 ーtukeyHSD関数ー
1. 分散分析(ANOVA)
分散分析は、3つ以上のグループ間の平均値の差を評価する統計的手法です。
この手法は、以下のような場面で利用されます。
・複数の治療法や処理法の効果を比較する
・異なるグループ間の平均値の差を評価する
・複数の条件の効果を調査する
2. 一元配置分散分析(one-way ANOVA)の実行と結果の解釈 ーaov関数ー
n_students <- 40 #クラスの人数 set.seed(123) #乱数生成のため初期化 class_1 <- data.frame( Class = rep("1組", n_students), Score = round(rnorm(n_students, mean = 70, sd = 7), 0) # 平均70、標準偏差7の正規分布に基づくダミーデータ ) class_2 <- data.frame( Class = rep("2組", n_students), Score = round(rnorm(n_students, mean = 75, sd = 8), 0) # 平均75、標準偏差8の正規分布に基づくダミーデータ ) class_3 <- data.frame( Class = rep("3組", n_students), Score = round(rnorm(n_students, mean = 72, sd = 9), 0) # 平均72、標準偏差9の正規分布に基づくダミーデータ ) all_classes <- bind_rows(class_1, class_2, class_3) # Class Score 1 1組 71 2 1組 63 3 1組 67 4 1組 68 ・・・ 41 2組 69 42 2組 73 43 2組 65 44 2組 92 45 2組 85 46 2組 66 47 2組 72 ・・・ boxplot(Score ~ Class, data = all_classes, #箱ひげ図でデータを可視化 + main = "テストの点数", + xlab = "クラス", ylab = "点数", + col = "lightblue", border = "blue") anova_result <- aov(Score ~ Class, data = all_classes) #一元配置分散分析 print(summary(anova_result)) # Df Sum Sq Mean Sq F value Pr(>F) #Class 2 633 316.4 5.583 0.00483 ** #Residuals 117 6631 56.7 #--- #Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
箱ひげ図で可視化
Class(各クラス)の効果に関するF値は5.583であり、p値は0.00483です。
p値が有意水準(通常は0.05)よりも小さいため、少なくとも1つのクラス間には点数の平均に統計的に有意な差があることが示唆されます。
どのグループ間で有意な差があったのかは、一元配置分散分析だけではわかりません。
3. 多重比較(Tukey法)の実行と結果の解釈 ーtukeyHSD関数ー
どのグループ間で有意な差があったのかを調べるために、多重比較を行います。
今回はTukey法を紹介します。
Tukeyの多重比較では、p値が調整された形(p adj)で算出されます。
この調整されたp値は、比較を複数行う場合に生じる多重検定の問題を考慮されていて、通常はこれらの調整されたp値を基にして、各比較の有意性が評価されます。
tukey_result <- TukeyHSD(aov(Score ~ Class, data = all_classes)) #Tukey法 print(tukey_result) # Tukey multiple comparisons of means # 95% family-wise confidence level #Fit: aov(formula = Score ~ Class, data = all_classes) # #$Class # diff lwr upr p adj #2組-1組 5.625 1.628916 9.621084 0.0031879 #3組-1組 2.825 -1.171084 6.821084 0.2178566 #3組-2組 -2.800 -6.796084 1.196084 0.2236783
2組と1組の間には平均点で統計的に有意な差があり(p = 0.0031879)、2組の平均点が1組よりも5.625ポイント高いことが示されています。
一方、3組と1組、3組と2組の間には有意な差が見られませんでした(p > 0.05)。
これは、3組の平均点が1組および2組の平均点と統計的に有意な差がないことを示しています。
分散分析(ANOVA)と多重比較(Tukey)は、複数のグループ間の差異を評価するために広く使用される手法です。
Rを使用することで、これらの手法を簡単に実行し、結果を解釈することができます。
参考図書
コメント