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

(0)
速盾高防cdn's avatar速盾高防cdn
上一篇 2024年5月30日 下午5:44
下一篇 2024年5月30日 下午5:51

相关推荐

  • 云服务器gpu是什么硬件?

    你是否听说过云服务器GPU?它是什么硬件?或许你已经对云服务器有所了解,但是当谈到GPU时,你可能还有些疑惑。那么,什么是GPU?它在云服务器中的作用又是什么呢?今天,我们将揭开这…

    行业资讯 2024年4月19日
    0
  • seo营销方式

    您是否想要提升您网站的搜索排名?您是否想要更多的流量和转化率?那么,SEO营销方式就是您的最佳选择!什么是SEO营销?它可以帮助您优化网站,提高网站在搜索引擎中的排名,从而吸引更多…

    行业资讯 2024年4月11日
    0
  • 域名被墙与ip墙的区别,被墙域名还能恢复吗

    配置空格跳转时,请务必将HTTP状态码设置为301永久重定向。这会通知搜索引擎您的域名已永久更改为新地址,从而避免将其包含在搜索引擎中时出现混淆和失去权限等问题。 4. 验证跳转页…

    行业资讯 2024年5月12日
    0
  • 怎么知道网站被攻击了,怎么查看网址是不是被拦截

    随着互联网的快速发展,越来越多的公司和个人拥有自己的网站。但是您知道网站被屏蔽的原因是什么吗?我如何判断网站是否被屏蔽?如果您对这些问题感到困惑,我该如何解决这个问题?欢迎关注我一…

    行业资讯 2024年5月15日
    0

发表回复

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