ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-02-03 14:04:23  阅读:260  来源: 互联网

标签:变量 tecdat 个体 降维 分解 坐标 PCA 向量 cos2


原文链接:http://tecdat.cn/?p=25067 

原文出处:拓端数据部落公众号

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

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

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

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

可视化

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

演示数据集

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

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

X100m
一个数字向量

跳远
一个数字向量

投篮
一个数字向量

高跳
一个数字向量

X400m
数字向量

X110m.hurdle
一个数字向量

飞碟
一个数字向量

撑杆跳高
一个数字向量

绳索
数字向量

X1500米
数字向量

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


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

运动会
水平变量 Decastar OlympicG

简而言之,它包含:

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

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

  1.    
  2.   head(dec)

计算 PCA

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

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

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

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

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

PCA 结果

  1.   # 特征值
  2.   eigva
  3.    
  4.    
  5.   # 变量的结果
  6.   coord # 坐标
  7.   contrib # 对PC的贡献
  8.   cos2 # 代表性的质量
  9.   # 个人的结果
  10.   coord # 坐标
  11.   contrib # 对PC的贡献
  12.   cos2 # 代表性的质量

使用 PCA 进行预测

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

预测个人

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

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

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

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

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

可以使用下面的 R 代码:

  1.    
  2.   # 对补充个体进行居中和标准化
  3.   ined <- scale
  4.   # 个体个体的坐标
  5.    
  6.   rtaton
  7.   ird <- t(apply)
  8.    
  9.    

补充变量

定性/分类变量

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

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

  1.   groups <- as.factor
  2.   fvnd(res.pca
  3.   )

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

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

定量变量

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

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

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

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

PCA 结果背后的理论

变量的 PCA 结果

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

  • var.coord = 载荷 * 分量标准差
  • var.cos2 = var.coord ^ 2
  • var.contrib. 变量对给定主成分的贡献为(百分比):(var.cos2 * 100)/(成分的总 cos2)
  1.    
  2.   # 计算坐标
  3.   #::::::::::::::::::::::::::::::::::::::::
  4.   logs <- rotation
  5.   sdev <- sdev
  6.   vad <- t(apply)

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

  1.   # 计算贡献
  2.   #::::::::::::::::::::::::::::::::::::::::
  3.   comos2 <- apply
  4.   cnrib <- function
  5.   var.otrb <- t(apply)
  6.   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
  1.   # 个人的坐标
  2.   #::::::::::::::::::::::::::::::::::
  3.   inod <- rpa$x
  4.   head(in.c[, 1:4])

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

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


最受欢迎的见解

1.matlab偏最小二乘回归(PLSR)和主成分回归(PCR)

2.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析

3.主成分分析(PCA)基本原理及分析实例

4.基于R语言实现LASSO回归分析

5.使用LASSO回归预测股票收益数据分析

6.r语言中对lasso回归,ridge岭回归和elastic-net模型

7.r语言中的偏最小二乘回归pls-da数据分析

8.r语言中的偏最小二乘pls回归算法

9.R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)

标签:变量,tecdat,个体,降维,分解,坐标,PCA,向量,cos2
来源: https://www.cnblogs.com/tecdat/p/15861423.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有