R语言:主成分分析PCA

文章目录

        • 主成分分析
        • 处理步骤
        • 数据集
        • code

主成分分析

主成分分析(或称主分量分析,principal component analysis)由皮尔逊(Pearson,1901)首先引入,后来被霍特林(Hotelling,1933)发展。

主成分分析是一种通过降维技术把多个变量化为少数几个主成分(即综合变量)的统计分析方法。这些主成分能够反映原始变量的绝大部分信息,它们通常表示为原始变量的某种线性组合。

  • 主成分分析的一般目的是:
    1. 变量的降维;
    2. 主成分的解释。
处理步骤
  1. 将数据标准化(必需,不同量纲和大小的数据影响结果)

  2. 求样本的相关系数矩阵R

  3. R的特征值以及特征向量

  4. 按主成分累计贡献率超过80%来确定主成分的个数K,并写出主成分表达式(一般是80%,实际问题中70%多也可以接受)

  5. 对分析结果做统计意义和实际意义的解释(往往是更难的)

数据集

内置的mtcars数据框包含有关32辆汽车的信息,包括它们的重量,燃油效率(以每加仑英里为单位),速度等。

数据来自1974年美国汽车趋势杂志,包括32辆汽车(1973-74款)的油耗和10个方面的汽车设计和性能。

> help("mtcars")Motor Trend Car Road Tests
Description
The data was extracted from the 1974 Motor Trend US magazine, and comprises fuel consumption and 10 aspects of automobile design and performance for 32 automobiles (197374 models).Usage
mtcars
Format
A data frame with 32 observations on 11 (numeric) variables.[, 1]	mpg	Miles/(US) gallon
[, 2]	cyl	Number of cylinders
[, 3]	disp	Displacement (cu.in.)
[, 4]	hp	Gross horsepower
[, 5]	drat	Rear axle ratio
[, 6]	wt	Weight (1000 lbs)
[, 7]	qsec	1/4 mile time
[, 8]	vs	Engine (0 = V-shaped, 1 = straight)
[, 9]	am	Transmission (0 = automatic, 1 = manual)
[,10]	gear	Number of forward gears
[,11]	carb	Number of carburetors
Source
Henderson and Velleman (1981), Building multiple regression models interactively. Biometrics, 37, 391411.Examples
require(graphics)
pairs(mtcars, main = "mtcars data", gap = 1/4)
coplot(mpg ~ disp | as.factor(cyl), data = mtcars,panel = panel.smooth, rows = 1)
## possibly more meaningful, e.g., for summary() or bivariate plots:
mtcars2 <- within(mtcars, {vs <- factor(vs, labels = c("V", "S"))am <- factor(am, labels = c("automatic", "manual"))cyl  <- ordered(cyl)gear <- ordered(gear)carb <- ordered(carb)
})
summary(mtcars2)
code
  • 计算相关系数矩阵
#计算相关系数
R<-cor(mtcars)
Rmpg        cyl       disp         hp        drat         wt
mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.68117191 -0.8676594
cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.69993811  0.7824958
disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.71021393  0.8879799
hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.44875912  0.6587479
drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.00000000 -0.7124406
wt   -0.8676594  0.7824958  0.8879799  0.6587479 -0.71244065  1.0000000
qsec  0.4186840 -0.5912421 -0.4336979 -0.7082234  0.09120476 -0.1747159
vs    0.6640389 -0.8108118 -0.7104159 -0.7230967  0.44027846 -0.5549157
am    0.5998324 -0.5226070 -0.5912270 -0.2432043  0.71271113 -0.6924953
gear  0.4802848 -0.4926866 -0.5555692 -0.1257043  0.69961013 -0.5832870
carb -0.5509251  0.5269883  0.3949769  0.7498125 -0.09078980  0.4276059qsec         vs          am       gear        carb
mpg   0.41868403  0.6640389  0.59983243  0.4802848 -0.55092507
cyl  -0.59124207 -0.8108118 -0.52260705 -0.4926866  0.52698829
disp -0.43369788 -0.7104159 -0.59122704 -0.5555692  0.39497686
hp   -0.70822339 -0.7230967 -0.24320426 -0.1257043  0.74981247
drat  0.09120476  0.4402785  0.71271113  0.6996101 -0.09078980
wt   -0.17471588 -0.5549157 -0.69249526 -0.5832870  0.42760594
qsec  1.00000000  0.7445354 -0.22986086 -0.2126822 -0.65624923
vs    0.74453544  1.0000000  0.16834512  0.2060233 -0.56960714
am   -0.22986086  0.1683451  1.00000000  0.7940588  0.05753435
gear -0.21268223  0.2060233  0.79405876  1.0000000  0.27407284
carb -0.65624923 -0.5696071  0.05753435  0.2740728  1.00000000
  • 计算特征值
#计算特征值
lambda<-princomp(R)
lambdaCall:
princomp(x = R)Standard deviations:Comp.1      Comp.2      Comp.3      Comp.4 
1.992444019 0.762563719 0.164481730 0.079889308 Comp.5      Comp.6      Comp.7      Comp.8 
0.065557778 0.052541093 0.040670837 0.024829720 Comp.9     Comp.10     Comp.11 
0.022722621 0.006649006 0.000000000 11  variables and  11 observations.
  • 计算标准差,贡献率,累计贡献率

Standard deviation:标准差
Proportion of Variance:方差贡献率
Cumulative Proportion:累积贡献率
Loadings:载荷矩阵

#计算标准差,贡献率,累计贡献率
summary(lambda,loadings=TRUE)Importance of components:Comp.1    Comp.2      Comp.3      Comp.4
Standard deviation     1.9924440 0.7625637 0.164481730 0.079889308
Proportion of Variance 0.8640097 0.1265606 0.005888188 0.001389069
Cumulative Proportion  0.8640097 0.9905703 0.996458532 0.997847601Comp.5       Comp.6       Comp.7
Standard deviation     0.0655577780 0.0525410926 0.0406708369
Proportion of Variance 0.0009353945 0.0006008203 0.0003600084
Cumulative Proportion  0.9987829955 0.9993838158 0.9997438241Comp.8       Comp.9      Comp.10 Comp.11
Standard deviation     0.0248297195 0.0227226207 6.649006e-03       0
Proportion of Variance 0.0001341807 0.0001123733 9.621877e-06       0
Cumulative Proportion  0.9998780048 0.9999903781 1.000000e+00       1Loadings:Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9
mpg   0.363         0.290                0.274  0.242  0.514  0.524
cyl  -0.374         0.192        -0.136  0.277        -0.282 -0.178
disp -0.368         0.158 -0.129        -0.451  0.232  0.109  0.285
hp   -0.330  0.238         0.155 -0.441 -0.193         0.647 -0.290
drat  0.295  0.263 -0.117 -0.856 -0.268                            
wt   -0.346 -0.162 -0.278 -0.207  0.350 -0.335                0.413
qsec  0.200 -0.483 -0.344         0.344                0.361 -0.438
vs    0.306 -0.252 -0.383  0.278 -0.570 -0.234 -0.249 -0.192  0.289
am    0.235  0.431  0.247  0.125  0.322 -0.427 -0.575              
gear  0.208  0.450 -0.304  0.277  0.129 -0.247  0.657 -0.200 -0.119
carb -0.213  0.396 -0.580         0.151  0.438 -0.248  0.124  0.252Comp.10 Comp.11
mpg   0.132   0.289 
cyl   0.164   0.766 
disp -0.656   0.182 
hp    0.254         
drat          0.132 
wt    0.569         
qsec -0.171   0.363 
vs            0.236 
am            0.249 
gear          0.136 
carb -0.318        

由上表结果可知,一个主成分y1的方差贡献率已经达到86.4%,前两个主成分的累积方差贡献率达到99.06%,已经完全可以解释总方差。

  • 画出碎石图
#画出碎石图
screeplot(lambda,type = "lines")

在这里插入图片描述

  • 写出对应主成分表达式
    通过载荷矩阵loadings写出对应的主成分

  • 画出载荷散点图

#提取主成分载荷矩阵
load<-loadings(student.pr)
#用载荷前两列做散点图
plot(load[,1:2],xlim=c(-0.9,0.9),ylim=c(-0.9,0.9))
#标记序号
text(load[,1],load[,2],adj=c(0.9,-0.9))
#划分象限
abline(h=0);abline(v=0)

在这里插入图片描述
从载荷散点图可以看出,各变量与两个主成分之间的关系并不明显,使用主成分分析的效果并不够好。

虽然在方差贡献率上主成分分析PCA表现良好,但是解释性(往往是最重要的)比较差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/112770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML 常用标签及练习

常用标签 <head>中的标签 概述 head中的内容不显示到页面上 标签说明<title>定义网页的标题<meta>定义网页的基本信息&#xff08;供搜索引擎&#xff09;<style>定义CSS样式<link>链接外部CSS文件或脚本文件<script>定义脚本语言<…

麒麟V10SP01部署docker报错:http:invalid Host header

问题描述 在麒麟v10sp01系统中使用yumdownloader下载的docker版本是docker-engine-18.09.0-101.p06.ky10.x86_64&#xff0c;部署docker后运行容器&#xff0c;进入容器查看时报错http:invalid Host header。在网上查了半天也没有找到解决方法。 后来请教公司高人后&#xff0c…

带返回值的递归转为非递归

带返回值的递归转为非递归与不带返回值的递归转为非递归相似。不同的地方是有个如何保存和使用返回值的问题。 以组合数计算为例。计算公式是&#xff0c;C(n, k) C(n-1, k) C(n-1, k-1)。写成递归的代码是&#xff0c; func cbn(n, k) {if(nk||k0) return 1;else if(k1) r…

房地产行业程序员管理痛点分析

很久前跟某地产公司程序员聊天&#xff0c;谈到程序员管理的痛点问题&#xff0c;怎么去解决这些痛点。 1.大部分骨干力量集中休年假。理由有&#xff1a;回家照顾老人。请病假&#xff1a;职业病方面&#xff0c;比如眼睛痛&#xff0c;头痛&#xff0c;脖子颈椎痛&#xff0c…

Oracle性能调优实践中的几点心得

很多的时侯&#xff0c;做OracleDBA的我们&#xff0c;当应用管理员向我们通告现在应用很慢、数据库很慢的时侯&#xff0c;我们到数据库时做几个示例的Select也发现同样的问题时&#xff0c;有些时侯我们会无从下手&#xff0c;因为我们认为数据库的各种命种率都是满足Oracle文…

【Mysql】Mysql中的B+树索引(六)

概述 从上一章节我们了解到InnoDB 的数据页都是由7个部分组成&#xff0c;然后各个数据页之间可以组成一个双向链表 &#xff0c;而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表 &#xff0c;每个数据页都会为存储在它里边儿的记录生成一个页目录 &#xff…

深度解析 Bing 搜索引擎的排名因素与算法

自从和ChatGPT搞上了&#xff0c;Bing在搜索引擎界就像是新晋的网红&#xff0c;风头一时无两。 搜索引擎的排名算法是确定搜索结果排名的核心&#xff0c;每个搜索引擎都有其独特的排名规则和算法。Bing作为全球第二大搜索引擎&#xff0c;其排名因素和算法同样至关重要。在本…

【算法题】统计无向图中无法互相到达点对数

题目&#xff1a; 给你一个整数 n &#xff0c;表示一张 无向图 中有 n 个节点&#xff0c;编号为 0 到 n - 1 。同时给你一个二维整数数组 edges &#xff0c;其中 edges[i] [ai, bi] 表示节点 ai 和 bi 之间有一条 无向 边。 请你返回 无法互相到达 的不同 点对数目 。 示…

javaEE - 1(9000字详解多线程)

一&#xff1a;认识线程 1.1 线程的概念 线程是操作系统中执行的最小单位&#xff0c;它是进程中的一个实体。一个进程可以包含多个线程&#xff0c;并且这些线程共享进程的资源&#xff0c;如内存、文件句柄等&#xff0c;但每个线程有自己的独立执行流程和栈空间。 线程在…

CEF 之 Render进程 与 Browser进程通信

目录 一、进程通信 1、两进程通信消息名 2、Browser给Render进程发消息 1)SendProcessMessage 2)CefProcessMessage

java 使用poi读取excel内浮动图片

注意&#xff1a;仅读取到xls中的浮动图片&#xff0c;嵌入图片此方法读取不到 1、引入poi依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><depen…

java-各种成员变量初始化过程-待完善

前置条件 一、本文章讨论的成员变量 public static final String aa "aa";public static final Integer bb 1;public static final Students cc new Students();public static String aa1 "aa";public static Integer bb1 1;public static String bb2…

ant的Path-like结构

ant可以使用path和classpath结构指明路径。path和classpath可以包含内嵌的元素&#xff0c;类似下面的通用形式&#xff1a; <classpath><pathelement path"${classpath}"/><pathelement location"lib/helper.jar"/> </classpath>…

顺序表第三节(通讯录基础版)

目录 可以先看一遍第二节在看这个 顺序表&#xff08;第二节&#xff09;实现和解析-CSDN博客 1.顺序表的头文件 2.初始化通讯录 3.添加通讯录 特殊&#xff1a;查找对应姓名的通讯录的序号 4.删除通讯录 5.展示通讯录 6.查找通讯录 7.修改通讯录 8.销毁通讯…

【UE】两步实现“从UI中拖出Actor放置到场景中”

效果 步骤 1. 创建两个actor蓝图 在两个蓝图中分别添加立方体和球体形状的静态网格体组件&#xff0c;注意移动性设置为“可移动” 设置碰撞预设为“NoCollsion” 2. 先创建一个控件蓝图 打开控件蓝图&#xff0c;在画布面板中添加两个按钮 为按钮添加“按压时”和“松开时”的…

感悟:一个小小的摄像头APP,也解决了很多BUG

本来以为&#xff0c;简单的测试一下就行了&#xff0c;应该没有几个BUG。应该是比较轻松的。 然而现实是每天干活时&#xff0c;都能发现几个BUG。这BUG不解决还不行。六石管理学告诉我们四大容易&#xff1a;说容易&#xff0c;看容易&#xff0c;看别人容易&#xff0c;会了…

全连接网络参数Xavier初始化

1.梯度消失 考虑下图的神经网络&#xff0c;在使用梯度下降法迭代更新W_ki和W_ij时&#xff0c;它们的梯度方向间有什么关系&#xff1f; 它们的梯度关系如下&#xff1a; 从上述两个式子我们大致可以看出&#xff0c;损失函数L关于第h层参数的梯度由两部分组成&#xff1a;…

C++模拟实现——list

一、成员变量及其基本结构 1.基本结构模型 本质是一个带头双向循环列表&#xff0c;将节点进行封装&#xff0c;并且为了方便使用&#xff0c;进行重定义 2.节点的封装定义 template<class T>//定义节点struct list_node{list_node<T>* _prev;list_node<T>…

【标准化封装 SOT系列 】 E SOT-89

〇、SOT-89 这个封装也比较常见&#xff0c;但并不易错。 一、E部分 SOT-89 参数 pin-pin 间距1.5mm body size 4.52.5 二、符合当前标准的典型举例 名称pin 数厂家 body DE矩形 (mm)SOT-894Mini-Circuits – PGA-102 — 4.39/4.62.29/2.59 上图 MiniCircuits 也称DF78…

C# Onnx Yolov8 Detect 路面坑洼检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Onnx…