例えば血液型と性格に関係があるか調べたいとします。20項目の性格検査を行って,それぞれについて統計的検定をします。すると,まったく血液型と性格に関係がなくても,偶然に $p \leq 0.05$ になる項目の数の期待値は 1 ですので,有意な結果が出ても当然です。このような問題を,多重比較(multiple comparisons)の問題といいます。
性格検査の項目を1つに絞ったとしても,A型,B型,AB型,O型という4グループを比較しようとして ${}_4 C_2 = 6$ 通りの検定をすれば,(これら6通りの検定は互いに独立ではありませんが)やはり多重比較の問題が生じます。
このように偶然に統計的に有意な結果が出てしまうのは困るということで,多重比較の際には $p$ 値を調整しなければならない,あるいは有意水準を $\alpha = 0.05$ より下げなければならないという考え方があります。そのための方法がたくさん考え出されています。
一番単純な考え方が,Bonferroni(ボンフェローニ)の方法です。これは,例えば20通りの検定をするなら,有意水準を $\alpha$ から $\alpha / 20$ に下げます。あるいは,$p$ 値を20倍したものを元の $\alpha$ と比べると考えても同じことです。Rの p.adjust()
関数は後者の考え方で $p$ 値を調整します。
例として,次の $p$ 値の列が得られたとしましょう:
> p = (1:10) * 0.01
> p
[1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10
これをBonferroniの方法で調整します:
> p.adjust(p, "bonferroni")
[1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
ちょうど10倍されていることがわかります。
ほかにもいろいろな方法があります。Holmの方法では次のようになります。
> p.adjust(p, "holm")
[1] 0.10 0.18 0.24 0.28 0.30 0.30 0.30 0.30 0.30 0.30
ほかにどういう方法があるのでしょうか。リストしてみます。
> p.adjust.methods
[1] "holm" "hochberg" "hommel" "bonferroni" "BH"
[6] "BY" "fdr" "none"
BH
と fdr
はどちらも Benjamini and Hochberg (1995) の False Discovery Rate です。BY
は Benjamini and Yekutieli (2001) の方法です。全部の方法を適用すると次のようになります:
holm | 0.1 | 0.18 | 0.24 | 0.28 | 0.3 | 0.3 | 0.3 | 0.3 | 0.3 | 0.3 |
---|---|---|---|---|---|---|---|---|---|---|
hochberg | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
hommel | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
bonferroni | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1 |
BH (fdr) | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
BY | 0.292 | 0.292 | 0.292 | 0.292 | 0.292 | 0.292 | 0.292 | 0.292 | 0.292 | 0.292 |
none | 0.01 | 0.02 | 0.03 | 0.04 | 0.05 | 0.06 | 0.07 | 0.08 | 0.09 | 0.1 |
多重比較の補正をしなければ5項目について有意($p \leq 0.05$)と判断するはずのところが,多重比較の補正をしたら有意な項目はなくなってしまいました。でも,これら10項目はどれも $p \leq 0.1$ で,10項目すべてが偶然この範囲に入る確率は $0.1^{10} = 0.0000000001$ です。それでもなお,一つも有意でないという結果になってしまいました。
以下は独断と偏見です。
統計的仮説検定を金科玉条とする考え方を捨てて,$p$ 値は目安と考えて補正せず,効果量と信頼区間を報告しましょう。
参考:
Last modified: