R语言进阶绘图:PCA

主成分分析(PCA)是一种降维技术,用于在数据中发现潜在的模式,降低数据的复杂性,同时尽可能地保留原始数据的信息。PCA通过找到数据中方差最大的正交(垂直)方向来创建新的坐标系,这些方向被称为主成分。第一个主成分(PC1)是解释数据中最大方差的方向,第二个主成分(PC2)是与第一个主成分正交并解释尽可能多剩余方差的方向,以此类推。

以下是一个使用R语言进行PCA的示例。我们将创建一个简单的数据集,并使用R的prcomp函数进行PCA。在此示例中,我们将生成一个带有三个变量的数据集,并将其降至二维空间。

# 安装必要的库
install.packages("ggplot2")
install.packages("ggrepel")
library(ggplot2)
library(ggrepel)

# 创建数据集
set.seed(42)
n <- 50
x1 <- rnorm(n, mean = 0, sd = 1)
x2 <- x1 * 0.8 + rnorm(n, mean = 0, sd = 0.5)
x3 <- x1 * (-0.6) + rnorm(n, mean = 0, sd = 0.5)
data <- data.frame(x1, x2, x3)

# 执行PCA
pca <- prcomp(data, scale. = TRUE)

# 转换为数据框
pca_data <- data.frame(Sample = 1:n, PC1 = pca$x[,1], PC2 = pca$x[,2])

# 添加分组变量
data$group <- ifelse(data$x1 > 0, "A", "B")
pca_data$group <- data$group

# 计算解释方差比例
explained_variance_ratio <- pca$sdev^2 / sum(pca$sdev^2)

# 绘制PCA图
p <- ggplot(data = pca_data, aes(x = PC1, y = PC2, label = Sample, color = group)) +
  geom_point(size = 3) +
  geom_text_repel() +
  stat_ellipse(aes(fill = group), level = 0.95, alpha = 0.2) + # 添加带有颜色的置信圈
  labs(title = "PCA Plot", x = paste0("PC1 (", round(explained_variance_ratio[1] * 100, 1), "%)"), y = paste0("PC2 (", round(explained_variance_ratio[2] * 100, 1), "%)")) +
  scale_color_manual(values = c("A" = "red", "B" = "blue"), name = "Group") +
  scale_fill_manual(values = c("A" = "red", "B" = "blue"), name = "Group") + # 添加颜色映射
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5),
        panel.background = element_rect(fill = "lightgray", color = "black")) # 添加背景色

print(p)

# 保存为PDF文件
ggsave("pca_plot_with_colored_confidence_ellipse_and_background.pdf", plot = p, width = 8, height = 6)

 

阅读剩余
THE END