χ二乗検定ではなく Fisher の直接確率検定を行うべき状況とは

 クロス表(四分表)を見て,各セルの期待値が 5 未満の割合が 20 % 以上存在する場合や,総数 N が 20 未満の場合にはχ二乗検定ではなく Fisher の直接確率検定を行うべきであるとされています.この辺り,本来なら Fisher の直接確率検定を行いたいが計算コストが高すぎてχ二乗検定で代用せざるを得なかった経緯があるのではないかと考えます.

 ここでは各セルの期待値を求める方法を述べます.一見して明らかですが,期待値は周辺度数 (marginal total) のみから算出されます.

 下表のようなクロス表があるとします.

  TRUE FALSE Marginal total
POSITIVE a b a + b
NEGATIVE c d c + d
Marginal total a + c b + d N 

 各セルの期待値は下記の通りです.

  TRUE FALSE Marginal total
POSITIVE (a + b)*(a + c)/N (a + b)*(b + d)/N a + b
NEGATIVE (c + d)*(a + c)/N (c + d)*(b + d)/N c + d
Marginal total a + c b + d N 

参照記事
対数を用いてFisherの直接確率検定を計算するには

周辺度数からクロス表を作成するには

 クロス表から Fisher の直接確率検定を行う場合,周辺度数 (marginal total) が一定ですので,真陽性の度数 a さえ決まれば残りは自動的に決まります.下記の四分表はそれを示しています.すべての度数は 0 以上の整数ですから,a の取りうる範囲は 0 から T または P のいずれか小さい方までです.

 ここで重要なことは,Fisher の直接確率検定による確率 p は a の関数になっていることです.これを超幾何分布と言います.仮に POSITIVE と NEGATIVE とが何らかの連続変数の閾値によって分けられている場合,閾値を変化させることで周辺度数である陽性の度数 P,陰性の度数 N – P  および真陽性の度数 a も変化します.真の度数 T および偽の度数 N – T は閾値によって変化することはありません.つまり Fisher の直接確率検定による確率 p は閾値の関数になっています.

 通常ですと論文には総数の N, 真の度数 T, 陽性の度数 P, 更に感度と特異度が記載されており,ここから四分表を再現できるようになっています.

  TRUE FALSE Marginal total
POSITIVE a P – a P
NEGATIVE T – a a + N – P – T N – P
Marginal total T N – T N 

 最初に分かっているのは下記のように総数 N,陽性の度数 P,真の度数 T のみです.

  TRUE FALSE Marginal total
POSITIVE     P
NEGATIVE      
Marginal total T   N 

 次に陰性の度数 N-P,偽の度数 N-T を計算で求めます.これで周辺度数 (marginal total) が得られます.

  TRUE FALSE Marginal total
POSITIVE     P
NEGATIVE     N – P
Marginal total T N – T N 

  a を与えると,偽陰性と偽陽性が求められます.a は TRUE に感度をかけて求めます.

  TRUE FALSE Marginal total
POSITIVE a P – a P
NEGATIVE T – a   N – P
Marginal total T N – T N 

  最後に真陰性が得られます.

  TRUE FALSE Marginal total
POSITIVE a P – a P
NEGATIVE T – a a + N – P – T N – P
Marginal total T N – T N