こんにちは、たくろー(@takuro_data )です!
前回は、3群以上の分散分析について学びました。
分散分析では、群間の平均に差があるかはわかるものの、どの群間の平均に差があるのかまではわかりません。何度か検定を繰り返したくなりますが問題点があり、多重比較法を用いる必要あります。今回は、多重比較法について学びます。
- Bonferroni法は、あらかじめ繰り返し数(対比較の数)で割った有意水準で検定する方法。
- Tukey-Kramer法は、2群のt検定を多群にも使えるようにした方法。
- Dunnett法は、対照群と処理群との比較だけを行う。
多重比較とは
多重比較とは、どの群間に有意差があるのか、1対ずつ平均を比較して、有意差のある対を特定することです。
検定の多重性の問題
検定を繰り返すということは、同時にそれらの帰無仮説が棄却されることが求めらます。同時というのは確率論的に乗算を意味するので、第1種の過誤を犯す確率が大きくなります。

多重性の補正のタイプ
検定の多重性の補正対象によって20種類以上ありますが、大きく3つに分類することができます。
- 有意水準補正型:繰り返し数に応じて有意水準を小さくすることで、棄却域が広がらないようにする(代表的手法:Bonferroni法)
- 検定統計量補正型:群数に応じて検定統計量を小さくして、棄却域に入り難しくする(代表的手法:Scheffe法)
- 分布補正型:繰り返し数が増えても有意水準が大きくならない独自の分布から限界値を読み取って判定(代表的手法:Tukey法、Dunnett法)
多重比較法1:Bonferroni法
有意水準を補正するタイプの多重比較法で、あらかじめ繰り返し数(対比較の数)で割った有意水準で検定する方法です。
前回、分散分析で使ったRのサンプルデータInsectSprays(昆虫スプレーの有効性)で実行してみます。
#データ準備
data("InsectSprays")
str(InsectSprays)
plot(count ~ spray, data = InsectSprays)
InsectSprays_cde <- rbind(InsectSprays[InsectSprays$spray == "C",],InsectSprays[InsectSprays$spray == "D",],InsectSprays[InsectSprays$spray == "E",])
#分散分析
anova(aov(count ~ spray, InsectSprays_cde))

Analysis of Variance Table
Response: count
Df Sum Sq Mean Sq F value Pr(>F)
spray 2 48.167 24.0833 5.4873 0.008763 **
Residuals 33 144.833 4.3889
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
C、D、Eを抽出し、分散分析を行い、3群の母平均が等しいという帰無仮説は棄却されたことを確認しました。
#bonferroni法のt検定
attach(InsectSprays_cde)
pairwise.t.test(count,spray, p.adj="bonferroni")
detach()
> pairwise.t.test(count,spray, p.adj="bonferroni")
Pairwise comparisons using t tests with pooled SD
data: count and spray
C D
D 0.0067 -
E 0.3214 0.3214
P value adjustment method: bonferroni
有意水準5%でCとEの母平均が等しいという帰無仮説が棄却されました。
多重比較法2:Scheffe法
検定統計量を補正するタイプの多重比較法です。Bonferroni法のように群間を一対ずつ比較(対比較)するのではなく、複数群をまとめて2つのグループにして、それらの比較をします(対比)。Rで簡単なコマンドはなかったので、ここでは割愛します。
多重比較法3:Tukey-Kramer法
分布補正型の多重比較法です。2群のt検定を多群にも使えるようにした方法です。検定統計量であるt値を、スチューデント化された範囲の分布からのq(限界値)と比較します。スチューデント化とは、t分布で出てきた準標準化のことです。
#Tukey-Kramer法
TukeyHSD(aov(count~spray,data=InsectSprays_cde))
> TukeyHSD(aov(count~spray,data=InsectSprays_cde))
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = count ~ spray, data = InsectSprays_cde)
$spray
diff lwr upr p adj
D-C 2.833333 0.7346841 4.9319826 0.0061970
E-C 1.416667 -0.6819826 3.5153159 0.2369848
E-D -1.416667 -3.5153159 0.6819826 0.2369848
diffは群間の平均の差です。lwr、uprは信頼区間の下限値、上限値です。この区間に0を含まない場合、比較した2群間の差は少なくとも0ではないといえるので、2群間の平均値に有意差があります。p adjはp値です。CとDに有意差がある結果です。
多重比較法4:Dunnett法
分布補正型の多重比較法です。基本はTukey-Kramer法と同じだが、対照群と処理群との比較だけを行います。比較する対が減るので、多重性が軽減されます。
#Dunnett法
library(multcomp)
summary(glht(aov(count~spray, data = InsectSprays_cde),linfct=mcp(spray="Dunnett")))
> summary(glht(aov(count~spray, data = InsectSprays_cde),linfct=mcp(spray="Dunnett")))
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Dunnett Contrasts
Fit: aov(formula = count ~ spray, data = InsectSprays_cde)
Linear Hypotheses:
Estimate Std. Error t value Pr(>|t|)
D - C == 0 2.8333 0.8553 3.313 0.00431 **
E - C == 0 1.4167 0.8553 1.656 0.18581
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)
Cを対照群として、処理群D、Eと比較しています。Tukey-Kramer法から、比較数が3から2に減ります。CとDに有意差がある結果です。
さいごに
今回は、どの群間に有意差があるのか、1対ずつ平均を比較して、有意差のある対を特定する多重比較法について学習しました。
全12回で「母集団が特定の確率分布に従っている」場合のパラメトリック手法について一通り学び終えました。ノンパラメトリック手法もありますが、統計学入門は終了です。お疲れ様でした!

【算術平均・幾何平均・調和平均】Rで算出してみよう

【分位数・分散・標準偏差・外れ値・変動係数】平均とあわせて確認しよう

【相関係数・順位相関係数】2変数の関係を把握しよう

【一様分布・二項分布・正規分布・ポアソン分布】統計モデリングで使おう

【カイ二乗分布・F分布・t分布】仮説検定で使おう

【点推定・区間推定】標本から母集団の特徴を推定しよう

【ブートストラップ法】シミュレーションで推定しよう

【大数の法則・中心極限定理】標本平均に関する重要な定理

【仮説検定】仮説検定の用語を確認して実施してみよう

【仮説検定】2群の平均の差を検定をしよう

【分散分析】3群以上の平均の差を検定しよう

【多重比較法】検定をむやみに繰り返してはいけない