首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PCA在协方差矩阵中的应用

PCA在协方差矩阵中的应用
EN

Stack Overflow用户
提问于 2019-04-29 12:49:39
回答 2查看 684关注 0票数 0

我很难理解程序中的一些步骤。它们取坐标数据,找出协方差矩阵,应用主成分分析,然后从每个特征值的平方根中提取标准差。我试图重新生产这一过程,但我被困在台阶上。

所采取的步骤

该数据集由一个矩阵R组成,该矩阵包含巴黎的辅助性,(x(i),y(i))与i=1,.,N为记录的实例总数。将主成分分析应用于R输入数据集的协方差矩阵,得到以下变量:

a)新坐标系的主要组成部分,特征向量u和v,以及

( b)每个主成分解释的总变异性对应的特征值(λ1和λ2)。

使用这些变量,为每个项创建了一个图形表示。两个正交段集中在坐标数据的平均值上。每段的方向由主成分分析的特征向量驱动,每段的长度定义为均值附近的一个标准差(σ1和σ2),通过提取每个特征值λ1和λ2的平方根来计算。

My Steps

代码语言:javascript
运行
复制
#reproducable data
set.seed(1)
x<-rnorm(10,50,4)
y<-rnorm(10,50,7)
# Note my data is not perfectly distirbuted in this fashion
df<-data.frame(x,y) # this is my R matrix

covar.df<-cov(df,use="all.obs",method='pearson') # this is my covariance matrix
pca.results<-prcomp(covar.df) # this applies PCA to the covariance matrix
pca.results$sdev # these are the standard deviations of the principal components
                 # which is what I believe I am looking for. 

这是我陷入困境的原因,因为我不确定我是试图从sdev输出prcomp()中获取数据,还是应该首先缩放数据。它们的规模都是一样的,所以我看不出有什么问题。

我的第二个问题是如何提取xy方向的标准差?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-29 14:05:23

不对协方差矩阵应用prcomp,而是对数据本身应用prcomp。

代码语言:javascript
运行
复制
result= prcomp(df) 

如果通过缩放意味着规范化或标准化,那么在执行prcomp()之前就会发生这种情况。有关该过程的更多信息,请参见该过程的介绍性链接:R上的pca。能让你了解基本的东西。要获得sdev,请使用结果对象上的摘要

代码语言:javascript
运行
复制
summary(result)
result$sdev
票数 2
EN

Stack Overflow用户

发布于 2021-03-29 14:50:33

不将prcomp应用于协方差矩阵。scale=T将主成分分析建立在相关矩阵上,F基于协方差矩阵。

代码语言:javascript
运行
复制
df.cor = prcomp(df, scale=TRUE)
df.cov = prcomp(df, scale=FALSE)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55903778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档