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

相关推荐

  • 搜索引擎优化技巧:如何优化seo提高网站排名?

    你是否想过,为什么有些网站总是排在搜索引擎的前几页,而有些却默默无闻?这背后的秘密就是搜索引擎优化。作为一种提高网站在搜索引擎结果中排名的技巧,SEO已经成为了许多网站主必备的技能…

    行业资讯 2024年3月23日
    0
  • 如何在手机端使用腾讯云服务器?

    云服务器行业正在迅速发展,越来越多的用户开始关注如何在手机端使用腾讯云服务器。作为一家领先的云服务提供商,腾讯云服务器备受用户青睐。但是,对于初次接触云服务器的用户来说,如何在手机…

    行业资讯 2024年4月15日
    0
  • dns大全2019,2020最新纯净dns

    2019年,互联网行业又带来了一项重大技术进步:——无污染DNS。尽管这项技术并不为大众所熟知,但它对网络安全和隐私保护有着重大影响。那么什么是无公害DNS呢?2019年无公害DN…

    行业资讯 2024年5月15日
    0
  • seo网站优化的目的

    SEO网站优化,是近年来备受关注的一个话题。随着互联网的发展,越来越多的企业意识到,拥有一个好的网站不仅可以提升品牌形象,还可以吸引更多的潜在客户。而SEO网站优化,则是让这个过程…

    行业资讯 2024年3月26日
    0

发表回复

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