Excel VBAでフィッシャーの正確検定ができる関数を作ってみた2
前回、『Excelで学ぶコレスポンデンス分析』を参考に、Excel VBAで2×2表専用のフィッシャーの正確検定ができる関数を作りました。
今回は、作った関数を実際に使ってみたいと思います。
使い方は、例によって簡単です。
ソースコード全行をVBEで標準モジュールにコピペしたら、任意のセルに「=Exact_Test(セル範囲)」と入力して、セル範囲の部分に2×2表の
だけです。(データは架空のものですのでご注意ください。)
結果はこちら。
サンプルサイズは20未満、期待値5未満は75%となっていますので、フィッシャーの正確検定の出番、ですよね?
有意水準を5%とした場合、カイ二乗検定では有意差あり(性別とダイエットには関連がある)となりますが、フィッシャーの正確検定では帰無仮説「H0:性別とダイエットの間に関連はない」は棄却されません。
しかし、 ちょっと待った! なのです。
例によってあれこれググっていたら、こんなツイート(のまとめ)が。
曰く、
「Fisherの正確検定」で計算される確率は横合計と縦合計の両方がすべて固定されている場合の超幾何分布における確率なので、少なくとも横合計または縦合計の片方が固定不可能な場合の調査結果に「Fisher正確検定」を適用しても正確な確率計算ができるはずがないのです。
もう少し砕いて言うと、フィッシャーの正確検定が仮定している確率分布は、クロス表の
ことを前提としているけれど、現実の標本がそんなデータになることはない(男女の人数を揃えて母集団から抽出したとしても、ダイエット/非ダイエットの計が常に同じ値になることはありえない)ので、正確検定で得られる確率は正確ではない。
のだそうで、結果として不当なくらい有意差が出にくくなるのだとか。マジか。
コクラン・ルールに従うとカイ二乗検定は使えないというから、フィッシャーの正確検定を学習したというのに、そっちも使えないと来たら、一体どないせえっちゅーんじゃ。*1
いちおう、解決策らしきアイディアを示してくれる記事を見つけたのですが、
道は遠く険しいですが、一歩ずつ進んでいくしかないんでしょうねぇ。