平均 (中央値) の多重比較ってどうやるの？ -パラメトリックと対応関係に注目して -

注：誤解を招く表現があったので，訂正しました (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群比較の検定を用いてｐ値を算出し，その値を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](https://jp.mathworks.com/help/stats/ttest.html)
- 対応のないt検定 [ttest2](https://jp.mathworks.com/help/stats/ttest2.html)
- Wilcoxon ranksum test [ranksum](https://jp.mathworks.com/help/stats/ranksum.html)
- Wilcoxon signrank test [signrank](https://jp.mathworks.com/help/stats/signrank.html)
- 1way ANOVA [anova1](https://jp.mathworks.com/help/stats/anova1.html)
- 2way ANOVA [anova2](https://jp.mathworks.com/help/stats/anova2.html)
- より高次な ANOVA [anovan](https://jp.mathworks.com/help/stats/anovan.html)
- 1way repeated measure ANOVA [ranova](https://jp.mathworks.com/help/stats/repeatedmeasuresmodel.ranova.html)
- Kruskal-Wallis test [kruskalwallis](https://jp.mathworks.com/help/stats/kruskalwallis.html)
- Friedman test [friedman](https://jp.mathworks.com/help/stats/friedman.html)
- 多重比較検定 [multcompare](https://jp.mathworks.com/help/stats/multcompare.html)



# 参考文献
[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