偏最小二乘判别分析(PLS-DA)在转录组测序中的作用
PLS-DA(偏最小二乘判别分析)、PCA(主成分分析)和LDA(线性判别分析)在数据分析中各具特色,尤其在转录组测序中发挥着不同的作用。PCA旨在通过最大化数据方差来发现数据的主要变异方向,是一种无监督学习方法,不使用类别标签,主要用于数据探索、可视化和降维。LDA则是一种有监督学习方法,利用类别标签来最大化类别间的分离度,适用于分类问题,尤其在类别数较少且数据满足同质性假设的情况下。PLS-DA同样是有监督学习方法,结合数据矩阵和类别矩阵来建立线性模型,既解释数据变异又最大化类别差异,特别适合高维数据和多类别分类分析。
在转录组测序中,PCA常用于初步探索和可视化,揭示样本间的总体结构和主要变异方向;LDA用于分类分析,帮助识别不同样本类别间的差异;而PLS-DA用于高维数据的分类和模式识别,通过发现与类别相关的重要基因来解释类别差异。
library(ggplot2)
library(mixOmics)
library(plotly)
示例数据
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 <- t(data)
data
创建分组标签
group <- factor(rep(c("A", "B", "C", "D"), each = 3))
执行PLS-DA
plsda_results <- plsda(data, group, ncomp = 3)
提取PLS-DA得分
scores <- as.data.frame(plsda_results$variates$X)
scores$Sample <- rownames(scores)
scores$Group <- group
使用ggplot2包绘制PLS-DA二维图
ggplot(data = scores, aes(x = comp1, y = comp2, label = Sample)) +
geom_point(aes(color = Group), size = 3) +
geom_text(aes(), size = 5, vjust = -1) +
ggtitle("PLS-DA Plot (2D)") +
xlab("Component 1") +
ylab("Component 2") +
theme_minimal()
使用plotly包绘制PLS-DA三维图
plot_ly(data = scores, x = ~comp1, y = ~comp2, z = ~comp3, color = ~Group, text = ~Sample,
type = "scatter3d", mode = "markers+text", marker = list(size = 5)) %>%
layout(title = "PLS-DA Plot (3D)",
scene = list(xaxis = list(title = "Component 1"),
yaxis = list(title = "Component 2"),
zaxis = list(title = "Component 3")))