R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码2

简介: R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码

R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码1:https://developer.aliyun.com/article/1501241

可视化

许多组学可视化使用R基础绘图函数。我们大部分时间都避免使用基础绘图。但是,利用手头的数据,使用这些绘图函数得到一些结果是相当简单的。

现在,让我们制作视图以快速检查RNA-seq数据。

比较文库大小可以检查是否存在异常。例如,我们不希望某个库的读数显著少于其他库。这里没有问题。每个样本的库大小都差不多。

barplot(y$saolnames(y),las=2)

33d243cc9619b81d53e17e7e56df3168.png

下面是每个基因的原始计数图,以说明它们不是正态分布,这是过度分散的离散计数数据的典型特征。



RNA-seq数据通常具有偏态分布,即计数数据在许多基因中可能很低(接近于零),而在少数基因中可能很高。这种分布模式不适合正态分布假设的许多统计方法。因此,在分析RNA-seq数据时,我们通常会使用专门为计数数据设计的统计模型,如负二项分布模型,这些模型能够处理这种过度分散的特性。




Qing Li

拓端分析师


71a91c67893d6d4981c15169c06d2e8a.png


以下是数据作为CPM(每百万计数)的即时归一化图,它也不是正态分布。这说明了CPM只是计数数据的一个简单线性变换。


在RNA-seq分析中,对原始计数数据进行归一化是一个重要的步骤,因为它可以帮助消除由于测序深度、文库大小或批次效应等因素导致的差异。CPM(每百万计数)是一种简单的归一化方法,它将每个样本的原始计数除以该样本中所有基因计数的总和,并乘以一百万,以得到每个基因在每个样本中的相对表达量。

49ab86bf929783ab852ce50111f13dff.png

现在让我们绘制CPM数据的对数变换图。这种变换使得每个样本内的计数值大致呈现高斯分布,尽管显然存在离群值。

由于这种高斯特性,对数变换后的CPM数据将在下面的许多统计建模中使用。因此,我们将继续并为其创建一个对象。

首先,我们将创建一个对数变换后的对象。

现在,让我们查看logcount数据,通过绘制箱线图来进行。

# 使用箱线图检查样本的分布  
  boxplot(logcounts, xlab="",

288f6c5427a1fc35042e41f58e08457d.png

多维缩放分类

现在,我们可以进行一些统计建模了。

多维缩放是主成分分析的一个类似物。它提供了一种简单的方法,可以查看样本组是否沿着其第一和第二维度分开。这是基于主要差异倍数度量的。

这检查了在样本之间表现出最大倍数差异的基因子集。

下面的图显示了12个样本的分离和聚类,但除非你还记得每个样本代表什么,否则很难看出这向我们展示了什么。


89c68ad839bfdfcf03a70ed84c8e5925.png


下面我们将使用颜色来制作一些更好的图,重点关注预测变量的分类。

回想一下,有12个样本,每个样本都是基细胞和腔细胞中的基因表达重复,分别对应于以下三种条件:细胞来源于处女、怀孕或哺乳的小鼠。

head(sampleinfo, n=8)

f9015461b1579604a2c381befeab5eb9.png

首先,我们将根据涉及基细胞和腔细胞的特征进行着色。

复制代码
  # 为 CellType 设置颜色方案  
  # 有多少种细胞类型,以及它们是以什么顺序存储的?
  levels(as.fafo$CellType))


49445a34a9b044b12cf86f4e9e065a7b.png

下面的脚本中的第二行只是检查第一行是否正确创建了col.cell向量。

e64c80c424f75b3e56e685ddaf99dd4f.png

现在我们将为细胞类型在MDS图上添加颜色方案。

多维缩放检测最大的变异来源。在这种情况下,它检测与在细胞类型之间表现出最大倍数差异的基因相关的变异。

因此,下面的图清晰地表明,负责基细胞/腔细胞特征的基因代表了样本之间分离的第一维度。

换句话说,我们可以说基细胞和腔细胞基因表达之间的差异占据了数据集中大部分变异。RNA-seq数据中有信号可以将这两种细胞类型区分开。

76d5aaaa85b055d2bcf37c105d16c5de.png

MDS图显示了由细胞类型导致的变异解释了数据的第一个维度。

首先,Status是什么?

29d6cc4c5aa046da2ec72a0ec6d6cec3.png

当然,从这三种内分泌状态中的每一种,研究人员都分别收集了基细胞和腔细胞的两个样本。

下面的图现在根据样本是来自处女、怀孕还是哺乳的小鼠进行着色。

它们在第二维度上有所分离。请注意,同一条件的重复样本非常相似(MCL1.DL和MCL1.DK几乎重叠在一起)。

8b2a94613fdee9b12ff3aad1b0e89bc4.png

因此,基因表达的最大变异维度是基于细胞类型进行分离的,而第二大的变异维度则是基于内分泌状态进行分离的。

尽管这些维度是潜在的,但我们可以解释哪些变量最负责观察到的变异,从而解释前两个主成分。这里的变量选择得很好:细胞类型和内分泌状态。这确实是一个很好的结果。

层次聚类

层次聚类是一种在聚类时可视化特定基因与其他聚类之间关系的方法。

在说明这种技术之前,需要进行一些处理。

我们感兴趣的是查看驱动上述维度模式的基因。哪些基因在两种细胞类型之间存在差异?哪些基因在三种状态条件之间存在差异?细胞类型和状态之间是否存在交互作用?

回答这类问题的最有用方法是将焦点放在表达方差最高的基因上。这些基因在整个12个样本中的表达变化最大。

与其对所有15000+个基因进行聚类(这只会给分析增加噪音),我们不如对变化最大的500个基因进行聚类。这是一个任意的截止值,可以根据需要进行调整。

下面的脚本创建了一个与每个GeneID相关联的方差向量。就像ANOVA一样,当行方差较高时,我们有迹象表明分组因子之间的差异将最大。

这个函数只是简单地计算logcounts数据框中每一行的方差。这只是一个数值向量。

var_gnes <- apply(logouts, 1, var)
head(var_gees)

b94bbdc09dacb5d19fc5642ecf6c07c8.png

现在,我们创建一个字符向量,其中包含方差从最大到最小的那些GeneID的名称。在这个例子中,我们将选择前50个。

在查看热图后,改变这个数字以选择更高或更低的值可能是有指导意义的。

与其他的相比,处女基细胞中的Wap表达量要低得多。只要记住这些是log counts(对数计数),这个结果就通过了显而易见的检验。

51d2f6e0da2364888e279ae1d2e5a90c.png

要从logcounts中选择这500个变化最大的基因对应的行,你可以使用前面创建的select_var字符向量来索引数据框。这里我们实际上只需要前50个,但如果你想选择前500个,只需将select_var的长度调整为500即可。

711af6f0e38d16625eb0e89cc46a3cd9.png

现在,创建层次聚类。

接下来,我们只需将这组500个变化最大的基因选入heatmap.2函数中。

这里表示的值是logCPM值。

a8f10ad8cb3a97de05cdfd4b14e6d8e9.png

表达量从低(深色)到高(浅色)不等。

观察水平聚类可以很好地揭示实验设计。存在两个主要组(对应于腔细胞和基底细胞类型)。在每个主要组内,还分别存在3个小组,对应于内分泌状态。

内分泌状态的重复行排列得非常好。这说明数据非常紧密。

垂直聚类很有意思。大约90%的高度可变的基因决定了细胞类型的分化,而剩下的基因则区分了内分泌状态(处女、怀孕、哺乳)。此外,细胞类型和状态之间也存在明显的相互作用。


相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
19天前
|
机器学习/深度学习 数据采集 人工智能
R语言是一种强大的编程语言,广泛应用于统计分析、数据可视化、机器学习等领域
R语言是一种广泛应用于统计分析、数据可视化及机器学习的强大编程语言。本文为初学者提供了一份使用R语言进行机器学习的入门指南,涵盖R语言简介、安装配置、基本操作、常用机器学习库介绍及实例演示,帮助读者快速掌握R语言在机器学习领域的应用。
46 3
|
2月前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
数据采集 机器学习/深度学习 数据挖掘
R语言数据清洗:高效处理缺失值与重复数据的策略
【8月更文挑战第29天】处理缺失值和重复数据是数据清洗中的基础而重要的步骤。在R语言中,我们拥有多种工具和方法来有效地应对这些问题。通过识别、删除或插补缺失值,以及删除重复数据,我们可以提高数据集的质量和可靠性,为后续的数据分析和建模工作打下坚实的基础。 需要注意的是,处理缺失值和重复数据时,我们应根据实际情况和数据特性选择合适的方法,并在处理过程中保持谨慎,以避免引入新的偏差或错误。
|
3月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
19天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为