使用R语言tidyverse包轻松实现PCA分析

在本文中,我们将使用主成分分析(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)) %>% # retain only numeric columns  prcomp(scale = TRUE) # do PCA on scaled datapca_fit
# Standard deviations (1, .., p=9):#   [1] 2.4288885 0.8808785 0.7343380 0.6779583 0.6166651 0.5494328 0.5425889 0.5106230 0.2972932# # Rotation (n x k) = (9 x 9):#   PC1         PC2          PC3         PC4         PC5         PC6          PC7         PC8          PC9# clump_thickness      -0.3020626 -0.14080053  0.866372452  0.10782844 -0.08032124 -0.24251752 -0.008515668 -0.24770729  0.002747438# uniform_cell_size    -0.3807930 -0.04664031 -0.019937801 -0.20425540  0.14565287 -0.13903168 -0.205434260  0.43629981  0.733210938# uniform_cell_shape   -0.3775825 -0.08242247  0.033510871 -0.17586560  0.10839155 -0.07452713 -0.127209198  0.58272674 -0.667480798# marg_adhesion        -0.3327236 -0.05209438 -0.412647341  0.49317257  0.01956898 -0.65462877  0.123830400 -0.16343403 -0.046019211# epithelial_cell_size -0.3362340  0.16440439 -0.087742529 -0.42738358  0.63669325  0.06930891  0.211018210 -0.45866910 -0.066890623# bare_nuclei          -0.3350675 -0.26126062  0.000691478  0.49861767  0.12477294  0.60922054  0.402790095  0.12665288  0.076510293# bland_chromatin      -0.3457474 -0.22807676 -0.213071845  0.01304734 -0.22766572  0.29889733 -0.700417365 -0.38371888 -0.062241047# normal_nucleoli      -0.3355914  0.03396582 -0.134248356 -0.41711347 -0.69021015  0.02151820  0.459782742 -0.07401187  0.022078692# mitoses              -0.2302064  0.90555729  0.080492170  0.25898781 -0.10504168  0.14834515 -0.132116994  0.05353693 -0.007496101

可视化主成分分析结果

我们使用 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

Like (0)
速盾高防cdn的头像速盾高防cdn
Previous 2024年5月30日 下午5:44
Next 2024年5月30日 下午5:51

相关推荐

  • 坚美蓝光断桥,手机浏览器dns劫持

    对于当今的互联网行业来说,手机浏览器已经成为人们日常生活中必不可少的一部分。但您是否知道使用移动浏览器可能会导致DNS 污染问题?此类问题不仅会影响您的在线体验,还会带来安全风险。…

    行业资讯 2024年5月14日
    0
  • oa在线试用

    oa在线试用,一款让办公更高效的神器。什么是OA系统?如何申请OA在线试用?它又有哪些优势?想要了解更多吗?那就跟随小编一起来探索吧! 什么是OA系统? OA系统,全称为Offic…

    行业资讯 2024年3月28日
    0
  • Recv failure: Connection was reset

    动态网站具有用户体验更好、交互性更强、更易于管理和更新等优点,在电子商务平台、新闻媒体网站、社交网络、教育平台等领域广受欢迎,有着广泛的应用范围。的应用场景。随着技术的不断发展,动…

    行业资讯 2024年4月19日
    0
  • 钉钉被禁止联网,钉钉被网站拦截了怎么办

    即使钉钉网站成功解封,您也应该定期检查网站是否存在非法内容和安全问题。这样,您就可以及时发现并解决问题,避免再次被屏蔽。 7.遵守相关法律法规 最重要的是,请您在使用钉钉网站时遵守…

    行业资讯 2024年5月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注