[統計] Fisher Exact Test

Fisher Exact Test 是一個檢驗兩個變數是否相關的方法?在基因大數據的領域裡面算是很常見的方法之一,詳細可以參考連結,由於在研讀 Fisher Exact Test 的時候,我們發現大部分網路上可以找到的訊息例如連結一連結二都只有直接展示計算的結果但是沒有推導所以我們很難真正理解這些數學式背後的意義,本篇的推導參考 Michael J. Evans and Jeffrey S.Rosenthal 著作的 Probability and Statistic, The Science of Uncertainty 一書。

使用 Fisher Exact Test 的方法
以下我們展示 Fisher Exact Test 是怎麼驗證兩個隨機變數 A, B 之間是否有關聯性的?假設 AB 各有 [1,\cdots,M][1,\cdots,K] 個離散狀態,而且假設 A,B 的機率分佈為 Multinominal 分佈:

(1)   \begin{align*} P(a_i = m) = \alpha_m, P(b_i = k) = \beta_k \end{align*}

(2)   \begin{equation*} \sum^{M}_{m=1}\alpha_m=1, \sum^{K}_{k=1}\beta_k=1 \end{equation*}

Fisher Exact Test 的 null hypothesis 假定 A,B 為獨立的隨機變數,在此假設下

(3)   \begin{align*} P(a_i=m, b_i=k) = P(a_i=m)P(b_j=k) = \alpha_m\beta_j \end{align*}

當取樣樣本數為 n,且 X_{mk} 代表樣本為 a_i=m,b_i=k 的個數,則

(4)   \begin{align*} \sum^M_{m=1}\sum^K_{k=1}X_{mk} = n \end{align*}

此時根據獨立性的假設我們得到 Likelihood 函式為

(5)   \begin{align*} &L(\alpha_m\beta_k|X_{mk})\\ &=(\alpha_1\beta_1)^{X_{11}}\cdots(\alpha_1\beta_K)^{X_{1K}}\cdots(\alpha_M\beta_1)^{X_{M1}}\cdots(\alpha_M\beta_K)^{X_{MK}}\\ &=(\alpha_1)^{X_{1\cdot}}(\alpha_2)^{X_{2\cdot}}\cdots(\alpha_M)^{X_{M\cdot}}(\beta_1)^{X_{\cdot1}}(\beta_2)^{X_{\cdot2}}\cdots(\beta_K)^{X_{\cdot K}}\\ &=(\alpha_1)^{X_{1\cdot}}\cdots\left(1-\sum^{M-1}_{m=1}\alpha_m\right)^{n-\sum^{M-1}_{m=1}X_{m\cdot}}(\beta_1)^{X_{\cdot1}}\cdots\left(1-\sum^{K-1}_{k=1}\beta_{k}\right)^{n-\sum^{K-1}_{k=1}X_{\cdot k}} \end{align*}

在此為了方便起見我們利用 X_{m\cdot}=\sum^{K}_{k=1}X_{mk}, X_{\cdot k}=\sum^{M}_{m=1}X_{mk} 簡化數學式,並且將 \alpha_M, \beta_K 取代。 最大化 Likelihood 函式的話我們可以對所有 \alpha_m,\beta_k 做偏微分:

(6)   \begin{align*} \frac{\partial L(\alpha_m)}{\partial\alpha_m} = 0,\frac{\partial L(\beta_k)}{\partial\beta_k} = 0 \end{align*}

得到以下 M-1 個聯立方程式

(7)   \begin{align*} \frac{\partial L(\alpha_1)}{\partial\alpha_1} = 0 &= X_{1\cdot}\left(1-\sum^{M-1}_{m=1}\alpha_m\right)-\alpha_1\left(1-\sum^{M-1}_{m=1}X_{m\cdot}\right)\\ &\vdots\\ \frac{\partial L(\alpha_{M-1})}{\partial\alpha_{M-1}} = 0 &= X_{{M-1}\cdot}\left(1-\sum^{M-1}_{m=1}\alpha_m\right)-\alpha_{M-1}\left(1-\sum^{M-1}_{m=1}X_{m\cdot}\right)\\ \end{align*}

求解可以得到

(8)   \begin{align*} \hat{\alpha}_m = \frac{X_{m\cdot}}{n}, \hat{\beta}_k = \frac{X_{\cdot k}}{n}. \end{align*}

以上我們證明 X_{m\cdot}, X_{\cdot k} 是 minimal sufficient statistic (最小充分統計量)。

 

Fisher Exact Test 假設檢定的精神是觀察取樣的 P value 是否足夠低,足夠去推翻我們做的獨立性假設,

在一個 2\times 2 contingency table 裡面,假設是獨立發生的,則每一個可能性機率一樣,那麼 X_{11}, X_{12}, X_{21}, X_{22} 發生的機率則為:

(9)   \begin{equation*} P = \frac{C^{X_{1\cdot}}_{X_{11}}C^{X_{2\cdot}}_{X_{21}}}{C^n_{X_{1\cdot}}} = \frac{X_{1\cdot}!X_{2\cdot}!X_{\cdot 1}!X_{\cdot 2}!}{n!\prod_{m=(1,2),k=(1,2)} X_{mk}!} \end{equation*}

推廣到一般情況 P 值由以下方式計算:

(10)   \begin{align*} P = \frac{X_{1\cdot}!\cdots X_{M\cdot}!X_{\cdot 1}!\cdots X_{\cdot K}!}{n!\prod X_{mk}!} \end{align*}

要判斷 P 值是否小於一個閾值還需要把所有小於這個 P 值的所有情況加總起來,在 2×2 以外的情況比較難做計算,因為很難窮舉,連結文章在介紹這個做法!