フィッシャーの正確確率検定は、データが 2 つのカテゴリに分けられるとき、その 2 つのカテゴリが互いに独立しているかどうかを検定する方法の一つである。独立性の検定については、カイ二乗検定を用いることも可能だが、標本数が少ない時にはフィッシャーの正確確率検定を用いる。
例えば、あるシーズンにおいて、これに対して、インフルエンザ予防接種を受けなかった 532 人を追跡調査した際に、238 人が感染し、294 人が感染しなかった。予防接種を受けた 386 人のうち 121 人が感染し、265 人が感染しなかった。このデータを利用して、インフルエンザの予防接種に効果があるかどうかを検定したい。この場合、予防接種を受けたグループとそうでないグループの感染者・非感染者の割合が同じであることを帰無仮説としてフィッシャーの正確確率検定を用いる。
感染 | 未感染 | 合計 | |
未接種 | c = 238 | d = 294 | 532 |
接種 | a = 121 | b = 265 | 386 |
フィッシャーはこのような数値の組み合わせを得られる確率 p が、幾何分布に従うことを示した。ただし、n は全調査人数で 532 + 368 = 918 である。
dat <- matrix(c(238, 121, 294, 265), ncol = 2)
rownames(dat) <- c("uninoculated", "inoculation")
colnames(dat) <- c("infection", "uninfected")
dat
## infection uninfected
## uninoculated 238 294
## inoculation 121 265
fisher.test(dat)
## Fisher's Exact Test for Count Data
##
## data: dat
## p-value = 3.96e-05
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 1.335179 2.357439
## sample estimates:
## odds ratio
## 1.771845
別の例をもう一つ見ていく。A 群と B 群の 100 個の遺伝子について、その発現量を比較し、20 個の遺伝子が発現変動遺伝子(DEG)と決定されたとする。その 20 個の DEG についてメタ情報を調べると、そのうち 16 個が「GO:001101」というキーワードを持つことがわかった。同様に、発現変動遺伝子でない(non-DEG)についてもメタ情報を調べると、80 個の non-DEG のうち10 個だけが「GO:001101」というキーワードを持つことがわかった。これらを表にまとめると次のようになる。
DEG | non-DEG | 合計 | |
GO:001101 を持つ | a = 16 | b = 10 | 26 |
GO:001101 を持たない | c = 4 | d = 70 | 74 |
合計 | 20 | 80 | n = 100 |
上の例について、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 の数の違いは偶然にそうなったわけではない、といえる。