費雪精確檢定

費雪精確檢定（Fisher's exact test），統計學中的一種假說檢定，用於檢驗列聯表的顯著性差異，由羅納德·愛爾默·費雪於1935年所創。實務中常用於樣本數較小的情況，但其實不限於小樣本情況。屬於一種精確檢定，也就是其p值可以由虛無假說的分布實際計算而不是藉由足夠的樣本數逼近一個特定的機率分布。

據說，費雪根據繆麗·布里斯托女士聲稱能夠區別奶茶是先加了茶還是牛奶而設計了這項檢定。他在女士品茶實驗中亦實作了這項檢定。

## 目的與使用情境

<image>

此檢定在考驗兩種分類結果所產生的類別型變數很有用；它用於檢查兩種分類結果之間的關聯（偶然性）是否顯著。在費雪的原始例題中，一個分類結果是奶茶實際上的沖泡方式（先加牛奶還是茶），另一個分類標準是繆麗·布里斯托認定的沖泡方式，並使用本方法檢驗這兩種分類結果是否具有關聯（受測者是否真的可以分辨出先倒入的是牛奶還是茶）。如同女士品茶實驗，此檢定大多數使用於2 × 2列聯表（如下所述）。最終求得的p值是基於列聯表邊際是固定的，也就是受測者明確知曉八杯茶中有四杯先加牛奶，因此必然只會挑出四杯。這導致表格單元格中數字在獨立性虛無假說下服從超幾何分佈。

若樣本數較大，一般使用卡方檢定或G檢定，其統計量近似於卡方分布。在樣本數較小或是表格中次數差異很大的情況，這樣的大樣本近似方法不適用。通常可以預先檢查表格中各細格的期望值是否皆大於5（或是只有一格小於10）以決定可否使用基於卡方分布的大樣本近似方法，雖然這樣的預先檢查已被認定為過度保守。事實上，卡方近似方法的p值在過小、稀疏的或不平衡的數據與精確檢定的p值可能南轅北轍而導致相反結論。相比之下，費雪精確檢定，正如其名稱所述，只要實驗過程保持行和列總和固定不變，它就是精確的，因此無論樣本特徵如何都可以使用。費雪的方法雖然使用於大樣本或平衡良好的表格會使計算變得困難，但幸運的是，這些正是卡方檢定適合的條件。

此檢定在2 × 2列聯表的情況下可以用手計算。然而，此方法其實可以擴展到m × n聯表的情況，但計算並不容易，可改用統計軟體計算（其中有些使用蒙特卡羅方法來獲得p值的近似值）。

此檢定還可用於量化兩組之間的「重疊程度」。例如，在統計遺傳學的富集分析中，可以為特定的表型加註一組基因（A）。使用者可以測試某些感興趣的基因組（B）與基因組A的重疊程度。在這種情況下，可以歸納成一個2 × 2列聯表以表示以下情況的次數：

- 同時存在於A基因組與B基因組的基因
- 僅存在於A的基因
- 僅存在於B的基因
- 同時不存在於A與B的基因

該測試的虛無假設是任一基因組的基因都來自更廣泛的基因集，再以費雪正確機率檢定檢驗是否顯著重疊。

## 例題

以一群青少年樣本為例，一方面可以將樣本分為男性和女性，另一方面可以分為目前正在或尚未準備統計學考試。樣本中正在準備考試的女性多於男性，而目標是檢驗這項比例差異是否顯著。數據如下所示：

男性｜女性｜列總和

正在準備考試｜1｜9｜10

尚未準備考試｜11｜3｜14

欄總和｜12｜12｜24

這些數據顯示這24名青少年中有10名正在準備考試，並且這24名青少年中有12名是女性。若虛無假說設定為男性和女性的學習比例是相等的，則這10名準備考試的青少年的性別分佈是否不同於尚未準備考試者？更具體的說，如果隨機選擇10位青少年，則能夠抽出12位女性中的9位（或更多）女性而12名男性中只抽出1位（或更少）的機率是多少？

在進行檢驗之前介紹一些符號：以字母a、b、c和d表示各細格中的次數，將跨行和跨列的總計稱為邊際總計，並用n表示總和數。所以上述表格可寫成：

男性｜女性｜列總和

正在準備考試｜a｜b｜a + b

尚未準備考試｜c｜d｜c + d

欄總和｜a + c｜b + d｜a + b + c + d = n

費雪表明，以表格中列總和與欄總和皆被故定為條件，a呈超幾何分布，其中a + c從a+b成功和c+d失敗的母體中抽出。獲得這樣一組結果的機率由下式給出：

$$p = \frac{ \displaystyle{{a+b}\choose{a}} \displaystyle{{c+d}\choose{c}} }{ \displaystyle{{n}\choose{a+c}} } = \frac{ \displaystyle{{a+b}\choose{b}} \displaystyle{{c+d}\choose{d}} }{ \displaystyle{{n}\choose{b+d}} } = \frac{(a+b)!~(c+d)!~(a+c)!~(b+d)!}{a!~~b!~~c!~~d!~~n!}$$

其中$\tbinom nk$是二項式係數，符號「!」表示階乘運算。我們可以這樣理解：若已知所有的邊際總和（即a + b、c + d、a + c和b + d），則只剩下一個自由度，例如已知a則足以推導出其他數值。現在，${\displaystyle p=p(a)}$是從包含n個元素的更大集合中抽出不放回地隨機選擇a + c個元素時抽出a元素，這正是超幾何分布的定義。由上述資料可得。

$$p = { {\tbinom{10}{1}} {\tbinom{14}{11}} }/{ {\tbinom{24}{12}} } = \tfrac{10!~14!~12!~12!}{1!~9!~11!~3!~24!} \approx 0.001346076$$

上面的公式給出了觀察這種特定數據排列的確切超幾何機率，其前提是男性和女性具有相同比例進行考試準備比例的虛無假說以及邊際總數為定值。換句話說，如果假設男性與女性準備考試的機率都是p，並且男性和女性都是獨立地被採樣，無論他們是否正在準備考試，那麼這個超幾何公式給出了在四個單元格中觀察次數a、b、c、d的條件機率，其中的條件是已知的邊緣總數（也就是列與欄總數）。即使男性與女性以不同的機率抽出成為樣本（例如母體中性別比例不是1:1），這仍然是正確的。要求僅僅是兩個分類特徵（性別和是否準備考慮）互為獨立事件。例如，假設我們知道機率P和Q分別表示男性與女性的邊際比例，機率p與q分別表示有無準備考試的邊際比例，自然存在P + Q = 1與p + q = 1的事實，且性別和是否準備考慮互為獨立事件，則上述資料各性別與是否準備考試的機率則分別為

- 已準備考試的男性機率：PQ
- 已準備考試的女性機率：pQ
- 未準備考試的男性機率：Pq
- 未準備考試的女性機率：pq

之後，若計算給定邊緣條件的分佈，將可獲得上述的公式，其中p和P都不在式中。因此24名青少年任意排列到表的四個單元格中的確切機率是可以計算的。費雪表明，統計顯著性的計算只需要考慮邊際總和與觀測結果相同或更極端的情況即可。（巴納德檢定則放寬了對一組邊際總數的限制。）在該示例中，有11種排列方式與上述數據在相同的方向上更為極端，並可以簡化為1種組合（如下表）：

男性｜女性｜列總和

正在準備考試｜0｜10｜10

尚未準備考試｜12｜2｜14

欄總和｜12｜12｜24

而發生這組資料的機率（在相同前提下）為$${p = {\tbinom{10}{0}} {\tbinom{14}{12}} }/{ {\tbinom{24}{12}} } \approx 0.000033652$$

若虛無假說為真可以得到單尾與雙尾檢定的p值，即目前資料及更極端的資料的機率總和，約等於0.001346076 + 0.000033652 = 0.001379728。在R語言環境下，這個值可以藉由`fisher.test(rbind(c(1,9),c(11,3)),alternative="less")$p.value`，或者在Python中使用`scipy.stats.fisher_exact(table=1,9,11,3, alternative="less")`獲取。該p值可以解釋為觀察數據（或任何更極端的表格）為虛無假說（男性和女性準備考試的比例沒有差異）提供的證據總和。當p值越小，拒絕原假設的證據越多；因此例題中的數據強烈地表明男性和女性準備考試的可能性並不相同。

若考慮的是單尾與雙尾檢定，則需要額外考慮同樣極端但方向相反的表格，即對稱於目前資料方向的拒絕域。然而，此時「對稱處更極端的表格」並沒有唯一的定義。R語言提供的`fisher.test`函數採用的方法是對所有機率小於或等於目前資料機率的總和來計算p值，因此雙尾檢定的p值不一定是單尾檢定的二倍（特別是小樣本的情況），與其它具有對稱性的機率分布不同。

如上所述，太多數現代統計軟體列表可以計算費雪精確檢定的顯著性，但此時可改以卡方分布的近似方法，或是利用Γ函數或對數Γ函數。當樣本數很大或欄列數超過2時，計算費雪檢定是困難的，例如過程中面對過大的階乘。但隨個人電腦記算能力的進步，主流統計軟體列表（諸如SPSS、SAS、R語言、以及在Python語言環境使用SciPy工具包等）已納入費雪法的計算程式。

## 爭議

儘管費雪的檢定方法能精確地計算p值，但一些作者認為它是保守的，也就是檢定力較低。當離散統計量的特性與選用固定的顯著性水準二者結合後可能發生這樣的問題。更準確地說，費雪檢定加總了在虛無假說成立時每種相同或更極端的表格之發生機率為p值，但由於所有表格的集合是離散的，可能不存在與實現情況相等的表格。若αe是小於5%的最大p值並存在於某些表格的集合，建議應預先測試有效的αe水準。對於小樣本量的清況，αe可能明顯低於5%。雖然這種影響發生在任何離散統計數據中，但有人認為這一事實使費雪在邊際上的檢驗條件使問題更加複雜。為了避免這個問題，許多作者在處理離散問題時不鼓勵使用固定的顯著性水準。

以表格邊緣為條件的決定也存在爭議。費雪檢定得出的p值來自以列邊際總和與欄邊際總和被固定。從這個意義上講，測試僅對條件分佈是精確的，而不是原始表格。在原始資料中，邊際總數可能因實驗而異而不適合使用費雪檢定。當邊際總和不固定時，可以考慮使用其他方法以獲得2 × 2表格的精確p值。例如，巴納德檢定允許隨機的邊際總和。然而，一些作者（包括後來的巴納德本人）批評了巴納德基於此性質的檢定。他們認為邊際成功總數（即前先表格中的a + b）幾乎是輔助統計量，幾乎不包含有關測試屬性的資訊。

從2 × 2表格中以邊際成功率為條件可能忽略了數據中關於未知勝算比的一些資訊。邊際總數（幾乎）是輔助統計量的論點意味著，用於推斷這個勝算比的適當似然函數應該以邊際成功率為條件。這種被忽略的資訊對於推論的目的是否重要仍有爭論。

## 替代方法

巴納德檢定可用於代替費雪檢定，特別是在2 × 2表格的情況有更高的檢定力。此外，博世路檢定是另一種精確檢定，亦比費雪檢定具有更高的檢定力。

對於階層式的類別資料，必須使用諸如CMH檢定等考慮採樣階層的方法，而不是費雪檢定。

根據給定邊際成功率的勝算比的條件分布可以提出基於似然比檢定的p值。此p值在推論上與常態分佈數據的經典檢定以及基於此條件似然函數的似然比和支持區間一致，並可在R語言上進行運算。