1. 簡(jiǎn)介
超幾何分布(hypergeometric)是統(tǒng)計(jì)學(xué)上一種離散概率分布支救。它描述了由有限個(gè)物件中抽出n個(gè)物件拷淘,成功抽出指定種類的物件的個(gè)數(shù)(不歸還)。
超幾何分布和Fisher's Exact Test是完全一模一樣的原理辕棚,只是兩種不同的稱謂。
例如在有N個(gè)樣本逝嚎,其中m個(gè)是不及格的详恼。超幾何分布描述了在該N個(gè)樣本中抽出n個(gè),其中k個(gè)是不及格的機(jī)率:
上式可如此理解:n^N 表示所有在N個(gè)樣本中抽出n個(gè)挽铁,而抽出的結(jié)果不一樣的數(shù)目叽掘。
k^m 表示在m個(gè)樣本中玖雁,抽出k個(gè)的方法數(shù)目。剩下來的樣本都是及格的,而及格的樣本有N-m個(gè)溃列,剩下的抽法便有(n-K^N-m)種膛薛。
若n=1,超幾何分布還原為伯努利分布雅任。
若N接近∞咨跌,超幾何分布可視為二項(xiàng)分布。注意二項(xiàng)分布是有歸還 (with replacement) 的抽取虑润。
然后計(jì)算得到的p-value通過Bonferroni校正之后,以0.05為閾值(小于0.05)哭当,滿足此條件的GO term定義為顯著富集冗澈。
(1)超幾何分布的模型是不放回抽樣
(2)超幾何分布中的參數(shù)是M,N,n上述超幾何分布記作X~H(n,M彻采,N)捌归。
2. 例子
以文章Gene Expre ssion in Ovarian Cancer Reflects Both Morphology and Biological Behavior, Distinguishing Clear Cell from Other Poor-Prognosis Ovarian Carcinomas所鑒定的差異基因?yàn)槔?/p>
測(cè)試一下這些基因和化學(xué)刺激響應(yīng)的相關(guān)性。
樣本的大小是n特笋,屬于“化學(xué)刺激響應(yīng)”這個(gè)分類的基因有k個(gè)巾兆。
eg <- c("7980", "3081", "3162", "3059", "1545", "1917", "6696", "5797", "6648" , "10397" , "6781", "5817", "1282", "1284", "6948", "7077")
n <- length(eg)
k <- sum(eg %in% allgeneInCategory)
n
k
#16
#12
那么做為背景,總體基因?yàn)镹蔫磨,屬于“化學(xué)刺激響應(yīng)”這個(gè)分類的基因有M個(gè)圃伶。
library(org.Hs.eg.db)
goid <- "GO:0042221"
allgeneInCategory <- unique(get(goid, org.Hs.egGO2ALLEGS))
M <- length(allgeneInCategory)
N <- length(mappedkeys(org.Hs.egGO))
M
N
#4373
#19307
2.1 二項(xiàng)式分布
從總體上看蒲列,要拿到一個(gè)基因?qū)儆凇盎瘜W(xué)刺激響應(yīng)”這個(gè)分類的概率是M/N煤惩。那么現(xiàn)在抽了n個(gè)基因,里面有k個(gè)基于這個(gè)分類剪侮,p值為
1-sum(sapply(0:k-1, function(i) choose(n,i) * (M/N)^i * (1-M/N)^(n-i)))
#1.301651e-05
2.2 超幾何分布
二項(xiàng)式分布洛退,是有放回的抽樣,你可以多次抽到同一基因彩匕,這是不符合的媒区。所以這個(gè)計(jì)算只能說是做為近似的估計(jì)值,無放回的抽樣袜漩,符合超幾何分布宙攻,通過超幾何分布的計(jì)算,p值為:
phyper(k-1,M, N-M, n, lower.tail=FALSE)
#1.289306e-05
用2x2表做獨(dú)立性分析
d <- data.frame(gene.not.interest=c(M-k, N-M-n+k), gene.in.interest=c(k, n-k))
row.names(d) <- c("In_category", "not_in_category")
d
2.3 卡方檢驗(yàn)
對(duì)于2x2表來說递惋,卡方檢驗(yàn)通常也只能做為近似估計(jì)值溢陪,特別是當(dāng)sample size或expected ell count比較小的時(shí)候,計(jì)算并不準(zhǔn)確贩挣。
chisq.test(d, )
#Chi-squared approximation may be incorrect
# Pearson's Chi-squared test with Yates' continuity correction
#data: d
#X-squared = 22.148, df = 1, p-value = 2.525e-06
2.4 Fisher精確檢驗(yàn)
名副其實(shí)没酣,真的就比較exact卵迂,因?yàn)樗褂玫氖浅瑤缀畏植紒碛?jì)算p值。Fisher精確檢驗(yàn)是基于超幾何分布計(jì)算的偿衰,它分為兩種,分別是單邊檢驗(yàn)(等同于超幾何檢驗(yàn))和雙邊檢驗(yàn)下翎。
fisher.test(d)
# Fisher's Exact Test for Count Data
#data: d
#p-value = 1.289e-05
#alternative hypothesis: true odds ratio is not equal to 1
#95 percent confidence interval:
# 0.02285468 0.32152483
#sample estimates:
#odds ratio
#0.09739934
3. 額外
1.n大于等于40.所有理論頻數(shù)大于等于5---用卡方檢驗(yàn)
2.n大于等于40视事,所有理論頻數(shù)大于1,小于5----用校正的卡方
3.n小于40俐东,理論頻數(shù)小于1-----用fish精確概率法