照葫芦画图之相关聚类

2022-02-11  本文已影响0人  生信宝库

说在前面

在平时读文献时我们经常会遇到相关/聚类分析,那么Immugent今天就来结合这两种分析进行科普一波。

相关性分析在日常分析中使用挺多的,特别是在我们没有确凿的证据证明某两个变量之间存在关系时,此时在大样本下使用相关性分析,往往可以为我们提供很多重要的线索。

同样的,聚类我们可以简单通过一个成语“物以类聚人以群分”来理解。Immugent在这里之所以将相关性和聚类放到一起讲,就是因为只有一些很相似的样本才会聚到一起,这样我们就能很方便的理解基于聚类分析得到的不同的亚型。

那么下面Immugent就来具体展示一下如何做这两种分析。


相关性分析

首先,我们先简单做一个相关性分析的热图。。。

rm(list=ls())
library("magrittr") 
library(GGally)
library(ggplot2)
library("ggcorrplot")

# Compute a correlation matrix
my_data <- mtcars[, c(1,3,4,5,6,7)]
corr <- round(cor(my_data), 1)

# Visualize
ggcorrplot(corr, p.mat = cor_pmat(my_data),
           hc.order = TRUE, type = "lower",
           color = c("#FC4E07", "white", "#00AFBB"),
           outline.col = "white", lab = TRUE)
图片

随后我们可以通过以下图形展示更多的细节。

head(iris, 3)
dim(iris)
table(iris$Species)

ggpairs(iris[,-5])+ theme_bw()

p <- ggpairs(iris, aes(color = Species))+ theme_bw()
# Change color manually.
# Loop through each plot changing relevant scales
for(i in 1:p$nrow) {
  for(j in 1:p$ncol){
    p[i,j] <- p[i,j] + 
      scale_fill_manual(values=c("#00AFBB", "#E7B800", "#FC4E07")) +
      scale_color_manual(values=c("#00AFBB", "#E7B800", "#FC4E07"))  
  }
}
p
图片

可能有些人会觉得这种图有点花里胡哨,并不实用,而需要添加一些统计信息,下面就来调整一下喽。

library("PerformanceAnalytics")
my_data <- mtcars[, c(1,3,4,5,6,7)]
head(my_data)
dim(my_data)

chart.Correlation(my_data, histogram=TRUE, pch=19)
图片

我们在计算出各样本之间的相关性后,就会得知有哪一些样本比较相似,那么这些样本就会倾向于聚集到一起;下面我们就在做完相关分析后的基础上做一下聚类分析。


聚类分析

聚类分析就更加普遍了,多到我们平时做一个热图都可以设置成聚类(不聚类),聚到一起的样本特征就比较相似,这样我们可以通过此来减少比较的次数,从而更能抓出各组样本之间的主要差别。

那么下面就先来做一个热图吧

rm(list=ls())
library(factoextra)
library(pheatmap)
library(dplyr)

dim(USArrests)

USArrests %>%
  scale() %>%                  # Scale variables
  t() %>%                      # Transpose 
  pheatmap(cutree_cols = 4)    # Create the heatmap
图片

从上面热图的表达值我们也能分辨出聚类的一起的样本具有相似的表达特征,而如果想更形象的展示这种关系,那么就需要下面的聚类树了。

USArrests %>%
  scale() %>%                           # Scale the data
  dist() %>%                            # Compute distance matrix
  hclust(method = "ward.D2") %>%        # Hierarchical clustering
  fviz_dend(cex = 0.5, k = 4, palette = "jco") # Visualize and cut into 4 groups

图片

我们可以根据需要来调整聚类群的个数,这需要结合实际生物学问题。


小结

有一说一,虽然相关性分析看似很有道理,其实在实际应用中也是有很多bug的,比如有一些相关性很强的基因之间并没有实际联系。这就提醒我们需要主要相关性分析的适用性:首先必须保证样本量足够大;其次就是注意数据的统计学分布。其中样本量是前提,统计学分布是指标,不同统计学分布的数据偏向于使用不同的相关性分析,常用的有pearson, spearman等。

好啦,本次推文到这里就结束啦,欢迎大家再看过此推文后,将自己不同的见解通过后台发送给我们!

上一篇 下一篇

猜你喜欢

热点阅读