精华内容
下载资源
问答
  • 基因表达聚类分析
    2021-04-18 06:43:32

    对于基因表达谱数据的分析是生物信息学的研究热点和难点。转化为数学问题,分析任务是从数据矩阵 M 中找出显著性结构,结构类型包括全局模型 (model) 和局部模式 (pattern) 。对基因表达谱数据的分析是数据挖掘问题,所采用的方法包括通过可视化进行探索性数据分析( Exploratory Data Analysis )、描述建模 (descriptive modeling) 、分类、聚类、回归和机器学习等。

    基因表达谱分析所采用的常用方法是聚类,其目的就是将基因分组。从数学的角度,聚类得到的基因分组,一般是组内各成员在数学特征上彼此相似,但与其它组中的成员不同。从生物学的角度,聚类分析方法所隐含的生物学意义或基本假设是,组内基因的表达谱相似,它们可能有相似的功能。然而,产物有相同功能的编码基因(例如对其它蛋白质有磷酸化作用),不一定共享相似的转录模式。

    相反,有不同功能的基因可能因为巧合或随机扰动而有相似的表达谱。尽管有许多意外的情况存在,大量功能相关的基因的确在相关的一组条件下有非常相似的表达谱,特别是被共同的转录因子共调控的基因,或者产物构成同一个蛋白复合体,或者参与相同的调控路径。因此,在具体的应用中,可以根据对相似表达谱的基因进行聚类,从而指派未知基因的功能。

    聚类分析是模式识别和数据挖掘中普遍使用的一种方法,是基于数据的知识发现的有效方法,特别适用于模式分类数不知道的情况。聚类分析是一种 无监督学习方法,不需要任何先验领域知识,它 根据数学特征提取分类标准,对数据进行分类,这种数学特征的例子有统计平均值、相关系数、协方差矩阵的本征值及本征向量等。聚类分析在基因表达数据分析中应用得很多,主要有层次聚类、 K 均值、自组织特征映射网络等。本节将介绍基因表达数据分析中常用的聚类方法及与此相关的内容。

    8.4.1 相似性度量函数

    对基因表达谱进行聚类分析之前,必须首先确定反映不同基因表达谱相似程度的度量函数,根据该函数可以将相似程度高的基因分为一类。在实际计算中,还可以用距离代替相似的概念,相似性度量被转化为两个基因表达谱之间的距离。距离越小,表达模式越相近;反之,则表达模式差异大。

    常见的相似性度量有距离、点积、相关系数( correlation coefficient )、互信息( mutual information )等。 假设两个基因表达谱分别为 X = ( x 1 ,x 2 ,…,x m )和 Y = ( y 1 ,y 2 ,…,y m ) , 距离函数 d( X , Y ) 必须满足如下条件:

    d( X , Y ) � 0

    d( X , Y ) = d( Y , X )

    d( X , Y ) = 0 if X = Y

    d( X , Y ) � d( X , Z ) + d( Z , Y )

    欧氏距离( Euclidean distance )是一个通常采用的距离定义,它是在 m 维空间中两个点之间的真实距离, 两个基因表达谱之间的欧氏距离:

    相关系数也是常用的相似性度量函数:

    其中, G offset 是 G 的各分量的均值, 是标准方差。用上述两种相似性度量,可以找出表达谱相似或者变化趋势相同的基因。欧氏距离、相关系数可以反映基因之间的共表达关系,两个基因表达谱间的距离小于给定的阈值或相关系数大于某个给定的阈值,就可以认为它们之间是共表达的。距离和相关系数之间存在关联,在具体应用时,可以根据需要进行转换。

    距离和相关系数反映的都是基因表达谱之间的相似性,这种相似性反映了基因的共表达行为,而基因的行为是复杂的,它们之间存在调控和被调控的关系,或者存在调控链,例如基因 A 调控 B , B 调控 C ,调控还有正性调控和负性调控之分。对于这些调控关系,它们的表达谱往往是不相似的,或者存在时延、或者存在反相,而基因表达的幅度也可能不相等。如何从数据中发现这些复杂的基因关系呢? 互信息可能是一种有用的度量指标,其定义如下 :

    MI ( X , Y ) =H ( X ) +H ( Y ) -H ( X , Y )

    MI (X,Y) 是向量 X 和 Y 的互信息, H ( X ), H(Y) 分别是 X 和 Y 的熵, H(X,Y) 是向量 X,Y 的联合熵。 归一化互信息 NMI 定义如下:

    NMI ( X , Y ) = MI ( X , Y ) /max[H ( X ), H ( Y ) ]

    NMI 独立于单个信息熵,抓住了模式上的相似性。互信息聚类分析没有规则上的约束,不象欧氏距离。

    目前,还没有理论来指导如何选择最好的相似性度量,也许一个“正确”的距离在表达模式空间是不存在的,选择何种度量函数依赖于我们要解决的问题。

    8.4.2 聚类方法

    对于基因表达谱的聚类问题,由于目前对基因表达的系统行为了解得不全面,没有聚类的先验知识,所以通常采用无监督学习方法。 在基因表达数据分析方面,层次式聚类、 K 均值、自组织映射神经网络在应用中是常用的方法。 下面主要介绍这几种常用的聚类方法,并简单介绍一些其它方法。

    8.4.2.1 简单聚类

    假设有 G 个基因,它们的表达谱分别用向量表示为 。令任意一个基因的表达向量为第一个聚类的中心 , 假设选择 。然后计算 到 的距离 D 21 ,如果 D 21 大于给定的阈值 T ,则说明 不属于第一类,应该分到另外的类。在这种情况下,建立一个新的聚类中心 ;如果 D 21 小于阈值 T ,则将 分到第一类中。接着处理其它基因,在处理第 i 个基因时,首先计算该基因的表达谱与现有各类中心的距离,假设与第 j 类的距离 D ij 最小,并且 D ij < T ,则将基因 i 分配到第 j 类;否则生成一个新类,该类的中心为第 i 个基因的表达向量。

    简单聚类算法的结果与第一个聚类中心的选择、基因的顺序、阈值 T 以及基因表达谱在其空间的分布有关。该方法对于给定的一组基因表达数据模式进行初步分类提供了一种快速的算法。

    8.4.2.2 层次聚类法

    层次聚类法,在统计分析中也称为系统聚类法,原理和算法与第 6 章所介绍的系统发生树连锁构造方法类似,所不同的只是将所分析的数据由生物分子序列换成了这里的基因表达谱。该方法在基因表达谱聚类分析中是常用方法,它的优点是容易理解和实现,所得到的结果以树状图的形式表示,可以直观地观察基因之间的相互关系,尤其是类与类之间的关系。

    但是,基因表达谱的数量很多,往往要多于系统发生树分析时的物种数量,而且基因之间相互关系的信息也没有物种之间的多,所以,对聚类结果的后续分析要比系统发生树分析复杂得多。对于表达谱聚类的结果还需要进一步分析基因的功能或者基因的序列特征,一般通过剪枝得到分类结果,而剪枝的过程往往带有更多的主观性,这会导致丢失一些重要的信息或包括一些无关的信息。此外,在构建基因表达谱聚类树时,已被合并的向量不再参与以后的分类,这会导致聚类结果与向量的次序有关,所以被认为是一种局部最优解的方法。

    8.4.2.3 K 均值聚类

    K 均值聚类在数据划分上不考虑类的分层结构问题,该算法使待聚类的所有向量到聚类中心的距离的平方和最小,这是在误差平方和准则的基础上得到的。 K 均值聚类算法如下:

    (1) 任意选取 K 个基因表达谱向量作为初始聚类中心 Z 1 , Z 2 ,…, Z k ,在没有先验知识的情况下,一般选择前 K 个基因。

    (2) 对所有的基因表达谱向量进行反复迭代计算。在第 l 次迭代过程中,如果 则将 X 所代表的基因归于第 j 类。

    (3)经过一次迭代计算后,聚类中心可能发生变化,因此需要重新计算 K 个新聚类中心:

    其中 f j (l) 为第 l 次迭代中第 j 个聚类的基因集合, N j 为该集合中基因的个数。

    (4)对于所有的聚类中心,如果 Z j (l+1)= Z j (l)(j=1,2,…,K) ,则迭代结束,得到最后的聚类结果;否则转第 2 步,继续进行迭代计算。

    聚类中心的个数 K 、初始聚类中心的选择、基因排列的顺序 以及基因表达谱数据的分布影响聚类的结果,当基因表达谱类别之间分离较远时,该算法可以取得令人满意的聚类分析结果。

    8.4.2.4 自组织映射神经网络

    人工神经网络技术在模式识别方面有着独特的优势,神经网络能够进行非线性数据处理,发现复杂的数据关系,其中,自组织映射神经网络( Self-Organizing Map , SOM )可以对模式数据进行自动聚类。

    自组织特征映射是 Kohonen 在 1990 年提出的类似大脑思维的一种人工神经网络方法,它是一种竞争学习算法,可以被认为是一种从 N 维模式空间各点到输出空间少数点的映射。这一映射由系统本身完成,没有外部的监督,即聚类是以自组织的方式实现的。 SOM 采用无教师学习训练,训练完成后,分类信息存储在网络各节点连接权值向量中,与权值向量相似的输入向量将分为一类。 SOM 包括一维和二维模型,二维 SOM 也称为 KFM(Kohonen Feature Mapping) 。它们的区别在于 KFM 考虑邻近神经元的相互作用,即获胜神经元对周围神经元由于距离的不同会产生不同的影响。

    KFM 的结构如 ,输入网络的是一个 n 维向量的所有 n 个数值,输出单元呈二维排列,个数为 p × p, 输入层与输出层的各单元之间是全连接的,并用 W 表示连接权重。 KFM 的学习过程就是对所有的 G 个样本向量进行迭代学习,直到权值 W 的变化小于某一个确定的阈值或迭代达到一定的次数。测试过程比较简单,对于每一个样本向量,计算其获胜神经元,输出单元相同的样本向量属于同一类。虽然 KFM 有学习过程,但是可以看到这种学习是从所有的样本中自动获取特征,没有教师的参与,因此称为无监督的学习方法。

    Kohonen 认为,神经网络中邻近的各个神经元通过侧向交互作用彼此相互竞争,自适应地发展成检测不同信号的特殊检测器。该思想来自于大脑神经元的特性,即大脑皮层的神经元成二维空间排列,不同区域分工不同,各自对输入模式的不同特征敏感,神经元之间存在信息交互,主要是侧向交互,即某个经元对周围神经元之间存在由近到远的不同的影响作用,而不是简单的侧抑制作用。对邻近神经元的交互作用函数有巴拿马草帽型 或矩形型 。

    其中 d cj 是输出单元 c 与邻近单元 j 之间在神经元平面上的距离, R 是交互作用半径。

    更多相关内容
  • 基因表达数据的聚类分析方法

    千次阅读 2021-11-23 16:09:08
    介绍 基因表达(gene expression) 是指将来自基因的遗传信息合成功能性基因产物的过程。...在像人类这样的高等生物中,根据细胞类型(神经细胞或心脏细胞)、环境和疾病状况等各种因素,数以千计的基因以不同的

    介绍

    基因表达(gene expression) 是指将来自基因的遗传信息合成功能性基因产物的过程。

    基因表达产物通常是蛋白质,但是非蛋白质编码基因如转移RNA(tRNA)或小核RNA(snRNA)基因的表达产物是功能性RNA。

    所有已知的生命,无论是真核生物(包括多细胞生物)、原核生物(细菌和古细菌)或病毒,都利用基因表达来合成生命的大分子。

    基因编码并可用于合成蛋白质,这个过程称为基因表达。

    在像人类这样的高等生物中,根据细胞类型(神经细胞或心脏细胞)、环境和疾病状况等各种因素,数以千计的基因以不同的量一起表达。

    例如,不同类型的癌症在人类中引起不同的基因表达模式。可以使用微阵列( Microarray )技术研究不同条件下的这些不同基因的表达模式。

    微阵列和基因表达谱

    来自微阵列的数据可以想象为矩阵或网格,矩阵中的每个单元格对应于特定条件下的基因表达值。

    如下图所示,矩阵的每一行对应一个基因 gi ,每一列对应一个条件/样本 si

    在这里插入图片描述

    人类有大约 20,000 个表达基因,假设我们想知道它们的表达模式,即在不同类型的人类癌症下哪些基因产生更高或更低水平的蛋白质。

    另外,假设已知有 20 种人类癌症,那么微阵列基因表达矩阵的结果就有 20,000 行对应基因,20 列对应于 20 种癌症。

    基因表达聚类

    分析基因表达数据的第一步是在经典数据挖掘中对基因或样本进行聚类
    可以根据基因在所有条件下的表达模式对基因进行聚类,并且可以使用所有基因的基因表达模式对样本进行聚类。

    关于聚类问题

    对于基因聚类,数据点是基因,特征是所有样本的表达值。
    因此,在针对癌症示例的基因聚类中,将聚类 20,000 个数据点( data-points ),每个点具有 20 个维度。

    聚类基因表达数据提供了对基因共调控(co-regulation)和基因细胞功能的重要见解。
    聚集在一起的基因在所有样本中具有相似的表达模式,这可能表明这些基因的共同调控。
    此外,来自同一簇的基因可能执行类似的细胞功能,这有助于注释新发现的基因。

    相反,对于样本聚类,样本是使用跨所有基因的基因表达量作为特征进行聚类的数据点。由此将聚类 20 个数据点,每个点具有 20,000 个维度。

    下面,我们将讨论执行聚类的不同方法

    • Llyod’s
    • K-均值聚类 ( K-means clustering )
    • 层次聚类 ( Hierarchical Clustering )

    邻近计算

    邻近计算(Proximity calculation)
    用于聚类的数据点之间的距离或接近度很重要,因为所有聚类算法的工作原理都是将近点聚集在一个聚类中。

    使用 Pearson 相关系数中的特征计算数据点 OiOj 之间距离的有效措施之一:

    Pearson( O i O_i Oi, O j O_j Oj) = ∑ d = 1 p ( O i d − μ o i ) ( O j d − μ o j ) ∑ d = 1 p ( O i d − μ o i ) 2 ∑ d = 1 p ( O j d − μ o j 2 ) \frac {\sum_{d=1}^p(O_{id} - \mu_{oi} )(O_{jd} - \mu_{oj} )}{\sqrt {\sum_{d=1}^p(O_{id} - \mu_{oi})^2} \sqrt {\sum^p_{d=1}(O_{jd} - \mu_{oj}^2)} } d=1p(Oidμoi)2 d=1p(Ojdμoj2) d=1p(Oidμoi)(Ojdμoj)

    K均值聚类

    k均值聚类算法(k-means clustering algorithm)
    是一种迭代求解的聚类分析算法。属于无监督学习算法。

    步骤:
    预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。

    聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件

    以下是一个二维数据。通过查看散点图,数据似乎包含 3 个不同的聚类。
    因此,我们将任意发起 3 个聚类质心(cluster centroids)或聚类中心(cluster centers)。由于我们还没有任何聚类,这些质心(centroids)是空间中的任意点。

    在这里插入图片描述

    然后,我们计算所有点与 3 个质心的距离,并将这些点分配到它们最近的聚类。然后,我们使用聚类中分配的点重新计算质心。

    聚类中心只是聚类中所有点的平均值。

    在这里插入图片描述

    重新计算点与 3 个新分配的质心的距离,并将这些点重新分配到它们最近的聚类。
    在点被重新分配到它们最近的聚类后,重新计算聚类中心。

    在这里插入图片描述

    重复上述步骤直到中心点收敛(convergence),基本上不在发生变化或满足精度为止。

    在这里插入图片描述

    层次聚类

    层次聚类(Hierarchical Clustering)
    是一种渐进式聚类技术,它从小簇开始,逐渐将密切相关的小簇合并成更大的簇,直到只剩下一个大簇为止

    相对于 K-means 的最大优势之一是层次聚类不必预先定义聚类的数量。相反,可以在聚类过程完成后推断最佳聚类数。

    使用以下包含 25 个数据点的二维数据仔细研究层次聚类算法

    在这里插入图片描述

    1. 将每个点分配给它自己的单个簇,即有 25 个簇,每个簇包含 1 个点。

    2. 然后,计算每个聚类中心点。

    3. 计算所有的质心距离并将两个簇连接到一个质心最近的新簇中。重新计算新形成的簇的质心。

    在这里插入图片描述

    迭代 1

    再次计算所有的质心距离,并检测最近的两个簇并将其连接到一个新簇中。重新计算新簇的质心。

    在这里插入图片描述

    迭代 2

    重复3个步骤,计算所有的质心距离,合并2个最近的簇,重新计算新形成的簇的质心,直到只得到一个包含所有25个数据点的大簇(收敛)。

    在这里插入图片描述

    动图展示

    在这里插入图片描述


    整个层次聚类过程可以使用如下所示的树状图进行可视化,其中分叉树的叶节点是数据点,内部节点显示执行的每个合并步骤。

    在这里插入图片描述

    左侧的高度比例显示了聚类合并的距离
    最低的内部节点距离很小,表明最近的簇或点首先被合并。
    最高的内部节点距离很远,表示相距很远的点或簇以最高距离连接到一个簇中。

    实际的聚类解决方案是通过在指定距离截止点处跨聚类树状图绘制一条水平线来获得的。

    簇数等于水平切割线遇到的交点数。
    例如,在距离截止值(distance cutoff)=60 处绘制的红色水平线为 25 个数据点定义了 3 个clusters。

    例子

    一个例子显示了通过基因表达数据的层次聚类识别的不同类型的弥漫型B大细胞淋巴瘤(diffuse large B-cell lymphoma)。

    根据确定的不同类型,我们对癌症预期如何发展的估计会有所不同,并且还可能导致处方治疗的差异。

    在这里插入图片描述

    展开全文
  • 基因共表达聚类分析及可视化

    万次阅读 2017-12-26 17:35:10
    表达基因的寻找是转录组分析的一个部分,样品多可以使用WGCNA,样品少可直接通过聚类分析如K-means、K-medoids (比K-means更稳定)或Hcluster或设定pearson correlation阈值来选择共表达基因。下面将实战演示K-...

    欢迎关注天下博客:http://blog.genesino.com/2017/11/gene-cluster/
    共表达基因的寻找是转录组分析的一个部分,样品多可以使用WGCNA,样品少可直接通过聚类分析如K-meansK-medoids (比K-means更稳定)或Hcluster或设定pearson correlation阈值来选择共表达基因。

    下面将实战演示K-meansK-medoids聚类操作和常见问题:如何聚类分析,如何确定合适的cluster数目,如何绘制共表达密度图、线图、热图、网络图等。

    获得模拟数据集

    MixSim是用来评估聚类算法效率生成模拟数据集的一个R包。

    library(MixSim)
    # 获得5个中心点,8维属性的数据模型 
    data = MixSim(MaxOmega=0,  K=5,  p=8,  ecc=0.5,  int=c(10, 100))
    # 根据模型获得1000次观察的数据集
    A <- simdataset(n=1000,  Pi=data$Pi, Mu=data$Mu, S=data$S, n.out=0)
    data <- A$X
    # 数据标准化
    data <- t(apply(data, 1, scale))
    # 定义行列名字
    rownames(data) <- paste("Gene", 1:1000, sep="_")
    colnames(data) <- letters[1:8]
    head(data)
    ##                  a          b         c        d         e          f
    ## Gene_1 -0.04735251 -0.7147304 0.3836436 1.322786 0.9718988 -0.5468517
    ## Gene_2  0.09276733 -0.8066507 0.5476909 1.351780 0.8679073 -0.6019107
    ## Gene_3 -0.08751894 -0.6461075 0.4371506 1.522767 0.8031865 -0.6904081
    ## Gene_4  0.11065988 -0.7327674 0.4550544 1.379773 0.9304277 -0.5532253
    ## Gene_5 -0.02722127 -0.7833089 0.6700604 1.448916 0.7128284 -0.6266295
    ## Gene_6  0.15119823 -0.7468292 0.4859932 1.351159 0.9179421 -0.5625206
    ##                g         h
    ## Gene_1 0.4127370 -1.782130
    ## Gene_2 0.2852284 -1.736813
    ## Gene_3 0.3420581 -1.681128
    ## Gene_4 0.1808146 -1.770737
    ## Gene_5 0.2936467 -1.688292
    ## Gene_6 0.1821925 -1.779136

    K-means

    K-means称为K-均值聚类;k-means聚类的基本思想是根据预先设定的分类数目,在样本空间随机选择相应数目的点做为起始聚类中心点;然后将空间中到每个起始中心点距离最近的点作为一个集合,完成第一次聚类;获得第一次聚类集合所有点的平均值做为新的中心点,进行第二次聚类;直到得到的聚类中心点不再变化或达到尝试的上限,则完成了聚类过程。

    聚类模拟如下图:

    聚类过程需要考虑下面3点:

    1.需要确定聚出的类的数目。可通过遍历多个不同的聚类数计算其类内平方和的变化,并绘制线图,一般选择类内平方和降低开始趋于平缓的聚类数作为较优聚类数, 又称elbow算法。下图中拐点很明显,5

    tested_cluster <- 12
    wss <- (nrow(data)-1) * sum(apply(data, 2, var))
    for (i in 2:tested_cluster) {
        wss[i] <- kmeans(data, centers=i,iter.max=100,  nstart=25)$tot.withinss
    }
    plot(1:tested_cluster, wss, type="b", xlab="Number of Clusters", ylab="Within groups sum of squares")

    2.K-means聚类起始点为随机选取,容易获得局部最优,需重复计算多次,选择最优结果。

    library(cluster)
    library(fpc)
    # iter.max: 最大迭代次数
    # nstart: 选择的随机集的数目
    # centers: 上一步推测出的最优类数目
    center = 5
    fit <- kmeans(data, centers=center, iter.max=100, nstart=25)
    withinss <- fit$tot.withinss
    print(paste("Get withinss for the first run", withinss))
    ## [1] "Get withinss for the first run 44.381088289378"
    try_count = 10
    for (i in 1:try_count) {
      tmpfit <- kmeans(data, centers=center, iter.max=100, nstart=25)
      tmpwithinss <- tmpfit$tot.withinss
      print(paste(("The additional "), i, 'run, withinss', tmpwithinss))
      if (tmpwithinss < withinss){
        withins <- tmpwithinss
        fit <- tmpfit
      }
    }
    ## [1] "The additional  1 run, withinss 44.381088289378"
    ## [1] "The additional  2 run, withinss 44.381088289378"
    ## [1] "The additional  3 run, withinss 44.381088289378"
    ## [1] "The additional  4 run, withinss 44.381088289378"
    ## [1] "The additional  5 run, withinss 44.381088289378"
    ## [1] "The additional  6 run, withinss 44.381088289378"
    ## [1] "The additional  7 run, withinss 44.381088289378"
    ## [1] "The additional  8 run, withinss 44.381088289378"
    ## [1] "The additional  9 run, withinss 44.381088289378"
    ## [1] "The additional  10 run, withinss 44.381088289378"
    fit_cluster = fit$cluster

    简单绘制下聚类效果

    clusplot(data, fit_cluster, shade=T, labels=5, lines=0, color=T,
    lty=4, main='K-means clusters')

    3.预处理:聚类变量值有数量级上的差异时,一般通过标准化处理消除变量的数量级差异。聚类变量之间不应该有较强的线性相关关系。(最开始模拟数据集获取时已考虑)

    K-medoids聚类

    K-means算法执行过程,首先需要随机选择起始聚类中心点,后续则是根据聚类结点算出平均值作为下次迭代的聚类中心点,迭代过程中计算出的中心点可能在观察数据中,也可能不在。如果选择的中心点是离群点 (outlier)的话,后续的计算就都被带偏了。而K-medoids在迭代过程中选择的中心点是类内观察到的数据中到其它点的距离最小的点,一定在观察点内。两者的差别类似于平均值中值的差别,中值更为稳健。

    围绕中心点划分(Partitioning Around Medoids,PAM)的方法是比较常用的(cluster::pam),与K-means相比,它有几个特征: 1.
    接受差异矩阵作为参数;2. 最小化差异度而不是欧氏距离平方和,结果更稳健;3. 引入silhouette plot评估分类结果,并可据此选择最优的分类数目; 4. fpc::pamk函数则可以自动选择最优分类数目,并根据数据集大小选择使用pam还是clara (方法类似于pam,但可以处理更大的数据集) 。

    fit_pam <- pamk(data, krange=2:10, critout=T)

    不同的分类书计算出的silhouette值如下,越趋近于1说明分出的类越好。

    ## 2  clusters  0.5288058 
    ## 3  clusters  0.6915659 
    ## 4  clusters  0.8415226 
    ## 5  clusters  0.8661989 
    ## 6  clusters  0.7415207 
    ## 7  clusters  0.5862313 
    ## 8  clusters  0.4196284 
    ## 9  clusters  0.2518583 
    ## 10  clusters  0.116984

    获取分类的数目

    fit_pam$nc
    ## [1] 5
    layout(matrix(c(1, 2), 1, 2)) 
    plot(fit_pam$pamobject)
    layout(matrix(1)) #改回每页一张图

    获取分类信息

    fit_cluster <- fit_pam$pamobject$clustering

    数据提取和可视化

    pam的输出结果为例 (上面两种方法的输出结果都已处理为了同一格式,后面的代码通用)。

    1.获取每类数值的平均值,利用线图一步画图法获得各个类的趋势特征。

    cluster_mean <- aggregate(data, by=list(fit_cluster), FUN=mean)
    write.table(t(cluster_mean), file="ehbio.pam.cluster.mean.xls", sep='\t',col.names=F, row.names=T, quote=F)

    2.获取按照分类排序的数据,绘制热图 (点击查看)

    dataWithClu <- cbind(ID=rownames(data), data, fit_cluster)
    dataWithClu <- as.data.frame(dataWithClu)
    dataWithClu <- dataWithClu[order(dataWithClu$fit_cluster),]
    write.table(dataWithClu, file="ehbio.pam.cluster.xls", 
            sep="\t", row.names=F, col.names=T, quote=F)

    3.获取每类数据,绘制多线图和密度图

    cluster3 <- data[fit_cluster==3,]
    head(cluster3)
    ##                   a         b         c          d         e        f
    ## Gene_413 -1.2718728 0.6957162 0.9963399 -0.1895966 0.1786798 1.225407
    ## Gene_414 -1.1705230 0.6765085 0.8689340 -0.2155533 0.4176178 1.251818
    ## Gene_415 -0.9545339 0.5635188 0.8437158 -0.1360588 0.2084771 1.316728
    ## Gene_416 -1.0888687 0.8269888 0.7590209 -0.3090701 0.4478664 1.275057
    ## Gene_417 -1.1230295 0.8282559 0.9112640 -0.2524612 0.3966905 1.104951
    ## Gene_418 -1.1291253 0.9574904 0.8405449 -0.1200131 0.1964983 1.155913
    ##                    g         h
    ## Gene_413 -0.11021165 -1.524462
    ## Gene_414 -0.22266636 -1.606135
    ## Gene_415 -0.03562464 -1.806222
    ## Gene_416 -0.32047268 -1.590522
    ## Gene_417 -0.21171923 -1.653951
    ## Gene_418 -0.27792177 -1.623386
    cluster3 <- t(cluster3)

    多线图,绘制见线图绘制

    data_rownames <- rownames(cluster3)
    data_mean <- data.frame(id=data_rownames, data_mean=rowMeans(cluster3))
    data_mean
    ##   id  data_mean
    ## a  a -1.1708878
    ## b  b  0.7811888
    ## c  c  0.8443212
    ## d  d -0.2008149
    ## e  e  0.2382650
    ## f  f  1.2601860
    ## g  g -0.1612029
    ## h  h -1.5910553
    library(reshape2)
    library(ggplot2)
    data_melt <- melt(cluster3)
    colnames(data_melt) <- c("id", "Gene", "Expr")
    ggplot(data_melt, aes(id, Expr)) + stat_density_2d(aes(alpha=..level.., group=1)) + stat_smooth(data=data_mean, mapping=aes(x=id, y=data_mean, colour="red", group=1), se=F) + theme(legend.position='none')
    ## `geom_smooth()` using method = 'loess'

    等高线的颜色越深表示对应的Y轴的点越密,对平均值的贡献越大;颜色浅的点表示分布均匀。不代表点的多少。等高线的变化趋势与平均值曲线一致。

    参考

    1. GIF来自 https://commons.wikimedia.org/wiki/File:Kmeans_animation.gif
    2. PAM更多描述见http://shiyanjun.cn/archives/1398.html
    展开全文
  • 欢迎关注”生信修炼手册”!得到基因/转录本的表达量之后,通常会通过以下三种类型的图表来检验和分析生物学样本和实验设计间关系。1. 样本的聚类树利用所有样本的表达量数据,对样本进行聚类。...

    欢迎关注”生信修炼手册”!

    得到基因/转录本的表达量之后,通常会通过以下三种类型的图表来检验和分析生物学样本和实验设计间关系。

    1.  样本的聚类树

    利用所有样本的表达量数据,对样本进行聚类。理论上如果样本和实验操作都没有问题,那么属于同一组的生物学重复样本会聚到一起。示意图如下

    上图中,样本的名称用组别代替,可以看到,同一条件的样本聚在了一起。

    2. PCA图

    通过主成分分析进行降维,在二维或者三维平面上展示样本点的分布,根据点的位置,也可以看出属于同一组的样本是否在一起,不同组之间的样本有没有明显分开,示意如下


    从图中可以看到,不同条件的样本区分的很明显,而生物学重复之间距离较近,表明生物学重复的一致性和不同分组的差异性较好。

    3.  热图

    相比样本的聚类树,热图包含了更多的信息,比如可以直观的展示不同分组间表达量的差异,也是常见的可视化手段之一,示意如下

    只要有样本的表达量矩阵,DESeq2可以轻松的画出以上3种图表。但是我们应该选择原始的表达量矩阵,还是归一化之后的表达量矩阵来画呢?或者有没有其他的选择呢?

    输入的矩阵不同,得出的结论也会不同。由于基因的表达水平在不同样本间本身就存在一定的差异,所以无论是采用原始的还是归一化之后的表达量矩阵,效果都不理想。针对这一问题,DESeq2提出了两种count值的转换算法,rlogVST转换。

    1. rlog 转换

    rlog 转换的用法如下

    rld <- rlog(dds)

    2. VST 转换

    用法如下

    vsd <- vst(dds)

    两种转换本质上是在降低生物学重复之间的差异,使得样本聚类和PCA分析的效果更好。转换之后的表达量数据可以采用assay函数进行提取,代码如下

    > head(assay(rld)[, 1:2])
           sample1   sample2
    gene1 2.049029 1.6828707
    gene2 8.151262 6.8552583
    gene3 0.818971 0.2964686
    gene4 5.340361 4.4766682
    gene5 6.316175 6.8345783
    gene6 2.157821 1.9264385

    对于raw count定量表格,建议采用rlog或者VST转换之后的数据去进行PCA和聚类分析,效果会更好。

    利用DESeq2提供的示例数据pasilla,分别用原始的count, 归一化之后的count, rlog, vst 转换的count 进行PCA分析,代码如下

    dds <- estimateSizeFactors(dds)
    raw <- SummarizedExperiment(counts(dds, normalized=FALSE),
                                    colData=colData(dds))
    nor <- SummarizedExperiment(counts(dds, normalized=TRUE),
                                    colData=colData(dds))
    vsd <- vst(dds)
    rld <- rlog(dds)
    pdf("PCA.pdf")
    plotPCA( DESeqTransform(raw), intgroup=c("condition", "type") )
    plotPCA( DESeqTransform(nor), intgroup=c("condition", "type") )
    plotPCA(vsd, intgroup=c("condition", "type"))
    plotPCA(rld, intgroup=c("condition", "type"))
    dev.off()

    raw count 的结果如下


    归一化之后count结果如下

    VST转换之后的结果如下

    rlog转换之后的结果如下

    可以很明显看出,原始的count和归一化之后的count, 其PCA图是杂乱无序的,没什么明显规律,而VST和rlog转换之后,生物学重复之间更佳的接近,不同分组也区分的较为明显。

    ·end·

    —如果喜欢,快分享给你的朋友们吧—

    扫描关注微信号,更多精彩内容等着你!

    展开全文
  • 聚类 clf.fit(mdf) mdf[ ' label ' ] = clf.labels_ # 对原数据表进行类别标记 c = mdf[ ' label ' ].value_counts()     转载于:https://www.cnblogs.com/raisok/p/11458777.html
  • 差异表达聚类分析

    万次阅读 2014-10-13 16:04:45
    我们只需要直接比较不同条件下检测出的表达量数值即可。然而,在现实世界中,情况要复杂的多。事实上,在真实的实验过程中,由于随机误差(andomerror)的存在,我们得到的测量值永远是一个分布而非一个定值。因此,...
  • 聚类分析案例

    千次阅读 2020-12-20 11:35:21
    一、数据挖掘的常用方法利用数据挖掘进行数据分析常用的方法主要有分类、回归分析聚类、关联规则、特征、变化和偏差分析、Web页挖掘等,它们分别从不同的角度对数据进行挖掘。分类。分类是找出数据库中一组数据...
  • 聚个类,可能模式更清晰一些。聚类参数有很多,如下图:按行聚类、按列聚类、行列聚类聚类方法是什么,距离矩阵算法选哪个,我们提供了21种聚类算法,有通用的,有特异用于菌群数据的。在我们打开聚...
  • 聚类分析表达模式相似的基因聚类在一起,以基因集的形式进行后续分析,今天小编给大家介绍其相关原理。 介绍 聚类方法有很多,常用的有以下几个: k-均值聚类(k-means Cluster) 层次聚类(Hierarchical Cluster...
  • 数学建模之聚类分析

    千次阅读 2019-08-21 00:37:37
    一、聚类分析(Cluster Analysis)简介 聚类分析是直接比较各事物之间的性质,将性质相近的归为一类,将性质差别较大的归入不同的类的分析技术。 数理统计中的数值分类有两种问题: 判别分析:已知分类情况,将未知...
  • 聚类分析法-K-means聚类

    千次阅读 2021-02-15 17:44:41
    ​ 用层次聚类聚类时,随着聚类样本对象的增多,计算会迅速增加,而且聚类结果-谱系图会十分复杂,不便于分析,特别是样品的个数很大(如n>=100)的时,层次聚类法的计算会非常大,将占据大量的计算机内存...
  • 介绍聚类分析的原理和各种聚类方法的选择和使用
  • 聚类篇——(一)聚类分析概述

    千次阅读 2020-06-30 21:23:12
    聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类的目标是同一类对象的相似度尽可能大,不同类对象之间的相似度尽可能的小。
  • 聚类分析-层次聚类(Hierarchical Clustering)解析 层次聚类 层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。层次聚类可以被分为两类:...
  • 《Matlab笔记模糊聚类分析原理及实现》由会员分享,可在线阅读,更多相关《Matlab笔记模糊聚类分析原理及实现(14页珍藏版)》请在人人文库网上搜索。1、23. 模糊聚类分析原理及实现聚类分析,就是用数学方法研究和...
  • 用Python进行系统聚类分析

    千次阅读 2020-11-25 21:16:36
    在进行机器学习时,我们往往要对数据进行聚类分析,聚类,说白了就是把相似的样品点/数据点进行归类,相似度高的样品点会放在一起,这样一个样本就会被分成几类。而聚类分析也有很多种方法,比如分解法、加入法、...
  • 聚类分析

    千次阅读 2019-04-24 18:14:00
    聚类分析指将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程。它是一种重要的人类行为。 聚类分析的目标就是在相似的基础上收集数据来分类。聚类源于很多领域,包括数学,计算机科学,统计学,生物...
  • 基因表达数据的并行双向聚类算法.pdf
  • 聚类分析(超全超详细版)

    万次阅读 多人点赞 2020-04-20 20:50:31
    聚类分析是一种典型的无监督学习, 用于对未知类别的样本进行划分,将它们按照一定的规则划分成若干个类族,把相似(距高相近)的样本聚在同一个类簇中, 把不相似的样本分为不同类簇,从而揭示样本之间内在的性质以及...
  • sklearn文本聚类分析

    千次阅读 2020-05-10 19:04:15
    面对如今的大数据时代,各种各样的信息令人眼花缭乱,你根本不知道哪些信息是自己所需要的,而一个个看又会浪费很多时间,更不用说对一大堆信息进行分类或总结了。对于聚类处理,这里使用 birch...
  • 聚类分析-K-means clustering 在生物信息学中的应用 聚类是一种涉及数据点分组的机器学习技术。给定一组数据点,可以使用聚类算法将每个数据点到分类到图像中的特定组中。理论上,同一组中的数据点应具有相似的属性...
  • 聚类分析与可视化

    千次阅读 多人点赞 2019-04-01 10:17:42
    聚类分析与可视化 ——《The Wiley Handbook of Human Computer Interaction》学习心得 小组成员:吴** / 周** / 蒋** 概述 最近,在交互媒体专题设计这门课的课程安排下,我们小组对《The Wiley Handbook of Human ...
  • 基因表达模式聚类以及可视化

    万次阅读 2017-07-19 21:44:18
    最近在使用RNA_seq数据做些分析,结果得到了大量差异表达以及共表达的基因,如何合理展示这些基因...输入文件就是一个基因表达量的矩阵,如下图。 代码也很简单,见下图,也请点击阅读原文查看代码。​ library(TCseq)
  • 前言聚类分析是一种探索性的数据分析方法。根据目标研究对象的数值属性特征,采用数学方法对之进行分类整理;再对同类个体的共性及差异作进一步的归纳,从而得到新规律[1]。近年来聚类分析研究发展迅速,从数学、统计学...
  • 聚类分析 聚类的目的 1.间隔尺度:变量用连续的来表示【常用】 2.有序尺度:有次序关系,指标有有序的等级来表示 3.名义尺度:指标用一些类来表示,这些没有等级和数量的关系 1.1聚类分析的类型 Q型聚类:对...
  • 第1章 研究的目的与现状分析 3 1.1 研究的目的与意义 3 1.2 研究的内容 3 第2章 统计分析与整理 4 第3章 算法介绍与案例分析 4 3.1 算法介绍 4 3.2 案例分析 5 第4章 总结与展望 11 参考文献 12 第1章 研究的目的与...
  • 聚类分析 - K-means - Python代码实现

    万次阅读 多人点赞 2018-07-30 17:54:23
    K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。 算法...
  • Chapter 10 Cluster Analysis本篇是第十章,内容是聚类分析。由于之后的几章是典型的分析方法。而且在14章的案例里面可能不会体现,所以内容里会渗透较多的R语言操作。由于简书不支持Latex公式,这篇彻头彻尾又是...
  • 基于聚类分析和因子分析的空气质量研究

    千次阅读 多人点赞 2020-04-03 17:32:56
    基于聚类分析的空气质量分析 4.1 聚类分析定义及简介 聚类分析(Cluster Analysis)是研究如何将研究对象(样品或指标)按照多个方面的特征进行综合分类的一种多元统计方法。它根据“物以聚类”的道理,将个体或者...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,633
精华内容 8,253
关键字:

表达量聚类分析

友情链接: 2048-master.zip