PCA和LDA分析在转录组测序中的作用

主成分分析(PCA)和线性判别分析(LDA)在转录组测序中的作用

在转录组测序(RNA-Seq)数据分析中,主成分分析(PCA)和线性判别分析(LDA)是两种常用的降维和可视化技术,用于分析组间差异。它们在揭示样本之间的关系和区别方面具有重要作用。以下是PCA和LDA在转录组测序分析中的具体作用和区别:

主成分分析(PCA)

PCA是一种无监督的降维方法,通过寻找数据中方差最大的方向,将高维数据投影到低维空间,从而揭示数据的主要变异来源。具体作用如下:

  1. 降维和可视化:PCA将高维基因表达数据投影到二维或三维空间,便于可视化。通过PCA图,可以直观地观察不同样本之间的聚类和分布情况。

  2. 变异解释:PCA通过计算主成分,揭示了样本之间变异的主要方向和来源。前几个主成分通常解释了数据中大部分的变异,从而帮助理解哪些因素对数据差异贡献最大。

  3. 异常检测:通过PCA分析,可以识别出在主成分空间中偏离正常样本聚类的异常样本。这有助于发现潜在的技术或生物学偏差。

线性判别分析(LDA)

LDA是一种有监督的降维方法,通过寻找能够最大化组间差异和最小化组内差异的方向,将数据投影到低维空间。具体作用如下:

  1. 分类和判别:LDA用于最大化组间差异,帮助区分不同组的样本。它通过寻找最能区分不同组的线性组合,使得同一组的样本在投影空间中尽可能聚集,不同组的样本尽可能分离。

  2. 特征选择:LDA可以识别出对区分不同组最有贡献的基因或特征,有助于理解哪些基因在不同组间的差异中起主要作用。

  3. 降维和可视化:与PCA类似,LDA也能将高维数据投影到二维或三维空间,但其投影方向是根据组间差异优化的。因此,LDA图通常能够更清晰地展示不同组的分离情况。

比较与选择

  • 无监督 vs 有监督:PCA是无监督方法,不依赖组标签,主要关注数据的总体变异。LDA是有监督方法,利用组标签信息,专注于最大化组间差异。
  • 应用场景:PCA常用于探索性数据分析,识别主要变异来源和异常样本。LDA适用于需要明确组间区分的场景,例如分类任务或识别差异表达基因。

总结

在转录组测序数据分析中,PCA和LDA各有优势,通常可以结合使用。PCA用于初步探索和可视化数据,了解主要变异和异常样本;LDA用于进一步分析和解释组间差异,识别对区分不同组最重要的特征和基因。通过结合两者的方法,可以获得对转录组数据更全面和深入的理解。

示例数据

library("ggplot2")

# 示例数据
data <- data.frame(
  A_1 = c(318536, 150557, 122505, 148148, 99082, 75485, 82255, 105419, 72649, 56965),
  A_2 = c(313597, 167574, 134634, 24342, 116335, 97305, 97633, 22442, 88218, 74637),
  A_3 = c(323183, 171279, 128499, 91839, 97296, 86613, 73546, 70606, 74153, 47187),
  B_1 = c(328029, 155902, 128421, 152683, 113605, 87315, 79784, 102421, 78869, 61263),
  B_2 = c(325703, 143182, 129297, 169909, 103126, 77979, 77330, 127013, 75375, 50147),
  B_3 = c(331398, 146070, 110833, 265893, 89568, 102110, 95581, 88020, 86477, 49558),
  C_1 = c(437734, 199430, 169011, 199631, 138707, 112732, 111200, 151674, 105523, 77909),
  C_2 = c(411062, 166727, 194230, 175889, 153197, 106374, 119217, 129313, 86007, 86848),
  C_3 = c(364969, 134596, 157595, 241338, 105637, 95466, 72333, 66475, 82056, 47129),
  D_1 = c(422569, 225236, 181031, 53205, 165047, 130130, 126203, 43791, 109560, 95838),
  D_2 = c(374910, 242135, 145604, 42864, 116415, 88220, 88443, 33516, 82931, 46182),
  D_3 = c(414850, 181032, 171796, 12611, 114748, 121445, 109085, 13014, 112121, 87314)
)

row.names(data) <- paste0(rep("gene",10), 1:10)

data

PCA 主成分分析

首先,标准化数据(使用基因的平均值和标准差)

data_scaled <- t(scale(t(data)))
data_scaled <- na.omit(data_scaled)
data_scaled <- t(data_scaled)

执行PCA

pca_results <- prcomp(data_scaled, scale. = TRUE)

查看PCA的summary

summary(pca_results)

提取PCA得分(主成分分析的结果)

scores <- as.data.frame(pca_results$x)

为可视化准备数据框

scores$Sample <- rownames(scores)

绘制PCA图

ggplot(data = scores, aes(x = PC1, y = PC2, label = Sample)) +
  geom_point(aes(color = Sample), size = 3) +
  geom_text(aes(), size = 5) +
  ggtitle("PCA Plot") +
  xlab(paste("PC1 - ", round(pca_results$sdev[1] / sum(pca_results$sdev) * 100, 2), "% Variance")) +
  ylab(paste("PC2 - ", round(pca_results$sdev[2] / sum(pca_results$sdev) * 100, 2), "% Variance")) +
  theme_minimal()

在这里插入图片描述

解读

PCA(主成分分析)结果lda_results总结提供了主成分的重要性信息,包括每个主成分的标准差、解释的方差比例和累积方差比例。这些信息帮助我们理解各主成分在数据降维和变异解释中的作用。

1. 标准差(Standard deviation)
                         PC1    PC2     PC3     PC4     PC5     PC6     PC7     PC8
Standard deviation     2.496 1.3601 0.86285 0.72948 0.60055 0.42397 0.27231 0.14237
                           PC9    PC10
Standard deviation     0.09053 0.03035

标准差表示每个主成分的离散程度。较大的标准差表示该主成分解释了更多的数据变异。这里,PC1(主成分1)的标准差为2.496,表明它在数据中具有最大的变异解释能力。随着主成分序号的增加,标准差逐渐减小,表示每个后续主成分解释的数据变异逐渐减少。

2. 方差比例(Proportion of Variance)
Proportion of Variance 0.623 0.1850 0.07445 0.05321 0.03607 0.01798 0.00742 0.00203
                           PC9    PC10
Proportion of Variance 0.00082 0.00009

方差比例表示每个主成分解释的总变异的比例。PC1解释了62.3%的变异,PC2解释了18.5%的变异,这两个主成分加起来解释了80.79%的总变异。其余主成分解释的变异比例逐渐减少,到PC10时仅解释了0.009%的变异。这表明前几个主成分解释了数据中的大部分变异。

3. 累积方差比例(Cumulative Proportion)
Cumulative Proportion  0.623 0.8079 0.88239 0.93560 0.97167 0.98965 0.99706 0.99909
                           PC9    PC10
Cumulative Proportion  0.99991 1.00000

累积方差比例表示从PC1到当前主成分的所有主成分共同解释的总变异比例。PC1和PC2共同解释了80.79%的变异,前三个主成分共同解释了88.24%的变异,前四个主成分共同解释了93.56%的变异。到PC10时,所有主成分共同解释了100%的变异。这表明我们可以通过前几个主成分捕捉到数据中的大部分信息,而不需要考虑所有主成分。

总结

  • 标准差显示了每个主成分的离散程度,较大的标准差表明该主成分解释了更多的数据变异。
  • 方差比例说明了每个主成分解释的总变异的比例,前几个主成分通常解释了大部分变异。
  • 累积方差比例显示了多个主成分共同解释的总变异比例,通过累积方差比例可以确定需要多少主成分来捕捉大部分信息。

通过这些结果,我们可以确定前两个主成分(PC1和PC2)解释了大部分的总变异(80.79%),因此可以用这两个主成分来进行降维和可视化分析,从而简化数据并保留主要信息。

LDA 线性判别分析

构建示例标签数据

labels <- data.frame(Sample = colnames(data), 
                     Label = rep(c("A","B","C","D"), each=3))
rn <- labels$Sample
labels <- as.data.frame(labels[, -1]) 
rownames(labels) <- rn
合并数据和标签
data$Label <- labels[row.names(data), ]
标准化数据(使用基因的平均值和标准差)
data_scaled <- t(scale(t(data[, -ncol(data)])))
data_scaled <- na.omit(data_scaled)
data_scaled <- t(data_scaled)
添加标签列
data_scaled <- data.frame(data_scaled)
data_scaled$Label <- labels[row.names(data_scaled), ]
执行LDA分析
lda_results <- lda(Label ~ ., data = data_scaled)
提取LDA得分(线性判别分析的结果)
scores <- as.data.frame(predict(lda_results)$x)
为可视化准备数据框
scores$Sample <- row.names(scores)
scores$Label <- data_scaled$Label
绘制LDA图
ggplot(data = scores, aes(x = LD1, y = LD2, label = Sample)) +
  geom_point(aes(color = Label), size = 3) +
  geom_text(aes(), size = 5) +
  ggtitle("LDA Plot") +
  xlab("LD1") +
  ylab("LD2") +
  theme_minimal()

在这里插入图片描述

解读

通过线性判别分析(LDA)得到的结果> pca_results可以分为几个部分来解读,包括先验概率、组均值、线性判别系数和轨迹比例。这些结果帮助我们理解哪些基因对不同组之间的分类最为重要,以及不同组之间的主要差异来源。

1. 先验概率(Prior probabilities of groups)
Prior probabilities of groups:
   A    B    C    D 
0.25 0.25 0.25 0.25 

先验概率显示了在进行LDA之前各组的样本比例。这里各组(A, B, C, D)的先验概率均为0.25,表明每组样本数相等。

2. 组均值(Group means)
Groupgene1gene2gene3gene4gene5gene6gene7gene8gene9gene10
A-0.9751585-0.3151857-0.7293330-0.5087718-0.5833681-0.7083208-0.5367432-0.2942992-0.6882049-0.2985077
B-0.7618839-0.7577257-0.94521680.7573321-0.6758072-0.5504162-0.55009030.5820436-0.5503693-0.6217909
C0.8736574-0.20176090.97881170.86815270.63917890.38047290.35394870.80305340.24422240.3018909
D0.86338501.27467230.6957381-1.11671300.61999640.87826410.7328848-1.09079770.99435180.6184077

组均值表示每组在各基因上的平均表达值。这些值有助于理解不同组之间在各基因表达水平上的差异。例如,gene1在组A中的平均值为-0.9751585,而在组C中的平均值为0.8736574,表明gene1在这两组之间有显著的表达差异。

3. 线性判别系数(Coefficients of linear discriminants)
Coefficients of linear discriminants:
               LD1         LD2        LD3
gene1   2.87001748  2.40981985 -0.5387794
gene2   0.92903926  1.12684034  0.4022120
gene3   2.06040983 -2.83222289 -0.6793422
gene4  -0.04227224 -0.92495465  0.4810559
gene5  -0.96773759 -1.15681489  0.3982583
gene6   1.62897970  0.06376403  0.2159269
gene7  -0.64483184 -0.36009951 -0.1075160
gene8  -0.77045968 -1.55510784  0.1366164
gene9  -1.73756774 -2.46327434  1.4394242
gene10 -0.58149369  2.96705345 -0.6955280

线性判别系数表示各基因在判别不同组时的重要性和贡献度。较大的系数值意味着该基因在区分组别时起到了更重要的作用。例如,gene1在LD1和LD2中都有较大的系数(2.87001748和2.40981985),表明它在这两个线性判别函数中对区分组别有很大贡献。

4. 轨迹比例(Proportion of trace)
Proportion of trace:
   LD1    LD2    LD3 
0.6710 0.3209 0.0081 

轨迹比例表示各线性判别函数(LD)的解释能力。LD1解释了67.10%的组间差异,LD2解释了32.09%,而LD3仅解释了0.81%。这表明LD1和LD2是主要的判别函数,几乎涵盖了所有的组间差异。

总结

  • 先验概率表明每组样本数相等。
  • 组均值显示了各组在每个基因上的平均表达水平,帮助识别不同组之间的基因表达差异。
  • 线性判别系数揭示了哪些基因对区分组别最为重要。
  • 轨迹比例说明了主要判别函数(LD1和LD2)在解释组间差异时的作用。

通过这些结果,可以更好地理解转录组数据中组间差异的主要来源,并识别出在分类中起关键作用的基因。

  • 55
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值