根據拿到的表達矩陣設為exprSet
1、用scale 進行標准化
數據中心化:數據集中的各個數字減去數據集的均值
數據標准化:中心化之后的數據在除以數據集的標准差。
在R中利用scale方法來對數據進行中心化和標准化
1 scale(data, center=T, scale=F) 2 3 其中,center為T,表示數據中心化 4 5 scale為T,表示數據標准化 6 7 對一個data frame的每一列進行計算
並不是表達矩陣里面的所有基因都可以進行相關性分析,首先去除reads count >1 小於5個的基因(測試樣品共有6個)
1 ##過濾reads count >1 小於5 2 exprSet <- exprSet[apply(exprSet,1, function(x) sum(x>1) >5,] 3 ##reads count 差距較大,用log以及scale 縮小差距 4 M <- scale(cor(llog2(exprSet+1))) 5 ##熱圖 6 pheatmap(M)
2、另一種標准化
1 exprSet <- exprSet[apply(exprSet,1, function(x) sum(x>1) >5,] 2 3 ##去除文庫大小差異 4 exprSet <- log(edgeR::cpm(exprSet)+1) 5 6 ##取mad(絕對中位差)(類似sd)的前50% 7 exprSet <- exprSet[names(sort(apply(exprSet,1,mad),decreasing = T)[1:500]),] ##取前500 8 M <-cor(log2(exprSet+1)) 9 10 ##添加group_list 11 tem = data.frame(g=group_list) 12 rownames(tem) <- colnames(M) 13 pheatmap::pheatmap(M, annotation_col = tem,filename = 'cor.png')
3、hclust 聚類分析
歐式距離(Euclidean Distance)
歐式距離是最易於理解的一種距離計算方法,源自歐式空間中兩點間的距離公式。
用R語言計算距離主要是dist函數。若X是一個M×N的矩陣,則dist(X)將X矩陣M行的每一行作為一個N維向量,然后計算這M個向量兩兩間的距離。
表達矩陣是每一行為基因,列為樣品名稱,所以要進行轉至才能計算每個樣品之間基因表達量的距離
為了得到更好的聚類分析,也可以將表達矩陣標准化,譬如,log,或者 scale等
1 hc <- hclust(dist(t(exprSet)))
2 plot(hc)
參考:生信技能樹