StatsBeginner: 初学者の統計学習ノート

文系出身で工学部(工学研究科)の教員をしてます。

ステップワイズ法はp値を歪める

 さっき学生に説明したことのメモ。
 説明変数の候補がたくさんあるときに、説明力が高くなる組み合わせを機械的に選ぶステップワイズ法というのがあります。便利は便利ですが、これをやると、仮説検定の時にp値が歪みます(不当に有意になりやすくなる)。にもかかわらず、通常の回帰分析の習慣に沿った仮説検定の結果が報告されている例がよくあるので気になっています。
 ステップワイズ法で変数選択をすること自体は、目的を限定すればありだと思いますが、その場合に計算される通常のp値にはあまり意味がないので、別の指標を報告すべきと思います。これは、ステップワイズ法に限らず、データに基づいてモデル選択を行う場合に共通する「Post-selection inference」(選択後の推論)の問題ですね。


 p値はふつう、「帰無仮説が正しいとした場合に、今回より極端なデータが得られる確率」のように理解されてますが、じつはそれだけでは正確ではなく、「関心をもつ帰無仮説はデータから独立に選ばれたものである」という前提が必要になります。
 最初にどんな仮説(モデル)を検定するかを固めてしまってから、実験や調査を行ってその仮説を検定するなら、何も問題はありませんが、多くの場合、ステップワイズ法に限らず、たくさんの変数をもったデータセットを眺めてモデルの当てはまりがよくなるように変数を選んでいます。この作業を「モデル選択」「モデル探索」と呼んでいるわけですが、データに当てはまるようにモデル選択をしてしまうと、p値は小さくなる(有意になりやすくなる)方向に歪みます
 ちなみに、たとえばサンプルサイズ5000のデータから、1000だけ取り出してステップワイズ法(もしくは手動でいろいろ試しながら)でモデル選択を行い、そのモデルを残りの4000のデータで仮説検定するなら、仮説形成と仮説検証が独立しているので、歪みは生じないです。問題の本質は、仮説形成と仮説検定を「同じデータから」やってしまうことです。


 この話は分かりにくくて、直観的には反発したくなります。たとえば目の前に、とあるデータセットがあって、分析者Aは理論的考察に基づき、自分の頭だけで思いついた仮説H0(ある説明変数の組み合わせにおける帰無仮説)の検定を行う。一方、分析者Bは、そのデータセットを使ってステップワイズ法でモデル選択を行った結果として、たまたま全く同じ仮説H0の検定を行ったとします。この場合に、分析者Aが計算しているp値だけが正しくて、分析者Bのp値は歪んでいると言われても、納得はしにくいですよね。だって、同じ計算をすれば数字は同じになるんだから。
 しかし、次のように考えれば違いが分かると思います。分析者Aと分析者Bが、同じ方法で長期的にいろいろな分析を繰り返した場合、Bのほうが常に低いp値を報告するであろうことは明白です(Aと同じp値になることはあるけど)。Bは常に、データに最もフィットするモデル(説明変数の組み合わせ)で検定をするからです。そしてこの、「繰り返すと系統的な差が生まれる」という点が大きな問題なのです。


 「仮説がどんな経緯で選ばれたにせよ、結果的に同じ仮説を採用しているなら、その仮説の下でのt分布やp値は同じなのではないか」と思ってしまいがちですが、じつは違います。いや、もう少し正確に言うと、同じ方法で計算すること自体は可能ですが、分析者Bのような仮説の選び方をする人がAと同じ方法でt値やp値を計算していると、いろいろ研究を続けていくうちに、有意水準を5%(つまりp<0.05の場合に帰無仮説を棄却して「有意な効果あり」と判断する方針)に設定していたとしても第1種過誤を犯す確率αが5%を超えてしまうので、別の方法(Selective Inferenceなど)で計算したほうがいいということになります。要するに、「使い続けた時にαと一致しない(αを目標どおりに制御できない)ようなp値を計算するのは変」というのが問題の本質です*1


 そもそも仮説検定というのは、1回しか行わない場合でも、「仮に同じ手続きを何回も繰り返した場合」を考えて計算するもので、p=0.05というのは、「同じ手続きを繰り返したときに、今回より極端な統計量が得られるのは100回中5回ぐらい」という意味ですが、繰り返される手続きの中には「仮説は固定する」という前提が含まれていると言えます。
 t検定の原理を再確認すると、
 y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_3 + \varepsilon
が真のモデルであるとき、この真のモデルを乱数発生器(母集団)と考えて、そこからサンプリング(データ生成・抽出)を行って回帰係数を推定するという手続きを何回も繰り返すと、t統計量(\betaの推定値を\betaの標準誤差で割ったもの)はt分布に従って変動することが知られています。この性質があるから、「\betaが本当はゼロだと仮定した場合に、今回得られた\betaの推定値はどれほど珍しいものか」を評価することができるわけです。
 ポイントは、サンプリングを繰り返すたびに、「同じモデル」に基づいてt値を計算するということです。同じ母集団から得られたサンプルで、同じモデルからの距離を測ることが前提であり、サンプリングを繰り返せば時には真のモデルから大きくズレたデータが生成されることもありますが、それも含めた分布を考えてるわけです。
 分析者Aは、理論的な理由から特定の仮説(ここでは「説明変数の集合」ぐらいの意味)にこだわりをもっている人なので、同じモデルに基づいてt値の計算を繰り返すという考え方と相性がいいです。データを得る前に仮説を考えているということは、仮説がデータに依存していないということで、この点が「仮説を固定して計算を繰り返す」という手続きと一貫するからです。
 一方分析者Bは、新しいデータが得られるたびに、そのデータに最もよくフィットするような「説明変数の集合」を選び直した上で仮説検定をするという方針をもっている人です。この人も、「今回ステップワイズで得られた『この説明変数の集合』を仮に真のモデルとして固定して、帰無仮説モデルから繰り返しサンプリングを行った場合のt値やp値」を計算すること自体は可能ですが、自分自身の研究スタイルと一貫性がなくなるので、長期的にはp値とαが一致しなくなり、有意性を過大評価し続けることになります。


 ステップワイズ法(等)によるモデル選択は、「データにもっともよくフィットする仮説を探索する分析」であり、それはそれで意味があります。ある具体的な仮説をもつ十分な理由がないときに、データから仮説を形成するのはひとつの合理的な方法です。ただしその場合、「それと同じデータでp値を計算したら意味がない」ということになります。単に「このモデルがAIC最小のモデルです!」と報告するだけに留めるなら問題はないですし、データを2つに分割して、片方でモデル選択を行い、他方でモデルの検定を行ってp値を報告するなら意味があります。
 あるいは、きちんと仮定を置けるなら、参考記事で書かれているようなSelective Inferenceをやるという手もあります。これは、データに基づいてある仮説(説明変数の組合せ)が選択された場合に、「そのモデル構造と与えられたxのデータの下で、『その説明変数の組合せ』が選択されるようなyの空間」を考えて、誤差の分布を条件付き分布に補正してp値等を求めるものですね*2


〈参考1〉Post-selection inferenceについてのまとめ論文で、主な対処法を、①サンプル分割(上述の分けるパターン)、②simultaneous inference(全ての仮説を考えてどれか1個でも帰無仮説を誤って棄却しないよう超保守的に検定する)、③Conditional Selective Inference(仮説選択の手続きを考慮して補正する)の3つに整理しています。
Post-Selection Inference | Annual Reviews

〈参考2〉Selective Inferenceのやり方が解説されています。
仮説検定における変数選択の影響を考えるSelective Inference入門 with R. #データ分析 - Qiita

〈参考3〉よく参照される論文で、ステップワイズ法という言葉は出てこないけど、下記の論文で言われているscreening regression equationsは、要するにデータに基づいてスクリーニングされた回帰式という意味です。
Freedman, D. A. (1983). A Note on Screening Regression Equations. The American Statistician, 37(2), 152-155.


(参考:このブログのおすすめ記事一覧はコチラ

*1:帰無仮説の下では0〜1の間で一様分布する(だから0.05以下になる確率がちょうど5%)はずのp値が、小さい方に偏ってしまうというふうにも言えます。

*2:ある説明変数の組合せが選択されるという条件を、いくつかの線形不等式で表して、その不等式でyの空間を多角形(多面体)状に切り抜いて、その範囲内でしかyが動かないとした場合の、誤差や検定統計量の分布を考える。yの分布が変わるとtやpの分布も変わる。