🪙

Anti-p-hacking: どのように誤った統計的結論を回避するか、あるいは、誤りを受け入れるか?

2023/07/19に公開

はじめに

企業で様々な機械学習モデルを検討していく中で、自分が行っている比較方法は正しいのか?性能改善したというA/Bテストの結果を信頼して良いのか?という疑問が常にあり、改めて仮説検定における問題をまとめてみた。

仮説検定の問題は広く知られており、2015年には、主要論文誌に掲載された100件の心理学研究を調査したところ、97%で統計的に有意な結果が報告されていたにも関わらず、36%の研究でしか有意な結果を再現できなかったと「Estimating the reproducibility of psychological science」にて報告されている。このように学術研究における再現性の危機は度々話題となっており、2016年にはアメリカ統計協会(ASA; American Statistical Association)が「統計的有意性とP値に関するASA声明」の中で、統計的有意性におけるp値の誤用と誤解がまかり通っていると指摘している。

この記事では、仮説検定の基本を復習した後に、再現性の危機の一つの要因であるp-hackingとその対策について紹介する。その後、機械学習やNLP(自然言語処理)における再現性の問題に触れる。最後に、仮説検定の限界として、出版されている論文の誤り率に関するシュミレーションを紹介する。

準備

仮説検定とは

現代的な統計的仮説検定(ネイマン・ピアソン流の検定)では、示したい仮説の否定命題を帰無仮説、示したい仮説を対立仮説と呼び、p値が有意水準を下回るかに否かに基づいて帰無仮説を棄却するか否かを判断する。

例) 
帰無仮説: 予測性能に差がない
対立仮説: 予測性能に差がある

p値とは、帰無仮説が正しいと仮定した場合に、観測された事象よりも極端な事象が発生する確率である。即ち、観測した事象が有意水準を下回る確率でしか観測されないほど起きにくい場合に、帰無仮説を棄却し対立仮説を採択することになる。
帰無仮説を棄却し対立仮説を採択することで、統計的に有意な結果を得ることができる。

第一種の過誤と第二種の過誤

前述のように、仮説検定では、有意水準αを決定する必要がある。αは帰無仮説が正しい場合に誤って棄却してしまう確率であり「第一種の過誤」と呼ばれている。一方で、対立仮説が正しい場合に誤って帰無仮説を棄却しないことを「第二種の過誤」と呼び、その確率はβで表される。αとβはトレードオフの関係にある。

帰無仮説が正しい 対立仮説が正しい
帰無仮説を棄却しない OK 第二種の過誤(確率β)
帰無仮説を棄却する 第一種の過誤(確率α) OK

効果量とサンプルサイズ

有意水準α、検出力(1-β)及び、検出したい効果の大きさ(e.g. 差の大きさ)を意味する「効果量」、仮説検定に用いる「サンプルサイズ」には、3つの数値を決定すると残りつ1つの数値が決定するという関係がある。
後述するp-hackingを避けるためには、事前に有意水準、検出力、効果量を決定し、仮説検定に必要となるサンプルサイズを算出する必要がある。

サンプルサイズの決定方法

有意水準αと検出力(1-β)については、慣習的に「Statistical Power Analysis for the Behavioral Sciences」でも推奨されているα=0.05、β=0.2が用いられている。
効果量の計算には、大きさを表すd族(Cohen's d)と相関の強さを表すg族(Hedges' g)等の指標がある。ここでは、(対応のない2標本の)t検定を例に、d族の効果量の計算方法について例示する。効果量dは2標本の平均値の差を標準偏差で標準化した値である。\bar{x}は平均値、nはサンプルサイズ、sは標準偏差を表している。
(※ 後述するが、実際に計算しなくともライブラリ等を利用することでサンプルサイズは算出できる)

d = \frac{\bar{x_{2}} - \bar{x_{1}}}{\sqrt{\frac{n_1 s_1^2 + n_2 s_2^2}{n_1 + n_2}}}

効果量の目安としては、「効果量と検定力分析入門」で紹介されている下記の様な表があり、t検定の中程度の効果量であれば0.5となる。

検定・分析の種類別の代表的な効果量の指標と大きさの目安

ここまでで有意水準αと検出力(1-β)、効果量を決定することができたため、サンプルサイズを算出することができる。サンプルサイズの計算は複雑であるため、G*Powerの様なソフトウェアや、RやPythonのライブラリを用いて計算する方法が一般的である。ここでは、Pythonのstatsmodelsを利用した場合を例示する。
対応のない両側(two-sided)t検定におけるサンプルサイズの計算はにはtt_ind_solve_powerを用いる。効果量(effect_size)=0.5、有意水準(alpha)=0.05、検出力(power)=0.8とした場合のサンプルサイズは64件ずつとなる。

> from statsmodels.stats.power import tt_ind_solve_power
> tt_ind_solve_power(effect_size=0.5,
		     alpha=0.05,
		     power=0.8,
		     alternative='two-sided')
63.765610587854056

p-hacking

p-hacking(data dredging, data snooping, p値ハッキング)は、統計的に有意な結果を得るために、意図する/しないに関わらず、データや分析を操作する行為である。具体的には、結果を見ながらサンプルサイズを増やしたり、多量の実験を行い有意な結果のみを報告することで生じてしまう。いずれの場合も、多量の実験を行うことで有意水準を超える確率で第一種の過誤が発生してしまうことが問題となる。
例えば、有意水準α=0.05で仮説検定を実施する場合を考える。このとき、n回の実験のいずれかで第一種の過誤が発生する確率は1-0.95^nとなるため、20回の実験では約64%の確率で第一種の過誤が発生してしまう。以下に、実験回数と実験全体でのαを図示する。

特に、多量の実験を行い統計的に有意な結果が得られた後で、仮説を設定する行為はHARKing(Hypothesizing After the Results are Known)と呼ばれている。先ほど示した通り、帰無仮説が正しい場合でも様々な条件で繰り返し実験を行うことで、有意水準を超える確率で第一種の過誤を発生させることができてしまうため、HARKingにより再現性が損なわれてしまう。

しかし現実的には、様々な条件で実験を行いたい場合が多い。機械学習を例にあげると、複数の特徴量、モデルアーキテクチャ、ハイパーパラメータ、データセットで実験を行いたい場合が多いが、これらの組み合わせを実験し、各実験結果の有意差を検定してしまうとp-hackingの問題が生じてしまう恐れがある。このため、p-hackingを考慮して実験を行う必要がある。

p-hackingへの対処

p-hackingやHARKingを回避する方法として、「データ分析に必須の知識・考え方 統計学入門」で紹介されていた内容を中心に、4つ紹介する。ただし、これ以外にもベイズファクターの様な仮説検定の代替となる手法も存在している。

1. 実験計画を立てる

前述した様に、実験結果を得た後で、サンプルサイズを増やしたり仮説を構築した場合に、p-hackingやHARKingの問題が発生する。近年では、実験の事前計画を登録、審査し、ネガティブリザルトを掲載する雑誌も存在している。

2. 仮説検証型研究と探索型研究を分離する

予備実験として様々な条件の実験を行い、そこから得られた知見を元に仮説を立て、絞られた条件に対して本実験を実施する。ただし本実験の際に、予備実験とは独立した形でデータを収集し分析する必要がある。

3. 多重比較手法を用いる

最も単純なボンフェローニ法(Bonferroni method)では、検定回数をkとした場合に個々の検定の優位水準を\frac{\alpha}{k}とするもので、検出力が低下するものの第一種の過誤の増加を有意水準に抑制できる。
また、ボンフェローニ法の検出力を改善したテューキーの検定(Tukey's test)、対照群との比較だけを行うダネット検定(Dunnett's test)、順位を用いるウィリアムズ検定(Williams test)等がある。

4. 有意水準α=0.005を用いる

図に示す通り、より小さい有意水準を用いることにより、実験全体での第一種の過誤が発生する確率を抑制することができる。これは本質的にp-hackingを解決することにはならないが、意図しないp-hackingの影響を抑える効果はある。2017年に経済学者のDaniel Benjaminは、p値の閾値として0.005を用いるべきだと指摘しており、Nature ダイジェストの「統計学の大物学者がP値の刷新を提案」にて紹介された。

論文の責任著者の1人である南カリフォルニア大学(米国ロサンゼルス)の経済学者Daniel Benjaminは、「研究者は、P値を0.05とするときに、それがどれほど弱い証拠であるかが分かっていないのです」と言う。彼は、P値が0.05~0.005のときの主張は、確固たる知識ではなく、単なる「示唆的な証拠」として扱うべきだと考えている。

機械学習やNLPにおける再現性

近年では、機械学習やNLPにおける主要な国際会議では再現性に関するチェックリストを投稿時に提出する必要がある。「コンピュータサイエンスのトップカンファレンスが示す再現性チェックリスト」にて、いくつかの会議のチェックリストがまとめられている。「The Machine Learning Reproducibility Checklist」では、論文で述べているモデル、アルゴリズム、理論の説明や証明に加えて、実験に用いたデータセットの詳細(e.g. 統計量、収集方法)、コードの詳細、実験結果の詳細(e.g. 学習と評価の回数、ハイパーパラメータ探索の詳細)について報告することが求められている。

NLP2022では、「NLPにおける再現性」という題目のワークショップが開催されており、他の研究領域と同様に主要な関心領域であると言える。同ワークショップの「再現性と検定 ―なぜ検定を行うか―」では、NLPで利用されるノンパラメトリック検定や、検定を実施する上での注意点を紹介しているので大変参考になる。注意点の多くは、冒頭で紹介したアメリカ統計協会の声明で触れられている内容が主であるが、NLPでは共通の評価データセットをベンチマークとしているため、以下の点などから実際には再現性の確保が容易ではないと指摘している。

同一のサンプルで実験することが通常あり得ない“サイエンス”の実験と異なる点

加えて、実社会で機械学習モデルを評価する際には、オフラインの評価を通過したモデルをビジネス指標(e.g. CTR、CVR)で評価するためにA/Bテストを実施することが一般的である[1]。しかし、A/Bテスト特有の要因も加わり、再現性のある評価を実施することは容易ではない。例えば「なぜあなたのA/Bテストはうまくいくのか?A/Bテストの分析で注意すること」では、A/Aテストで有意差があると結論づけられてしまう問題を紹介している。この例では、分析単位と実験単位がインプレッション単位とユーザ単位の様に異なっている場合に、A/Aテストでのp値の分布が0付近に偏ってしまう問題[2]を取り上げている。

論文が誤っている確率

p-hackingの様な仮説検定の誤用により、有意水準を上回る確率で第一種の過誤を発生させてしまうことを紹介した。では、仮説検定を正しく実施すれば公開される論文の誤りを有意水準αまで抑制できるか?と言うと、必ずしもそうとは限らない。
ここでは、「データ分析に必須の知識・考え方 統計学入門」にて解説されていた、論文が誤っている確率についてのシミュレーションを紹介する。この公開された論文が誤っている確率は、偽発見率(FDR; False Discovery Rate)とも呼ばれている。

例えば、対立仮説の正解率が10%だと仮定する。有意水準を0.05、検出力を0.8とした場合、「対立仮説が正しく有意差があると判断される割合」は0.1*0.8=0.08、「対立仮説が間違いで有意差があると判断される割合」は0.9*0.05=0.045となる。これらが論文として出版されるため、有意差ありとして公開された論文の内、0.045/(0.08+0.045)=0.36の論文が誤っていると考えられる。

このシミュレーションは仮説の正解率に依存するため、正解率が50%であれば誤論文率は約6%程度にとどまる。従って、良い仮説を立てることが重要であると言える。

下記の図は、仮説の正解率と誤論文数の関係を示している。公開された論文の誤りを削減するためには、良い仮説を立てることに加えて、より低い有意水準を用いることが重要であると言える。

おわりに

実社会でも学術界と同様に、施策の効果を評価する上で仮説検定の考え方は重要である。これまで見てきた通り、資源に限りがある中で再現性のある仮説検定を行うことは容易ではないが、p-hackingの様な主要な問題を理解し最大限考慮すべきだと思う。
また、「統計的有意性とP値に関するASA声明」で指摘されている通り、「科学的な結論や、ビジネス、政策における決定は、P値がある値を超えたかどうかにのみ基づくべきではない。」[3]と思う。統計的結論をが誤っている可能性を受け入れ、期待される効果量や定性的な側面を考慮して意思決定を補完していく必要があるだろう。

脚注
  1. A/Bテストを実施できる回数にも限りがあるため、Off-Policy Evaluationが実施される場合もある。 ↩︎

  2. A/Aテストでp値が一様分布になる理由は、「なぜAAテストにおけるp値は一様分布になるのか?」を参照ください。 ↩︎

  3. 帰無仮説が棄却できない場合は、帰無仮説が正しいわけではなく「判断できない」という結果である。 ↩︎

Discussion