眾所周知,在R裡面使用cor函數可以計算兩個向量的相似情況,有兩個參數尤為需要注意:
其中method參數是:One of "pearson" (default), "kendall", or "spearman": can be abbreviated.
然後use參數是:This must be (an abbreviation of) one of the strings "everything", "all.obs", "complete.obs", "na.or.complete", or "pairwise.complete.obs".本來呢,pearson,kendall以及spearman這3個相關性公式就讓人頭疼了,但是最近我在教程:比較不同的腫瘤somatic突變的signature 發現兩個不同算法的signature的相似性並不是和文章完全一致,原因是作者使用了一個cosine similarity(餘弦相似度)的概念。
cosine similarity(餘弦相似度)如何計算簡單搜索了一下它的介紹:
餘弦值的範圍在[-1,1]之間,值越趨近於1,代表兩個向量的方向越接近;越趨近於-1,他們的方向越相反;接近於0,表示兩個向量近乎於正交。
最常見的應用就是計算文本相似度。將兩個文本根據他們詞,建立兩個向量,計算這兩個向量的餘弦值,就可以知道兩個文本在統計學方法中他們的相似度情況。實踐證明,這是一個非常有效的方法。
第一次搜索它在R裡面的用法,發現了tcR包裡面的cosine.similarity函數,就簡單試用了一下。但是計算得到的結果很詭異,並不是範圍在[-1,1]之間。
再次嘗試搜索cosine similarity(餘弦相似度),發現在 The repertoire of mutational signatures in human cancer 文章裡面也提到了:
COSMIC資料庫的signature需要更新為何使用cosine similarity(餘弦相似度)而不是簡單的相關性係數呢?前面我們搜索了解到,cosine similarity(餘弦相似度)最常見的應用就是計算文本相似度,那麼,為什麼生物信息學領域裡面的cosmic的signature的相似性要採用cosine similarity(餘弦相似度)而不是常見的簡單的相關性係數呢?
比如,同樣的是對cosmic內置的30個signature互相計算相關性,如下:
# https://cancer.sanger.ac.uk/cancergenome/assets/signatures_probabilities.txt
cosmic=read.table('https://cancer.sanger.ac.uk/cancergenome/assets/signatures_probabilities.txt',
header = T,sep = '\t')[,1:33]
head(cosmic[,1:4])
M=cor(cosmic[,4:33])
pheatmap::pheatmap(M)出圖如下:
而計算cosine similarity(餘弦相似度)代碼如下;
# 具體數學公式參考:https://www.jianshu.com/p/a894ebba4a1a
cos=function(x,y){
sum(x * y) / (sqrt(sum(x ^ 2)) * sqrt(sum(y ^ 2)));
}
M2=apply(cosmic[,4:33], 2, function(x){
apply(cosmic[,4:33], 2, function(y){
cos(x,y)
})
})
rownames(M2)=rownames(M)
pheatmap::pheatmap(M2)出圖如下:
雖然我做了探索,但是我其實並不明白為什麼cosmic的signature的相似性要採用cosine similarity(餘弦相似度)而不是常見的簡單的相關性係數。
不過上面的代碼親測可以用,打開你的R即可,如果你覺得這些代碼很好玩,歡迎參加我們的生信技能樹官方舉辦的學習班:
文末友情推薦要想真正入門生物信息學建議務必購買全套書籍,一點一滴攻克計算機基礎知識,書單在:什麼,生信入門全套書籍僅需160 。如果大家沒有時間自行慢慢摸索著學習,可以考慮我們生信技能樹官方舉辦的學習班:
如果你課題涉及到轉錄組,歡迎添加一對一客服:詳見:你還在花三五萬做一個單細胞轉錄組嗎?
號外:生信技能樹知識整理實習生招募,長期招募,也可以簡單參與軟體測評筆記撰寫,開啟你的分享人生!另外,:絕大部分生信技能樹粉絲都沒有機會加我微信,已經多次滿了5000好友,所以我開通了一個微信好友,前100名添加我,僅需150元即可,3折優惠期機會不容錯過哈。我的微信小號二維碼在:0元,10小時教學視頻直播《跟著百度李彥宏學習腫瘤基因組測序數據分析》