[社内統計学勉強会] t検定をする前に分散が等しいかを検定で判断してもよい?

こんにちは、GMOアドマーケティングのMHです

GMOアドマーケティングでは、現在、社内で統計勉強会を実施しています。
前回の勉強会ではデータが1つの場合について学びましたが、第5回目では2つのデータがある場合についての比較を以下のパターンにて学びました。

  • 母分散の比較
  • 対応がある場合の母平均の比較
  • 母平均の比較

母分散の比較についてはF検定を利用します。

対応がある場合の母平均の比較については各要素の差をとり、t検定を行います。
詳細は関連二組の差の平均値のt検定を参照いただければと思います。

母平均の比較についてはt検定を利用するのですが、分散が等しいかどうかによって、検定方法が違い、詳細は独立二群の平均値の差の検定に記載があります。

ここでは、母平均の比較の際に、分散が等しいかどうかを検定にて判断することについて、少し深掘りしてみようと思います。

母平均の差の比較前のF検定について

Wikipediaの独立二群の平均値の差の検定にはt検定を始める前にという章があり、以下の記述があります。

実務的なデータ分析では、母集団が様々な前提を満たしているかどうかを調べるため、以下のような検定をt検定の前段階に行う場合がある。

標本が正規分布に従うかどうかは、コルモゴロフ-スミルノフ検定やシャピロ-ウィルク検定などの正規性検定によって判断することもできる。
標本の分散が等しいかどうかは、F検定、ルベーン検定、バートレット検定などにより判断する方法がある。

引用: T検定、2018年5月7日、ウィキペディア日本語版、https://ja.wikipedia.org/wiki/T検定#t検定を始める前に

上記に記載されている標本の分散が等しいかどうかを検定により判断する理由は、等分散かどうかによって、以下のように検定の方法が変わってくるためです。

ところが、母分散がわからない状態で、分散が等しいかどうかを検定で判断することについては賛否両論あるようです。

基本的には検定を繰り返すことは「第一種の過誤(有意差が無い事象に対して有るとしてしまう)」が増してしまうため、NGとされています。

例外的に、母平均の差の比較時に分散が等しいかどうかの検定については、平均の差と分散の差とで対象が全く違うとの考え方から、許容をされることがあるようです。
また、ウェルチのt検定は近似的な手法のため、等分散である場合は精度が低下してしまい、計算自体が複雑であることから、事前にF検定をすることで等分散かどうかを判定するという手法が利用されているようです。

実際に古典的ないくつかの教科書ではこの手法を記載しているものがありました。

ですが、最近では、検定の多重性の観点を重要視して事前にF検定を行うことが危険であるとの考えが増えているようです。
こちらのページでは実際に、ランダムな要素で検定をしたところ、ウェルチのt検定を利用したほうが精度が良かったとの結果もでています。

そのため、明確に分散が等しいと分かっている場合以外は、無条件でウェルチのt検定を利用するのが現状ではよさそうです。

SciPyでt検定をする場合について

実務ではSciPyを使うことが多いと思いますが、t検定を行うにはscipy.stats.ttest_indを利用します。
scipy.stats.ttest_indにてウェルチのt検定を行う場合は、パラメータequal_varをFalseに設定する必要があります。

このequal_varの値を事前にF検定などをして判断するようなことはやめておいたほうが良いということになります。

また、パラメータequal_varはデフォルトではTrueとなっているため、等分散かどうか不明である場合は設定を忘れないように注意が必要です。

まとめ

母平均の差の検定時に事前に検定をすることで等分散かどうかを判定するという点が問題になっているというのは、学んだ章を調べなおしている際に偶然見つけたのですが、古典的な内容でも人によって考え方が違うというのは非常にびっくりしました。

統計学の書籍は古いものもたくさんあるので、書籍だけで勉強するのではなく、最新の情報をキャッチアップしていくことが重要だと感じました。

参考ページ