KS檢驗統計量的擴展應用
KS(Kolmogorov-Smirnov)檢驗是比較兩個經驗分布之間是否存在差異。
我們設X1, X2,…, Xm, Y1, Y2,…, Ym為兩個獨立隨機樣本,分別滿足假設A1和A2,分布函數分別為F, G。現在我們想知道的是X和Y的概率分布之間是否存在差異,我們建立以下假設
H0:F(t) = G(t), for every t
H1:F(t) ≠ G(t), for at least one t
接下來我們要計算雙邊雙樣本統計量J
首先我們需要獲得X,Y樣本的經驗分布函數:
對於任意一個實數t, 有
和
稱Fm(t)和Gn(t)分別為樣本X和Y的經驗分布函數。
使
d = greatest common divisor of m and n
則統計量J為:
為了對於給定的樣本X和Y精確地計算統計量J,我們將X1, X2,…, Xm, Y1, Y2,…, Yn 共N=(m+n)個樣本觀察值從小到大排序,得到Z(1) ≤ … ≤ Z(N),則統計量J的計算公式可以改寫為:
設顯著性水平為α,則當J≥jα時拒絕H0。
我們舉一個簡單的例子,如下圖1有兩組數據,分別為有反饋和無反饋的觀察值(不用弄清楚具體什么含義),兩組樣本量均為10.
圖 1
有m = n = 10, N = (10 + 10) = 20,d = 10,如下圖2我們將這20個樣本值排序,計算F10(t), G10(t),以及差異的絕對值|F10(Z(i))-G10(Z(i))|
圖 2
我們發現樣本差異最大的點在Z(12),
在Z(12)處,觀測值為2.69,在有反饋的那組,小於等於2.69的有3個觀察值,無反饋的那組小於等於2.69的有9個觀察值,它們之間的差異為6/10。統計量J=6.
我們發現KS檢驗是計算兩個樣本之間每個觀察值的排序差異,即為一種排序相似性,CMap(生物信息常用的一種數據庫)基於KS檢驗這樣的一種性質,設計了一種基於排序的模式匹配算法。
我們通過一個例子說明這種匹配算法。現在我們有兩種數據,一種是葯物作用下基因的差異表達值,例如葯物作用下和正常狀態下的差異,正值表示葯物作用下基因的表達量比正常情況下高,負值表示葯物作用下基因的表達量比正常情況下低;一種是疾病狀態下基因的差異表達值,例如疾病和正常狀態下的差異,正值表示疾病狀態下基因的表達量增加,負值表示疾病狀態下基因表達量減少,表達值都是一些實數。我們的目的是通過這兩種數據來看這種葯物對這種疾病有沒有潛在的治療可能,我們判斷的依據:疾病狀態下如果使某些基因(或某個基因)的表達值增加,即不在正常狀態下,而這些基因在葯物作用下,表達值在正常水平以下,即該葯物會抑制這些基因的表達,那么我們可以推斷,如果得這種疾病,這些基因表達值高於正常水平,我們再使用那些可以抑制這些基因表達的葯物,可能就會使這些基因的表達量降下來,從而達到治病的效果。
圖 3
我們來計算葯物A對疾病D是否有治療作用。如圖3所示,我們將葯物A作用下的表達值從小到大排序,疾病D狀態下的基因表達值從大到小排序。
圖 4
圖4所示,我們接下來從疾病D的數據中選出前/后S個,然后再與葯物A所有基因求交集,得到Num個共同基因(記該集合為B),我們再根據這些基因在葯物A下的表達值從小到大排序。接下來,我們用基於ks統計量的方法,計算Num個共同基因在葯物和疾病之間的排序相似性。
if a > b KSTop/Bottom = a
else KSTop/Bottom = -b
if KSTop * KSBottom < 0, score = KSTop – KSBottom
else score = 0
其中i表示集合B中的第i個基因,Num表示集合B中基因個數,i_position表示基因i在葯物A數據中的排序,geneNum表示葯物A的基因總數,即M。
我們先來看看圖5所示top的情況。如果想讓a取值大,那么 i 取最大為Num,而i_position就應該盡可能的小,也就是說,對於在共同基因中最后一個基因,該基因在疾病數據中為top,同時在葯物數據中也在top的位置,所以可以推出Num個基因都在葯物數據中處於top。我們稱這種模式為top-top模式。如果希望b值較大,則i_position應該盡可能的大(排序靠后),而 i 盡可能取小(Num個基因中排序在前),這就說明,對於Num個基因中的靠前基因在葯物數據中排名靠后,即保證了Num個基因在葯物中全處於bottom。它在疾病數據中為top,但在葯物數據中為bottom,稱這種情況為bottom-top模式。
接下來我們看看圖6的bottom情況。同樣的,如果想讓a取值較大,那么 i 取值應該較大(共同基因中靠后),i_position就應該盡可能的小(葯物數據靠前),也就是說,共同基因在疾病數據中為bottom,但是在葯物數據中處於top的位置,我們稱這種模式為top-bottom模式。如果希望b值較大,則i_position應該盡可能的大(葯物數據中排名靠后),i 盡可能取小(共同基因中排名靠前),這就說明,共同基因在疾病數據中為bottom,同時在葯物數據中也為bottom,稱這種情況為bottom-bottom模式。
圖 5
圖 6
根據上面解析,有四種模式,組合后也有四種模式,如下圖7所示
圖 7
其中第二和第三中模式匹配是沒有意義的,比如第二種,top-bottom,bottom-bottom模式匹配,它說明有些基因在疾病狀態下表達值增加,但是在葯物作用下有些也會增加,有些減少,那么我們對該疾病作用該種葯物,則會引起一些基因表達恢復正常,但是會使另一些基因表達量繼續增加,可能會導致某些症狀更嚴重。第一種匹配,top-top,bottom-bottom,則說明在疾病狀態下表達值增加或減少的基因,在葯物作用下剛好相反,那么這種葯物就有治療該疾病的潛在可能。第四種匹配:top-bottom,bottom-top,說明,在疾病狀態下表達值增加或減少的基因,在該葯物作用下也增加或減少,說明該葯物的作用和疾病類似,即該葯物絕對不能用於治療該疾病。
我們要選出第一和第四種匹配,這就要“-b”起作用了,第一種情況下,我們的KSTop = a, KSBottom = -b,第四種情況剛好相反,它們剛好滿足異號的條件,所以上面“-b”的作用是為了找出這兩種匹配模式。那么我們如何知道葯物A是可以治療疾病D呢,還是加劇病情的呢?因為score=KSTop-KSBottom,所以第一種情況,即治療疾病,score是正數,而第四種情況,加劇病情,score為負數。並且score的絕對值越大,說明作用效果越明顯(明顯改善或明顯加劇)。
我們再來看看計算b的公式,它將i減了1,即將集合B中的基因位置向前推了一位,這是為什么呢?我們看下圖8的情況。
圖 8
當基因Q剛好在疾病中位於第N個,在葯物數據中位於第M個,也就是說,該基因在疾病狀態下被抑制,表達量非常少,而在葯物作用下產生促進表達作用,表達量增加很多,很明顯,該葯物對該疾病的治療效果應該很好,稱為該疾病的特效葯的可能性也很高,如果我們在計算b的時候,不減1,那么b=0,后面的異號條件也不滿足,那么我們就漏掉了很好的這種情況,為了避免,就將集合B的基因位置向前推一個。
參考
M. Hollander, D. Wolfe, Nonparametric Statistical Methods (Wiley, ed. 2,1999), pp. 178-185.
Lamb J, Crawford E D, Peck D, et al. The Connectivity Map: Using Gene-Expression Signatures to Connect Small Molecules, Genes, and Disease[J]. Science, 2006, 313(5795):1929-1935.