フィッシャーの正確検定

フィッシャーの正確確率検定は、データが 2 つのカテゴリに分けられるとき、その 2 つのカテゴリが互いに独立しているかどうかを検定する方法の一つである。カイ二乗検定を用いいることも可能だが、標本数が少ない時にはフィッシャーの正確確率検定を用いる。

例えば、A 群と B 群の 100 個の遺伝子について、その発現量を比較し、20 個の遺伝子が発現変動遺伝子(DEG)と決定されたとする。その 20 個の DEG についてメタ情報を調べると、そのうち 16 個が「GO:001101」というキーワードを持つことがわかった。同様に、発現変動遺伝子でない(non-DEG)についてもメタ情報を調べると、80 個の non-DEG のうち10 個だけが「GO:001101」というキーワードを持つことがわかった。これらを表にまとめると次のようになる。

DEGnon-DEG合計
GO:001101 を持つa = 16b = 1026
GO:001101 を持たないc = 4d = 7074
合計2080n = 100

フィッシャーはこのような数値の組み合わせを得られる確率 p が、幾何分布に従うことを示した。すなわち、

\[ p = \frac{(a+b)!(c+d)!(a+c)!(b+d)!}{n!a!b!c!d!} \]

上の例について、R を利用してフィッシャーの正確確率検定を行う。

dat = matrix(c(16, 4, 10, 70), ncol = 2)
rownames(dat) <- c("has", "doesnthave")
colnames(dat) <- c("DEG", "nonDEG")
dat
##            DEG nonDEG
## has         16     10
## doesnthave   4     70

fisher.test(dat)
## 	Fisher's Exact Test for Count Data
## data:  dat
## p-value = 1.179e-08
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##    6.857215 131.566890
## sample estimates:
## odds ratio
##   26.46712

検定結果で得られる確率が p = 1.1e-08 であり、非常に小さい。すなわち、このような数値の組み合わせが得られる確率が非常に近いといえる。DEG と non-DEG がもっている GO:001101 の数の違いは偶然にそうなったわけではない、といえる。