t検定の前にF検定、ちゃんとやってますか? 手作業が面倒だったのでツールを作った
この記事のきっかけ
エクセルで2群の平均値の差を検定するとき、みなさん T.TEST 関数やデータ分析アドインをどう使っていますか?
t検定には実は2種類あります。
- スチューデントのt検定:2群の分散が等しい(等分散)と仮定できる場合
- Welchのt検定:2群の分散が等しくない(不等分散)場合
どちらを使うべきかは、本来は先にF検定で2群の分散を比較してから判断する必要があります。ところが実務では、この手順が省略されがちです。
- 「とりあえずスチューデントのt検定だけやる」
- 「毎回Welchを使えば安全らしいと聞いたので、F検定自体を省略する」
といった運用を見かけたことがある人も多いのではないでしょうか。
なぜF検定を省略してはいけないのか
スチューデントのt検定は「2群の分散が等しい」という前提のもとに成り立っている検定です。この前提が崩れている(=分散が大きく異なる)状態でスチューデントのt検定を使うと、有意水準が想定通りに機能しなくなり、本来は有意差がないはずのデータを「有意差あり」と誤判定してしまうリスクがあります。
逆に「毎回Welchを使えば安全」という考え方も一理あります。実際、Welchのt検定は等分散でも不等分散でも安定した結果を返すため、判断を省略する目的で最初からWelchを選ぶ運用も実務では見られます。ただし、この場合は「なぜF検定を省略したのか」を説明できるようにしておく必要があり、レポートや論文では根拠なく手順を省略していると指摘されるリスクもあります。
正攻法は、やはり
- F検定で2群の分散を比較する
- 結果に応じて、スチューデントかWelchのt検定を選ぶ
- t検定を実行する
という3段階の手順を踏むことです。
エクセルでやる場合の面倒さ
エクセルの「データ分析」アドインでこれをやろうとすると、
- 「データ分析」→「F検定:2標本を使った分散の検定」を実行
- 出力されたP値を見て、有意水準(例:0.05)と比較し、等分散かどうかを自分で判断
- 判断結果に応じて、改めて「t検定:等分散を仮定した2標本による検定」または「t検定:分散が等しくないと仮定した2標本による検定」を選択して再実行
という流れになります。複数のデータセットを扱う場合、この手順を毎回繰り返すことになり、地味に手間がかかります。手順を忘れて省略してしまう人が出てくるのも無理はないな、と思います。
というわけでツールを作りました
この一連の判断(F検定→等分散/不等分散の判定→適切なt検定の自動選択→実行)を、CSVをアップロードするだけで自動化するツールを作りました。
やっていることはシンプルです。
- 2群のデータをCSV形式で用意する(1列目・2列目にそれぞれの群の数値を入力)
- アップロードすると、まずF検定を実行
- F検定の結果(等分散かどうか)に応じて、スチューデントまたはWelchのt検定を自動選択して実行
- 結果とヒストグラム・箱ひげ図を表示
会員登録・インストール不要で、ブラウザ上で完結します。データはサーバーにアップロードされるのではなく、検定計算のためだけに処理される作りにしています。
使う上での注意点
- 有意水準は一般的な5%基準を採用しています。分野の慣習で別の基準(1%など)を使う場合は、算出されたp値そのものを確認して個別に判断してください。
- 正規性の検定はカバーしていません。スチューデント/Welchのt検定はどちらも「データが正規分布に従う」ことを前提としています。正規性が疑わしいデータの場合は、ノンパラメトリックな手法(マン・ホイットニーのU検定等)を検討する必要があり、これは本ツールの対応範囲外です。
- 対応しているのは2群比較のみです。3群以上の比較(分散分析等)には対応していません。
まとめ
F検定→t検定の使い分けは、統計の基本ではあるものの、毎回手作業でやるとなると地味に面倒な作業です。正しい手順を省略せずに、かつ作業時間を短縮したい方は、よければ使ってみてください。
フィードバックや「こういう機能があると助かる」といったご意見があれば、ぜひコメントで教えていただけると嬉しいです。