相關性熱圖還能玩出什麼花樣?

2021-03-02 基迪奧生物
關於相關性,表示數據之間的相互依賴關係,但需要注意,數據具有相關性不一定意味著具有因果關係。相關性在組學數據挖掘中應用非常廣,如樣本的重複檢驗、基因的共表達分析、微生物群落的共發生網絡分析等。
相關性分析其實較為簡單,用R語言自帶的cor()函數非常容易計算得到兩兩變量間的相關係數。下面我們就來看下如何用R語言實現相關性計算並繪製帶有顯著性星標的相關性熱圖。如果想了解到相關性分析的原理,可以到文末拓展閱讀部分複習下相應的知識點。以R自帶的數據集mtcars為例,直接計算矩陣或數據框對應列之間的相關性係數。


#計算mtcars數據框的相關性係數;
cor<- cor(mtcars)
class(cor)
#查看得到相關性係數矩陣的前5行,前5列;
cor[1:5,1:5]


#安裝R包;
install.packages("corrplot")

#載入相關R包;
library(corrplot)
#默認的繪製方法是 "circle",圖形的樣式還可以是"square"、"ellipse"、"pie"和"color"等,其中method = "number"時,只顯示相關性係數;
corrplot(cor, method = "square")


#可繪製lower、lower、full三種布局方式的熱圖,當然也可以混合顯示;
corrplot.mixed(cor, lower = "square", upper = "circle", tl.col = "black")


#常見的排序方式有 "AOE", "FPC", "hclust", "alphabet";
#"AOE" 是指按特徵向量的角度排序(angular order of the eigenvectors);
#"FPC" 是按照 first principal component 的順序排序;
#"hclust"是按照分層聚類的結果排序;
#"alphabet"按照名稱字母順序排序。
corrplot(cor, order = "hclust")


#如果是選"hclust",還可以根據聚類結果添加矩形框;
corrplot(cor, order = "hclust", addrect = 2)


#自定義漸變顏色;

col2 <- colorRampPalette(c("#77C034","white" ,"#C388FE"),alpha = TRUE)

#使用這些漸變顏色;
#addgrid.col調整網格顏色;
#outoutline指定圖形描邊;
corrplot(cor, order = "hclust", addgrid.col = "grey70",type = "upper",
outline = "orange",col = col2(100),method = "square",diag = F)


#Tips:這裡的col2的對象類型是函數!
col2(100)
class(col2)

#自定義文本標籤顏色:
#tl.* 系列參數用於調整文本標籤;
#tl.col (text label color) 調整文字標籤顏色;
#tl.srt (text label string rotation) 調標籤角度(橫軸方向);
#tl.cex調字體大小;
#使用r自帶顏色集cm.colors的效果如下;
corrplot(cor, order = "hclust",col = cm.colors(100),method = "square",
tl.col="black",tl.cex = 0.8)


# cl.* 系列參數用於調整圖例;
#cl.ratio 調整顏色條的寬度;
#cl.align調整顏色條刻度標籤的對齊方式;
#cl.length指定顏色條標籤個數;
corrplot(cor, order = "hclust",col = col2(100),method = "circle",
cl.length=5,addgrid.col = NA,outline = "grey60",
tl.col="black",tl.cex = 0.8,cl.pos = "r",cl.ratio = 0.2)


#繪製上三角熱圖;
corrplot(cor, order = "hclust",col = col2(100),method = "square",
cl.length=5, type = "upper",diag = F,
tl.col="black",tl.cex = 0.8,cl.pos = "r",cl.ratio = 0.2)


#去掉圖例和標籤;
corrplot(cor, order = "hclust",col = col2(100),method = "square",
tl.col="black",tl.cex = 0.8,cl.pos = "n",tl.pos = "n")

#添加顯著性標記:
#使用cor.mtest做顯著性檢驗;
res1 <- cor.mtest(mtcars, conf.level = .95)
res2 <- cor.mtest(mtcars, conf.level = .99)

#提取p值矩陣;
p.mat = res1$p
p.mat[1:5,1:5]

#指定顯著性水平,不顯著的為空白;
corrplot(cor, order = "hclust",col = col2(100),method = "color",
tl.col="black",tl.cex = 0.8,cl.pos = "r",cl.ratio = 0.2,
p.mat = res1$p, sig.level = .05,insig = "blank",addgrid.col="white")


#顯示P值;
corrplot(cor, order = "hclust",col = col2(100),method = "color",
tl.col="black",tl.cex = 0.8,cl.pos = "r",cl.ratio = 0.2,
p.mat = res1$p, sig.level = -1,pch.cex=1,
insig = "p-value", pch.col = "white")

#顯示相關係數;
#par(lty=2)可指定線的粗細,遺憾的是會作用到圖例的線條;

corrplot(cor, order = "hclust",col = col2(100),method = "color",
cl.length=5,addgrid.col="white",cl.pos = "r",
addCoef.col="black",number.cex=0.6,number.digits=1,number.font=1,
tl.col="black",tl.cex = 0.8,cl.ratio = 0.2)


#缺失值的展示,默認是用「?」,也可以自定義;
#corrplot(cor, na.label = "NA")


#insig為"p-value",不顯著的格子顯示p值;
#insig為"label_sig",可用於顯示不同顯著水平的星標;
#insig為"pch" (default),不顯著的格子顯示pch值對應圖形;

corrplot(cor, order = "hclust",col = col2(100),method = "color",
tl.col="black",tl.cex = 0.8,cl.pos = "r",cl.ratio = 0.2,
p.mat = res1$p, sig.level = c(.001, .01, .05),outline="white",
insig = "label_sig",pch.cex = 1.2, pch.col = "white")


上文的corrplot包是基於R基礎繪圖函數創建的,那麼又沒有基於ggplot2的呢?有,比如相對應的ggcorrplot包,不過我這裡推薦另一個R包:ggcor 。

#安裝方法:
# install.packages("devtools")
devtools::install_github("houyunhuang/ggcor")
#載入R包;
library(ggcor)
library(ggplot2)

#直接快速繪製整個相關性熱圖;
quickcor(mtcars, cluster = TRUE,cor.test = TRUE) +
geom_colour() +
geom_mark(size=3,color="white",fontface=1)+
scale_fill_gradientn(colours = c("#77C034","white" ,"#C388FE"))+
geom_panel_grid(colour = "white",size = 1)


#直接繪製上三角熱圖;
quickcor(mtcars, cluster = TRUE,type = "upper",cor.test = TRUE) +
geom_colour(data = get_data(type = "upper")) +
geom_mark(data = get_data( type = "upper"),size=3,color="white",fontface=1)+
scale_fill_gradientn(colours = c("#77C034","white" ,"#C388FE"))+
geom_panel_grid(colour = "white",size = 0.6)

#直接繪製上三角「方塊」熱圖;
quickcor(mtcars, cluster = TRUE,type = "upper",cor.test = TRUE) +
geom_square(data = get_data(type = "upper")) +
scale_fill_gradientn(colours = c("#77C034","white" ,"#C388FE"))+
geom_panel_grid(size = 0.6)


#直接繪製上三角「氣泡」熱圖;
quickcor(mtcars, cluster = TRUE,type = "upper",cor.test = TRUE) +
geom_circle2(data = get_data(type = "upper"),colour="white") +
scale_fill_gradientn(colours = c("#77C034","white" ,"#C388FE"))+
geom_panel_grid(colour = "white",size = 0.6)


每個樣本值與全體樣本值的平均數之差的平方值的平均數,用于衡量一個變量的數據和期望值離散程度,公式如下,其中,σ2 即D(X)、Var(V),為總體方差,X為變量,μ為總體均值,N為總體個數。

用于衡量兩個變量的總體誤差。而方差可看作是協方差的一種特例,即當兩個變量是相同的時候。公式如下:

可以看出,若X,Y正相關(變換趨勢相同),則協方差值為正;變化趨勢相反則協方差值為負。相關係數是研究變量之間線性相關程度的指標,而相關關係是一種非確定性的關係,數據具有相關性不能推出有因果關係。相關係數的計算公式如下:其中,公式的分子為X,Y兩個變量的協方差,Var(X)和Var(Y)分別是這兩個變量的方差。當X,Y的相關程度最高時,即X,Y趨近相同時,很容易發現分子和分母相同,即r=1。

實用科研工具推薦      
詳實生信軟體教程分享
前沿創新組學文章解讀
獨家生信視頻教程發布

相關焦點

  • 評測丨Roger Vivier出新款?除了方頭LOGO還能玩出啥花樣!
    評測丨Roger Vivier出新款?除了方頭LOGO還能玩出啥花樣!2016-12-23 21:03來源:pclady你對Roger Vivier的認知在哪個程度?N雙明星同款還是方頭金屬扣。今天PClady帶大家一探RV 2017春夏新品預覽現場,看看除了經典方頭她家還能玩出啥花樣!
  • 背景牆還能這樣玩出新花樣 背景牆設計效果圖
    背景牆還能這樣玩出新花樣 背景牆設計效果圖 來源:吉屋網絡綜合整理   發布時間:2016-11-23
  • 經典《鹿鼎記》還能玩出什麼花樣?
    啊這……果不然昨天熱搜榜上關於這部劇的話題持續不斷。《鹿鼎記》是金庸先生創作的一部「特別」的武俠小說,說它特別是因為同金庸先生其他的武俠小說相比,主人公韋小寶不同於傳統俠客的小人物形象,且故事集中在「廟堂」,而非「江湖」。
  • 什麼是期貨品種相關性
    什麼是期貨品種相關性 期貨品種相關性:相關係數是用以反映變量之間相關關係密切程度的統計指標。相關係數是按積差方法計算,同樣以兩變量與各自平均值的離差為基礎,通過兩個離差相乘來反映兩變量之間相關程度;著重研究線性的單相關係數。
  • 一條星月,被玩出這麼多花樣,忒饞人!
    這可不是老盤在吹彩虹屁,畢竟光是最常見的星月菩提,文玩人就能玩出幾百種花樣。所以,為了讓大伙兒充分理解文玩人在這方面的「天賦」,老盤就具體盤點一下那些文玩人手中那些獨特的星月菩提。從玩友的圖裡能看出這串星月只留下了星,但月已經被打磨掉。通常情況下,越小的尺寸越容易車掉月的位置,所以喜歡星月本身的玩友也要留意尺寸的問題,避免找不到「月」了。
  • 多種用法帶你玩出花樣
    把水果切成小塊投入機器,高速旋轉的刀片就把水果打碎,出汁。傳統榨汁機不僅清洗困難,打出的果汁口感也並沒有優勢,往往使用三五次就被擱置起來,放在儲藏室裡落灰。    果汁機怎麼用——製作奶昔    天氣一天比一天熱了起來,清涼可口的奶昔大家一定很喜歡。把牛奶放入冰箱冷凍,在牛奶凍出冰塊但沒有完全凝固的時候取出,放入果汁機同時加入水果,攪拌均勻。一杯水果奶昔就製作完成啦。    製作奶昔推薦使用西瓜、芒果等柔軟多汁的水果。
  • 吃藥還能導致腹瀉?是的,「抗生素相關性腹瀉」要重視
    今天我們就來了解一下藥源性腹瀉中的抗生素相關性腹瀉(1)抗生素相關性腹瀉抗生素相關性腹瀉(AAD)是藥物相關性腹瀉的一種,指使用抗生素後發生,無其他原因的腹瀉。它的發生率可達5%-25%,還是非常常見的。(2)什麼抗生素會引起腹瀉?
  • 全家便利店2018年都玩出了什麼新花樣
    接下來小智便會分享全家便利店在2018年內都出了什麼新花樣。跨界創新全家可謂是便利店行業「最會玩」的一家運營商,繼2017年底宣布開設洗衣店之後,又一腳跨進健身行業,在2018年2月推出健身房品牌Fit&Go。
  • 使用Seaborn和Pandas進行相關性檢查
    幸運的是,Python有一些庫,這些庫為我們提供了快速有效地查看相關性所需的工具。讓我們簡單看看什麼是相關性,以及如何使用熱圖在數據集中找到強相關性。什麼是相關性相關性是確定數據集中的兩個變量是否以任何方式相關的一種方法。
  • 來看看這群人把「任天堂的紙板玩具」玩出什麼花樣了
    我覺得你可以找亞馬遜去要點代言費什麼的,或者找紙箱人阿楞談談。連愛你的D.va都已經準備好對應的機甲了,玩遊戲就是要贏,還要贏在起跑線上。咱雖然沒有機器人,但是不是可以出一套盔甲什麼的增強遊戲體驗? 不行,這破紙板實在不夠猛。還是來一套武裝程度更高的NS版《仁王》好了。
  • 一隻毛毛蟲,看別人家的媽媽怎麼玩出了新花樣
    另外,孩子模仿過程中還能增加他們精細動作的發展哦。問問孩子,這些分別是毛毛蟲啃了什麼食物呢?如何把一套繪本玩起來,還能讓孩子學東西呢?腦洞大開的N種玩法除了和孩子讀繪本,看看別人家的媽媽,怎麼把一隻毛毛蟲玩出了新花樣
  • 已經20、30、40了,你還想活出什麼花樣?
    你是否曾無數次聽見語重心長的一句忠告「什麼年齡做什麼事」。在普通人的世界裡,年齡焦慮無處不在。 「你都20歲了,怎麼還在玩小孩子玩的東西?」 「你都30歲了,還沒結婚,別人孩子都有了。」 「你都40歲了,怎麼還一事無成。」
  • 河南旅遊景點郭亮村,五一期間又玩出了新花樣:飯店也要門票!
    河南旅遊景點郭亮村,五一期間又玩出了新花樣:飯店也要門票! 今年五一期間各旅遊景點人數暴增,四面八方的遊客給景區帶來了豐厚的回報,順便也帶動了景區內外的其他產業。於是飯店爆滿,旅館爆滿,在景區周邊做生意的商販們也在這個小長假中大賺了一筆。
  • 使用Seaborn和Pandas進行相關性分析和可視化
    讓我們簡要地看看什麼是相關性,以及如何使用熱圖在數據集中找到強相關性。什麼是相關性?相關性是一種確定數據集中的兩個變量是否以任何方式關聯的方法。 關聯具有許多實際應用。 我們可以查看使用某些搜索詞是否與youtube上的觀看次數相關。 或者查看廣告是否與銷售相關。 建立機器學習模型時,相關性是確定特徵的重要因素。
  • 用R 的pheatmap畫熱圖
    R裡面也有很多畫熱圖的函數,最常用的是heatmap,heatmap.2和pheatmap。個人認為pheatmap是非常不錯的一個畫熱圖的函數,操作起來比前兩個方便好用的多。在別的公眾號裡面也看到一些關於用這個函數畫熱圖的文章,但是有一些小問題小編覺得需要了解,下面聽小編一一講解。
  • 老外把火柴做成多米諾骨牌,玩出新花樣!
    導讀:老外把火柴做成多米諾骨牌,玩出新花樣!愛玩的小夥伴們對多米諾骨牌都不陌生,大神們可以用多種顏色的骨牌擺出想要的各種形狀和圖案。觸發啟動牌之後,原先豎著的骨牌紛紛倒下,顯現出我們想要的圖案。玩過多米諾骨牌的小夥伴們都知道,怎樣擺牌,牌與牌之間的位置間隔都是非常重要的,只要有一處沒有銜接好,整段都有可能會垮掉。最近國外有個小夥把多米諾骨牌外玩出了新花樣,他把我們常見的塑料牌換成了火柴,到底是怎麼玩的呢?我們來看看吧!
  • 相關性分析
    3月份 PMI指數,表現出了明顯的上升,達到55.3%,4月份的PMI指數進一步上升到58.1%,反映出經濟增長有逐步加快的跡象。從一季度國家宏觀經濟指標來看,GDP增幅達到10.2%,印證了經濟增長加快的跡象。這反映出,PMI指數對宏觀經濟運行具有一定的預警意義。
  • 電視牆能玩出什麼新花樣?這些裝修技巧學會了,怎麼裝都好看
    電視牆能玩出什麼新花樣?為了增加時尚和輕奢感,會給電視牆弄一個燈光來做裝飾,這種裝修會是特別的浪漫大氣,但在燈光的搭配上還得注意,不然沒有讓燈光裝飾出時尚而又輕奢的效果,反而會讓人感覺到刺眼,這會把家的整個效果都給影響到!
  • QPCR與RNA測序結果相關性圖的繪製
    今天小編就給大家講一下QPCR與RNA-seq結果相關性圖的繪製。數據準備首先需要把QPCR的相對表達量以及RNA-seq測序的差異結果提取並整理成如下格式。需要注意的是,為了方便作圖,QPCR的相對表達量及RNA-seq的差異結果都需要進行對數處理(其中,RNA-seq的測序分析結果中一般是直接有log2FC的數據,可以直接使用)。
  • 面對買不動的日本:無印良品開始玩出什麼新花樣?
    這不,無印良品面對買不動的人群,開始玩出了不同於以往「大降價」的花樣,而是通過其他的領域的擴展,爭取消費者的購物動力。對此,無印良品可能出現,你不知道的另一種「畫風」。例如:設計房子,如下圖。