R语言主成分分析PCA谱分解、奇异值分解预测分析运动员表现数据和降维可视化

article/2025/9/1 18:22:36

最近我们被客户要求撰写关于主成分分析PCA的研究报告,包括一些图形和统计输出。

本文描述了如何 使用R执行主成分分析 ( PCA )。您将学习如何 使用 PCA预测 新的个体和变量坐标。我们还将提供 PCA 结果背后的理论。

 主成分分析PCA降维方法和R语言分析葡萄酒可视化实例

主成分分析PCA降维方法和R语言分析葡萄酒可视化实例

,时长04:30

在 R 中执行 PCA 有两种通用方法:

  • 谱分解 ,检查变量之间的协方差/相关性
  •  检查个体之间的协方差/相关性的奇异值分解

根据 R 的帮助,SVD 的数值精度稍好一些。

可视化

创建基于 ggplot2 的优雅可视化。

演示数据集

我们将使用运动员在十项全能中的表现数据集,这里使用的数据描述了运动员在两项体育赛事中的表现 

数据描述:
一个数据框,包含以下13个变量的27个观测值。

X100m
一个数字向量

跳远
一个数字向量

投篮
一个数字向量

高跳
一个数字向量

X400m
数字向量

X110m.hurdle
一个数字向量

飞碟
一个数字向量

撑杆跳高
一个数字向量

绳索
数字向量

X1500米
数字向量

级别
与等级相对应的数字向量


一个数字向量,指定获得的点数

运动会
水平变量 Decastar OlympicG

简而言之,它包含:

  • 训练个体(第 1 到 23 行)和训练变量(第 1 到 10 列),用于执行主成分分析
  • 预测个体(第 24 至 27 行)和预测变量(第 11 至 13 列),其坐标将使用 PCA 信息和通过训练个体/变量获得的参数进行预测。

加载数据并仅提取训练的个体和变量:

                       
head(dec)

计算 PCA

在本节中,我们将可视化 PCA。

  1. 进行可视化
  1. 计算 PCA
prcomp
  1. 可视化 特征值 (碎石图)。显示每个主成分解释的方差百分比。

  1. 具有相似特征的个人被归为一组。
viz(res )

  1. 变量图。正相关变量指向图的同一侧。负相关变量指向图表的相反两侧。
vzpca(res )

  1. 个体和变量的双标图
fvbiplot(res )

PCA 结果

# 特征值
eigva# 变量的结果
coord # 坐标
contrib # 对PC的贡献
cos2 # 代表性的质量 
# 个人的结果
coord # 坐标
contrib # 对PC的贡献
cos2 # 代表性的质量 

使用 PCA 进行预测

在本节中,我们将展示如何仅使用先前执行的 PCA 提供的信息来预测补充个体和变量的坐标。

预测个人

  1. 数据:第 24 到 27 行和第 1 到 10 列。新数据必须包含与用于计算 PCA 的活动数据具有相同名称和顺序的列(变量)。
#  预测个体的数据
in <- dec[24:27, 1:10]

  1. 预测新个体数据的坐标。使用 R 基函数 predict ():
predict

  1. 包括补充个人在内的个人图表:
# 活跃个体的图谱
fvca_
# 添加补充个体
fdd(p)

个体的预测坐标可以计算如下:

  1. 使用 PCA 的中心和比例对新的个人数据进行中心化和标准化
  2. 通过将标准化值与主成分的特征向量(载荷)相乘来计算预测坐标。

可以使用下面的 R 代码:


# 对补充个体进行居中和标准化
ined <- scale
# 个体个体的坐标rtaton
ird <- t(apply)

补充变量

定性/分类变量

数据集 在第 13 列包含与比赛类型相对应的 补充定性变量 。

定性/分类变量可用于按组为样本着色。分组变量的长度应与活跃个体的数量相同。

groups <- as.factor
fvnd(res.pca)

计算分组变量水平的坐标。给定组的坐标计算为组中个体的平均坐标。

library(magrittr) # 管道函数%>%。
# 1. 单个坐标
getind(res)
# 2. 组的坐标
coord %>% >as_data_frame%>%selec%>%mutate%>%group_b %>%

定量变量

数据:11:12 栏。应与活跃个体的数量相同(此处为 23)

quup <- dec[1:23, 11:12]
head(quup .sup)

给定定量变量的坐标被计算为定量变量与主成分之间的相关性。


# 预测坐标并计算cos2
quaord <- cor
quaos2 <- qord^2
# 变量的图形,包括补充变量
p <- fviar(reca)
fvdd(p, quord, color ="blue", geom="arrow")

PCA 结果背后的理论

变量的 PCA 结果

在这里,我们将展示如何计算变量的 PCA 结果:坐标、cos2 和贡献:

  • var.coord = 载荷 * 分量标准差
  • var.cos2 = var.coord ^ 2
  • var.contrib. 变量对给定主成分的贡献为(百分比):(var.cos2 * 100)/(成分的总 cos2)

# 计算坐标
#::::::::::::::::::::::::::::::::::::::::
logs <- rotation
sdev <- sdev
vad <- t(apply) 

# 计算 Cos2
#::::::::::::::::::::::::::::::::::::::::
vaos2 <- vard^2
head(vars2[, 1:4])

# 计算贡献
#::::::::::::::::::::::::::::::::::::::::
comos2 <- apply
cnrib <- function
var.otrb <- t(apply)
head(vaib[, 1:4])

PCA 结果

  • ind.coord = res.pca$x
  • 个人的 Cos2。两步:
    • 计算每个个体与 PCA 重心之间的平方距离:d2 = [(var1_ind_i - mean_var1)/sd_var1]^2 + …+ [(var10_ind_i - mean_var10)/sd_var10]^2 + …+..
    • 将 cos2 计算为 ind.coord^2/d2
  • 个人对主成分的贡献:100 * (1 / number_of_individuals)*(ind.coord^2 / comp_sdev^2)。请注意,每列所有贡献的总和为 100
# 个人的坐标
#::::::::::::::::::::::::::::::::::
inod <- rpa$x
head(in.c[, 1:4])

# 个人的Cos2
#:::::::::::::::::::::::::::::::::
# 1.个体与#PCA重心之间距离的平方
# PCA重心的平方
ceer<- center
scle<- scaled <- apply(decaive,1,gnce, center, scale)
# 2. 计算cos2。每一行的总和为1
is2 <- apply(inrd, 2, cs2, d2)
head(is2[, 1:4])

# 个人的贡献
#:::::::::::::::::::::::::::::::inib <- t(apply(iord, 1, conib, sdev, nrow))
head(inib[, 1:4])



http://chatgpt.dhexx.cn/article/DvqYdDbY.shtml

相关文章

【矩阵论】2. 矩阵分解——单阵谱分解

矩阵论 1. 准备知识——复数域上矩阵,Hermite变换) 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵&#xff0c;二次型&#xff0c;矩阵合同&#xff0c;正定阵&#xff0c;幂0阵&#xff0c;幂等阵&#xff0c;矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值…

可对角化和谱分解的区别

内容为个人理解&#xff0c;才疏学浅&#xff0c;如有错误&#xff0c;欢迎指正。 谱分解定理&#xff1a;向量空间V上的任意正规算子M&#xff0c;在V的某个标准正交基下可以对角化。反之&#xff0c;任意可对角化的算子都是正规的。 理解&#xff1a; &#xff08;1&#x…

R语言矩阵特征值分解(谱分解)和奇异值分解(SVD)特征向量分析有价证券数据

最近我们被客户要求撰写关于特征值分解的研究报告&#xff0c;包括一些图形和统计输出。 R语言是一门非常方便的数据分析语言&#xff0c;它内置了许多处理矩阵的方法。 作为数据分析的一部分&#xff0c;我们要在有价证券矩阵的操作上做一些工作&#xff0c;只需几行代码。 …

【矩阵论】2. 矩阵分解——正规谱分解

矩阵论 1. 准备知识——复数域上矩阵,Hermite变换) 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵&#xff0c;二次型&#xff0c;矩阵合同&#xff0c;正定阵&#xff0c;幂0阵&#xff0c;幂等阵&#xff0c;矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值…

【线性代数】矩阵的特征值分解(对角化、谱分解)

目录 1 前言2 矩阵的特征值分解2.1 从定义的角度理解2.2 从变换的角度理解(来自参考文献[3]) 3 对角矩阵&#xff08;补充&#xff09;3.1 对角矩阵的定义3.2 对角矩阵线性变换的几何意义 4 矩阵对角化5 相似矩阵与特征值6 参考文献 1 前言 矩阵的特征值分解又可以称作矩阵的对…

矩阵的谱分解 (详细推导步骤~~~特征值分解特征向量

所谓矩阵的分解&#xff0c;就是将一个矩阵写成结构比较简单的或性质比较熟悉的另一些矩阵的乘积。矩阵的分解方法有很多种&#xff0c;包括三角分解、QR&#xff08;正交三角&#xff09;分解、最大秩分解、奇异值分解和谱分解&#xff0c;所有这些分解在数值代数和最优化问题…

c语言-gotoxy实现先全部输出再做全部输入操作

需要用到的头文件&#xff1a; #include<windows.h> #include <iostream>代码&#xff1a; gotoxy(a,b)光标控制函数 a为行&#xff0c;b为列&#xff0c;坐标原点在左上角向右是行正方向&#xff0c;向下为列正方向 中文符号汉字在列方向为2个空间&#xff0c;英…

C语言 时钟模拟(gotoxy函数的运用)

时钟模拟&#xff0c;运用gotoxy()函数和Sleep()函数。 效果&#xff1a; #include <stdio.h> #include <windows.h> #include <time.h> #define XHOUR 40 //打印小时的起始x坐标&#xff0c;即a&#xff0c;g交点横坐标 #define YHOUR 27 #define HOUR 1 …

一些神奇的小函数(一)——gotoxy篇

一、gotoxy 1.作用&#xff08;1&#xff09;控制输出的位置① 样例 2.实现&#xff08;1&#xff09;c版 1.作用 &#xff08;1&#xff09;控制输出的位置 ① 样例 : 在代码中写上一句gotoxy(1,1)&#xff0c;然后cout<<“噢&#xff01;这个函数真有用&#xff01;…

Matlab sim函数的用法

一、引言 最近用Simulink做仿真的时候&#xff0c;需要从m文件里运行Simulink模型&#xff0c;而且需要在m文件中传递一些参数到Simulink模型&#xff0c;也需要将Simulink模型的运行结果发送回m文件&#xff0c;所以要用到sim函数。 查看了sim函数的help文档&#xff0c;并百…

CUDA10.0官方文档的翻译与学习之硬件实现

背景 在之前的文章中&#xff0c;我翻译了cuda10.0官方文档的前三章&#xff0c;这次就来翻译第四章——硬件实现 英伟达GPU架构通过由多线程的流式多处理器(SM)组成的可变数组编译&#xff0c;当一个主机CPU上的cuda程序调用了一个核网格&#xff0c;网格内的线程块将会被枚…

近距离看GPU计算(3)

在先前文章《近距离看GPU计算&#xff08;2&#xff09;》中&#xff0c;我们谈到现代GPU发展出SIMT(Single Instruction Multiple Thread)的执行结构&#xff0c;硬件线程池的线程们有相对独立的运行上下文&#xff0c;以Warp为单位分发到一组处理单元按SIMD的模式运行。这些W…

CPU线程与超线程技术

文章目录 一、CPU线程与OS线程1. CPU中的thread2. OS中的thread 二、HT/SMT技术1. 定义2. 原理3. 带来的问题 三、SIMT与SIMD1. SIMT2. SIMD3. 对比 一、CPU线程与OS线程 1. CPU中的thread CPU中的线程来自同步多线程&#xff08;SMT&#xff0c;Simultaneous Multi-threadin…

GPU 软硬件基本概念

术语: single instruction, multiple thread (SIMT)&#xff1a; a single instruction is executed on several function units in parallel GPU的硬件结构中与CUDA相关的几个概念&#xff1a;thread block grid warp sp sm streaming processor(sp): 最基本的处理单元&…

GPU异构计算基础知识

CUDA Toolkit Documentation (nvidia.com) host CPU和内存 (host memory)Device GPU和显存 (device memory) SIMT模型与SIMD模型的区别 SIMD(Single Instruction Multi Data&#xff0c;单指令多数据)模型要求同一个向量中的所有元素要在统一的同步组中一起执行&#xff0c;…

GPU硬件架构以及运行机制笔记

本文是对向往大神的文章的一个笔记。 想阅读原文章移步博客园搜索向往 原文章比较长&#xff0c;这是一个精简和自己的一些理解 这篇文章要带着下面的问题去看 1、GPU是如何与CPU协调工作的&#xff1f; 2、GPU也有缓存机制吗&#xff1f;有几层&#xff1f;它们的速度差异多…

4. CUDA编程手册中文版---硬件实现

第四章 硬件实现 更多精彩内容&#xff0c;请扫描下方二维码或者访问https://developer.nvidia.com/zh-cn/developer-program 来加入NVIDIA开发者计划 NVIDIA GPU 架构围绕可扩展的多线程流式多处理器 (SM: Streaming Multiprocessors) 阵列构建。当主机 CPU 上的 CUDA 程序调…

SMIT介绍

System Management Interface Tool(系统管理界面工具) 软件安装与维护&#xff08;Sofeware Installation and Maintenance&#xff09; 软件许可管理&#xff08;Sofeware License Management&#xff09; 版本管理&#xff08;Manage Editions&#xff09; 设备管理&#…

GPU硬件结构和编程模型(源于nvidia的CUDA文档)

GPU的硬件结构 GPU通过一个可扩展的多线程流式多处理器(SMs)构建。一个multiprocessor可以在同一时间处理上百个线程。为了管理这些线程&#xff0c;使用一个特殊的结构SIMT。利用单线程中指令级的并行&#xff0c;以及同步硬件多线程实现的广泛线程级并行性。 SIMT Architec…

实例分割文献阅读笔记(一)SimT

阅读 SimT: Handling Open-set Noise for Domain Adaptive Semantic Segmentation 原作者知乎文章链接&#xff1a;知乎文章 GitHub链接&#xff1a;开源数据 SimT (CVPR22)&#xff1a;为了解决域自适应&#xff08;包含UDA和SFDA&#xff09;任务中目标域数据伪标签中存在…