先日のことですが、Querie*1で以下のような質疑がありました。
恐らくですが、これは僕が懇意にさせていただいているマクリン謙一郎さんがコメントしていた件に関連する話題だと思われます。
たしかにこれではないからHARKingとはちょっと違うと思うんだけど、実際は「同じストーリーを別のデータで何度も解析」してるわけだから多重検定になる。被説明変数は一緒だから複数の説明変数を試して有意になったやつを報告するのと構造は一緒。 https://t.co/WjnK5MnKcJ
— Ken McAlinn (@kenmcalinn) 2024年3月11日
分かる人が見れば「典型的な多重比較補正問題だ」と分かる話なんですが、普段から意識していないと意外と見落とされがちなポイントだと思うんですよね。ということで、最近ネタ切れなのを糊塗する目的も兼ねて今回の記事では簡単にこの話題を改めてサクッと深掘ってみようと思います。なおいつもながらですが、記事中に僕の理解不足や誤解などがありましたら、何なりとご指摘くださると幸いですm(_ _)m
そもそも「比較」が多数集まれば、中身が何であるかにかかわらずそれは多重比較に当たる
これは意外とあまり意識されていないことなのかもしれませんが、そもそも論として「異なるデータセット同士の異なる比較であっても仮説を検証する行為を多数集めれば一定数の偽陽性が生じ得る」のが帰無仮説有意差検定が持つ原理的な側面なんですよね。それは、p値がその頻度論的な解釈*2の詳細はさておき、本質的には第一種の過誤即ち「偽陽性の確率(割合)」を意味していると考えられるからです。
この点について、例えば"All of Statistics"の例6.13では多重比較ではなく95%信頼区間についてですが、実に面白い喩え方をしています。
6.13 Example. Every day, newspapers report opinion polls. For example, they might say that “83 percent of the population favor arming pilots with guns.” Usually, you will see a statement like “this poll is accurate to within 4 points 95 percent of the time.” They are saying that is a 95 percent confidence interval for the true but unknown proportion p of people who favor arming pilots with guns. If you form a confidence interval this way every day for the rest of your life, 95 percent of your intervals will contain the true parameter. This is true even though you are estimating a different quantity (a different poll question) every day. ■
(毎日、新聞が世論調査を報じているとしましょう。例えば、「人口の 83 パーセントがパイロットに銃を装備することを支持している」といった感じに。 通常、「この世論調査は 95% の確率で 4 ポイント以内の精度です」などの但し書きが表示されます。彼らは、パイロットに銃を装備することを支持する人々の真の、しかし未知の割合 p に対する 95 パーセントの信頼区間が 83±4 であると言っているのです。この方法で信頼区間を生涯にわたって毎日作成すると、数多く集められた区間たちのうちの 95% に真のパラメータが含まれることになります。これは、毎日異なる数量 (異なる世論調査の質問) を推定している場合でも当てはまります)
ここで重要なのは「毎日てんでバラバラの内容の世論調査をしていて、そこで得られる人口のxパーセントがyと答えていてその95%信頼区間がzである(それこそ医療保険制度改革だったり雇用機会均等だったり政治とカネの問題だったり、83±4%だったり50±9%だったり17±6%だったりするかもしれない)という結果が100組得られたら、そのうちだいたい95組くらいが各々の信頼区間の中に真のパーセンテージを捉えている」という解釈がされている、ということです。
これを有意水準の話題に置き換えると、5%有意水準の検定を行っている時点で「偽陽性はだいたい5%ぐらい発生しますよ」というリスクが織り込まれているわけで、それは互いに全く異なるデータセットで全く異なる比較をしていても変わらないわけです。言い方を変えると「とにかく何であれ帰無仮説有意差検定を100組集めたら、5%有意水準のもとではだいたい5組ぐらいの偽陽性が生じる」ということなんですね。
さらにこれを多重比較の問題に援用すると、話は簡単です。即ちデータセットをどれほど異なる組み合わせになるように集め直したとしても、単純に5%有意水準のもとで帰無仮説有意差検定をn回繰り返したら、そこにはだいたい0.05 × n組の偽陽性が生じ得るわけで、なればこそ多重比較補正が必要になってくるということなのです。よってこの記事の冒頭で触れた課題提起に関しても、本来であれば多重比較の構造に至っており、多重比較補正が求められると考えられます。
なお言わずもがなかもですが、簡単な実験をRでやってみましょう。前半はサンプルサイズを50に固定して互いに平均0&標準偏差1に従う乱数同士(つまり本来なら真のパラメータに互いの差がない)を1000組生成してt検定にかけてそのp値を集めてヒストグラムをプロットしたもの、後半はサンプルサイズだけを6〜200の範囲でばらつかせた上で同じことをしたものです。
pvs1 <- c() for (i in 1:1000){ x11 <- rnorm(50, 0, 1) x12 <- rnorm(50, 0, 1) res <- t.test(x11, x12) pvs1 <- c(pvs1, res$p.value) } par(mfrow = c(2, 1)) hist(pvs1, breaks = 20) segments(0.05, 0, 0.05, 100, col = 'red', lty = 3, lwd = 5) pvs2 <- c() for (i in 1:1000){ x21 <- rnorm(round(runif(1, 6, 200)), 0, 1) x22 <- rnorm(round(runif(1, 6, 200)), 0, 1) res <- t.test(x21, x22) pvs2 <- c(pvs2, res$p.value) } hist(pvs2, breaks = 20) segments(0.05, 0, 0.05, 100, col = 'red', lty = 3, lwd = 5) length(which(pvs1 < 0.05)) #R [1] 56 length(which(pvs2 < 0.05)) #R [1] 46
多少ズレはありますが、どちらであっても偽陽性が5%程度生じているのが分かるかと思います。実データセットでも同じような偽陽性のシミュレーションが出来たら面白かったんですが、そもそも「真の結果」が分からないケースが多いのでちょっと無理かなぁと。
多重比較補正のやり方について
では、多重比較が起きているとなったらどのように補正すれば良いのでしょうか? この点については、このブログでは6年前に論じたことがあります。
最も単純なのはBonferroni補正で、有意水準を多重比較の件数で除する、ただそれだけです。上記のRコードの例で言えば、0.05を1000で割るだけです。実際にやってみると分かりますが、
length(which(pvs1 < 0.05 / 1000)) #R [1] 0 length(which(pvs2 < 0.05 / 1000)) #R [1] 0
というように、サンプルサイズを固定した場合でも変動させた場合でも、有意になる検定はどちらも0件になりました。6年前の記事では他の多重比較補正手法も幾つか紹介していますので、興味がおありの方はそちらもご参照下されば幸いです。
なお余談ですが、僕が機能的MRIを使ってヒト認知神経科学分野の研究をしていた時は、条件間比較で賦活している脳部位を検出する分析では「脳の灰白質をカバーするvoxel(立体画素)およそ3万個ひとつひとつに対する多重比較」とみなして、voxel数で0.05を除するBonferroni補正などを行っていました*3。
まぁ、どちらかというとヒト認知神経科学分野の問題は脳機能画像データそのものの多重比較ではなく、サンプルの無意識的かつ作為的な選別といったQRPsの蔓延がもたらす再現性の低さ*4の方にあるわけですががが(それ以上はいけない)。
コメントなど
ということで「何であれ帰無仮説有意差検定を一箇所に沢山集めたらそれは多重比較になり得る」ということを再確認したんですが、では単一の研究・調査・検証の中でどこで(どの単位で)多重比較補正をやるべきか?というとちょっとピンと来ないんですよね。
例えば、以前の記事で書いたようなマーケティングモデル+実験というようなケースでは、最低でも2回有意水準もしくは信頼区間*5が関わる比較をすることになるわけで、こういうケースでも多重比較補正が必要なのかなぁとか考えているところです。多分、後段のマーケティング実験のところは2回3回と繰り返したら多重比較補正が必要になるのだろうと思うのですが……とりあえず継続審議ということで。
*1:最近復活させました
*2:この辺をご参照ください→95%信頼区間の「95%」の意味 - 渋谷駅前で働くデータサイエンティストのブログ
*3:Bonferroni補正ではない多重比較補正の実装にはかつては非常に深刻な実装上のエラーがあった https://www.pnas.org/doi/full/10.1073/pnas.1602413113