在本文中,我们将使用主成分分析(PCA)技术对乳腺癌数据集进行分析,并通过数据可视化来展示分析结果。
数据预处理
首先,我们清除环境中的所有变量,然后加载必要的库并读取数据。
rm(list=ls())
library(tidyverse)
library(broom)
library(cowplot)
biopsy <- read.csv('biopsy.csv', row.names = 1)
主成分分析(PCA)
接下来,我们对数值型数据进行标准化处理,并进行PCA。
pca_fit <- biopsy %>%
select(where(is.numeric)) %>%
prcomp(scale = TRUE)
pca_fit
可视化主成分分析结果
我们使用 ggplot2 包将 PCA 的结果可视化。首先是主成分得分图,显示了前两个主成分的得分,并根据样本的结果进行着色。
pca_fit %>%
augment(biopsy) %>%
ggplot(aes(.fittedPC1, .fittedPC2, color = outcome)) +
geom_point(size = 1.5) +
scale_color_manual(
values = c(malignant = "#D55E00", benign = "#0072B2")
) +
theme_half_open(12) +
background_grid()
主成分载荷图
接下来,我们提取并绘制旋转矩阵,用箭头表示每个变量在前两个主成分上的载荷。
# 定义箭头样式
arrow_style <- arrow(
angle = 20, ends = "first", type = "closed", length = grid::unit(8, "pt")
)
# 绘制旋转矩阵
pca_fit %>%
tidy(matrix = "rotation") %>%
pivot_wider(names_from = "PC", names_prefix = "PC", values_from = "value") %>%
ggplot(aes(PC1, PC2)) +
geom_segment(xend = 0, yend = 0, arrow = arrow_style) +
geom_text(
aes(label = column),
hjust = 1, nudge_x = -0.02,
color = "#904C2F"
) +
xlim(-1.25, .5) + ylim(-.5, 1) +
coord_fixed() +
theme_minimal_grid(12)
主成分解释方差
最后,我们绘制各主成分解释方差的柱状图,以展示每个主成分对总方差的贡献。
pca_fit %>%
tidy(matrix = "eigenvalues") %>%
ggplot(aes(PC, percent)) +
geom_col(fill = "#56B4E9", alpha = 0.8) +
scale_x_continuous(breaks = 1:9) +
scale_y_continuous(
labels = scales::percent_format(),
expand = expansion(mult = c(0, 0.01))
) +
theme_minimal_hgrid(12)
原创文章,作者:速盾高防cdn,如若转载,请注明出处:https://www.sudun.com/ask/79114.html