注:誤解を招く表現があったので,訂正しました (2020/12/13)
はじめに
多重比較について調べたまとめです.
例えば,群Aと群Bの平均値を比較する際にはt検定を用います.これに群Cが加わって3群になったら,その平均値をどう比較したらいいでしょうか?
「"A vs B", "B vs C", "C vs A"をそれぞれすればいいんじゃないの?」と思うかもしれませんが,これはしてはいけないことなのです.その理由は,参考文献[1-3]をご覧ください.ここでは省略します.
本記事では,平均値 (中央値)について多重比較をする場合に,どういう順番でどういう検定をすればいいのか,ざっくり記載したいと思います.また,最後に,matlabで検定をする場合の関数を記載します.
多重比較の前に2群比較で用語を確認しよう
「対応がある」と「対応がない」
次の2つの例を考えてみましょう.
(A) あるクラスで4月 (群A) と9月 (群B) に同じ試験を行った,その平均値の変化を統計的に調べたい
(B) 会社Aの製品と会社Bの製品の寿命について,その平均値を統計的に調べたい
(A)の場合,群Aと群Bの間に1対1の関係がありますね.すなわち,その対応ある関係の中で,値が増加したか減少したかかわらないのかを調べたいのです.一方(B)ではそのような対応関係はありませんね.
これらを,「対応がある」「対応がない」と表現することがあります.
「パラメトリック」と「ノンパラメトリック」
平均の検定として一番最初に習うt検定ですが,t検定を用いるには,2つの母集団が正規分布に従っていることが前提となっています.このような場合をパラメトリック検定と呼びます[4].つまり,母集団が正規分布に従わない場合は,t検定は使えず,かわりの手法が必要となります.以下にそれをまとます.
- 母集団が正規分布に従い,かつ2群が等分散である場合:Student の t test
- 母集団が正規分布に従い,かつ2群が等分散でない場合:Welch の t test
- 正規分布を仮定せず,対応がない場合:Wilcoxon ranksum test (順位和検定), Mann–Whitney U test
- 正規分布を仮定せず,対応がある場合:Wilcoxon signrank test (符号順位検定)
2群検定の手法のまとめ
前述の,「パラ・ノンパラ」「対応の有り無し」で,以下のように検定を使い分けましょう.
(StudentとWelchのt test をまとめて、t test と書いています)
対応関係なし | 対応関係あり | |
---|---|---|
パラメトリック | t test | t test |
ノンパラメトリック | ranksum test | signrank test |
多重比較の方法
ここから多重比較の方法を述べていきます.
一般に多重比較を行う前に「全体としてバラツキがあるか」の検定を行った後に,適切な補正項が用いられた多重検定を行います.実は,直接多重比較検定を行ってもいい場合もあるのですが[2],ここでは簡単のため,「バラツキ比較」 -> 「多重比較」という流れでまとめます.
(具体的には,F統計量を利用しない場合は,いきなり多重比較でも許されるようです.)
1要因の場合
先ほどの例(A)は,4月と9月でどのように違うかという場合でした.もし,クラスAだけでなくクラスB,Cの生徒もまとめて検定する場合はどうでしょう?時期だけでなくクラスという尺度でも比較できますよね.前者のような場合を1要因 (1因子),後者のような場合を2要因 2(因子) というような表現をします.ここでは,1要因についてまとめます.
「バラツキ」の検定
「バラツキ」の検定は以下の通りです.
対応関係なし | 対応関係あり | |
---|---|---|
パラメトリック | 1way ANOVA | 1way repeated measure ANOVA |
ノンパラメトリック | Kruskal-Wallis test | Friedman test |
「バラツキの検定」とは,「全体として違いがあるか」ということを調べる検定です.
ゆえに,有意差があったとしても,どの群が有意に違うのかまではわかりません.
それを調べたいのであれば,次の多重比較に進む必要があります.
(一般に,post hoc 多重比較などどいわれます.論文だと,ANOVA with post hoc comparisonなどの表現を目にします.)
多重比較の手法
多重比較の検定方法は,t検定などの考え方をベースとしつつも,補正を含んた検定手法となっています.以下にその例を挙げます.文献[3]より引用していますが,その特徴などは[3]の方が詳細に記述してあるので,本記事をざっくり理解したらそちらをご覧ください.
- Tukey-Kramer法:パラメトリックな場合,等分散性と正規分布を仮定.
- Steel-Dwass法:Tukey-Krammer法のノンパラメトリック版.
- Bonferroni補正:パラ/ノンパラ両方で使えるが,群が増えるほどきつくなってくる.
- Games-Howell法:ノンパラメトリック.
※特殊な場合として,Dunnet法やScheffe法があります.こちらは[3]をご覧ください.
注意として,ここではBonferroni法について説明します.Tukey-Kramer法などは,計算方法自体が2群の検定とは異なるものなのですが,Bonferroni法の場合は,2群検定の結果を利用します.n回の検定の多重比較の場合,それぞれのペアに対してt検定やranksum testなどの2群比較の検定を用いてp値を算出し,その値をn倍することで補正を行います.利用する2群比較の検定は,最初に提示した表を参照してください.
さて,パラメトリックならTukey-Kramer法,ノンパラメトリックならSteel-Dwass法やGames-Howell法というのは,上記の説明で分かるかと思います.では,「対応の有り無し」はどう使い分けたらよいのでしょう?
文献[2]によると,対応ありの場合では,Tukey-Kramer法などは使えず,Bonferroni法とその派生 (Holm法,Scheffe法など) を用いるのが一般的なようです.
バラツキの検定と同様に表にまとめます.
対応関係なし | 対応関係あり | |
---|---|---|
パラメトリック | Tukey-Kramerなど | t検定 + bonferroni系の補正 |
ノンパラメトリック | Steel-Dwassなど | signrank + bonferroni系の補正 |
手法によって,その特徴や補正の厳しさが異なるので,適切なものを注意深く選択する必要があります.
2要因の場合
バラツキの検定は,以下の通りです.
対応関係なし | 対応関係あり | |
---|---|---|
パラメトリック | 2way ANOVA | 2way repeated measure ANOVA |
ノンパラメトリック | ? | ? |
ノンパラメトリック版は見つけられませんでした.少なくとも,一般的な解析ソフト等では実装されておらず,私が普段目にする生物系・物理系・情報系の論文でも見当たりませんでした.2way ANOVA等で代用している場面が多いと思われます.
3要因以上
ソフトウェアによっては,2wayを拡張した3way以上の検定が実装されているようです.
matlabの関数
最後に,matlabで検定を行う場合の関数のリンクを貼りました.Pythonの場合もscipyなどで簡単に実装できるので,調べてみてください.
matlabだと,ANOVAやKruskal-Wallisをした結果をmultcompareに入れることで,簡単に多重比較をしてくれます.
- 対応のあるt検定 ttest
- 対応のないt検定 ttest2
- Wilcoxon ranksum test ranksum
- Wilcoxon signrank test signrank
- 1way ANOVA anova1
- 2way ANOVA anova2
- より高次な ANOVA anovan
- 1way repeated measure ANOVA ranova
- Kruskal-Wallis test kruskalwallis
- Friedman test friedman
- 多重比較検定 multcompare
参考文献
[1] https://www.amed.go.jp/content/000034156.pdf
[2] https://www.jstage.jst.go.jp/article/kagakutoseibutsu/51/7/51_483/_pdf
[3] http://plaza.umin.ac.jp/~beehappy/stat/com-ph.html
[4] https://ja.wikipedia.org/wiki/T%E6%A4%9C%E5%AE%9A