R语言主成分分析详细解析

一、主成分分析介绍

主成分分析是一种常用的数据降维算法,它可以把多个相关性很高的指标(变量)转化为少数几个无关的主成分。这些主成分之间两两无关,且能够解释原始指标的大部分信息。在实际应用中,主成分分析具有很高的实用价值,比如可以用于降低数据的复杂度、提高数据分析的效率、发现数据的隐藏规律等。

R语言是一种功能强大的开源计算机语言,人性化的语法和丰富的统计分析函数库使其成为数据分析师最喜欢的工具之一。R语言主成分分析函数prcomp()和princomp()可以实现主成分分析,下面将详细介绍其使用方法。

二、prcomp()函数详解

prcomp()函数可以计算带有奇异值分解的主成分分析,并返回与原始数据相同规模的主成分分析数据集。下面我们以iris数据集为例,来说明如何使用prcomp()函数实现主成分分析:

data(iris)
iris_pca <- prcomp(iris[, 1:4], center = TRUE, scale. = TRUE)
summary(iris_pca)

上述代码中,我们使用data()函数导入R语言内置的iris数据集,然后使用prcomp()函数对前4列数据进行主成分分析。其中center=TRUE表示将每个变量的均值中心化为0,scale.=TRUE表示给每个变量进行标准化处理。到这里,我们已经得到了主成分分析结果,接下来用summary()函数来查看主成分分析结果的摘要:

Importance of components:
                          PC1    PC2     PC3     PC4
Standard deviation     1.7084 0.9560 0.38309 0.14393
Proportion of Variance 0.7296 0.2285 0.03669 0.00518
Cumulative Proportion  0.7296 0.9581 0.99480 1.00000

从结果可以看出,第一主成分(PC1)可以解释原始数据集中约73%的方差,第二主成分(PC2)可以解释约23%的方差,第三主成分(PC3)仅能解释约3.7%的方差,而第四主成分(PC4)的解释能力更加弱,只能解释约0.5%的方差。因此,在实际应用中一般只考虑前k个主成分,其中k是自己事先设定的,可以根据累计贡献率和业务需求进行调整。

三、princomp()函数详解

princomp()函数和prcomp()函数在功能上是相同的,都可以实现主成分分析。但两者的区别在于princomp()函数计算的是未经过奇异值分解的主成分分析,而且每个主成分分析的方差总和为n-1,而不是等于样本个数。下面我们以iris数据集为例,使用princomp()函数进行主成分分析:

data(iris)
iris_pca <- princomp(iris[, 1:4], cor = TRUE, scores = TRUE)
summary(iris_pca)

此处将参数cor设置为TRUE,表示使用相关系数矩阵进行主成分分析。scores参数设置为TRUE,表示输出主成分分析后的主成分得分矩阵。运行后的结果如下:

Importance of components:
                         Comp.1   Comp.2   Comp.3   Comp.4
Standard deviation     1.70836 0.956049 0.383088 0.143926
Proportion of Variance 0.72962 0.228507 0.036247 0.005618
Cumulative Proportion  0.72962 0.958127 0.994374 1.000000

Loadings:
             Comp.1 Comp.2 Comp.3 Comp.4
Sepal.Length  0.521 -0.377  0.719  0.261
Sepal.Width  -0.269 -0.923 -0.244 -0.124
Petal.Length  0.580 -0.024 -0.142 -0.801
Petal.Width   0.565 -0.069 -0.634  0.523

               Comp.1   Comp.2   Comp.3   Comp.4
Sepal.Length  0.89767 -0.39874 -0.07856  0.04597
Sepal.Width  -0.38624 -0.23632 -0.27045 -0.85970
Petal.Length  0.00000  0.27492 -0.92792  0.24178
Petal.Width   0.00000  0.85391  0.24178  0.46168

从结果可以看出,princomp()函数计算出的主成分结果和prcomp()函数基本一致,仅在方差和主成分得分的计算方式上略有差异。

四、主成分分析可视化

主成分分析不仅可以用于降维和发现隐藏规律,还可以用于可视化。我们可以将主成分分析后的前两个主成分作为x轴和y轴来画出散点图,观察数据的分布情况。下面我们以iris数据集为例,来说明如何实现主成分分析的可视化:

data(iris)
iris_pca <- prcomp(iris[, 1:4], center = TRUE, scale. = TRUE)
plot(iris_pca$x[,1:2], col = iris$Species)
legend("topright", levels(iris$Species), col=c(1:3), pch=1)

在上述代码中,我们先使用prcomp()函数对iris数据集进行主成分分析,并将前两个主成分得分作为x轴和y轴。然后使用plot()函数画出散点图,其中col参数指定了花的类型(样本数据),legend()函数用于添加标注。运行上述代码,我们可以得到如图所示的散点图:

五、总结

本文主要介绍了R语言主成分分析prcomp()和princomp()函数的使用方法,并且以iris数据集为例详细解析了其用法,包括主成分分析结果摘要、主成分分析的可视化等,希望对广大数据分析爱好者有所帮助。

原创文章,作者:AYKTY,如若转载,请注明出处:https://www.506064.com/n/332053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
AYKTYAYKTY
上一篇 2025-01-20 14:11
下一篇 2025-01-20 14:11

相关推荐

  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28
  • Python作为中心语言,在编程中取代C语言的优势和挑战

    Python一直以其简单易懂的语法和高效的编码环境而著名。然而,它最近的发展趋势表明Python的使用范围已经从脚本语言扩展到了从Web应用到机器学习等广泛的开发领域。与此同时,C…

    编程 2025-04-28
  • Python基础语言

    Python作为一种高级编程语言拥有简洁优雅的语法。在本文中,我们将从多个方面探究Python基础语言的特点以及使用技巧。 一、数据类型 Python基础数据类型包括整数、浮点数、…

    编程 2025-04-28

发表回复

登录后才能评论