将PCA应用于协方差矩阵

时间:2019-04-29 12:49:40

标签: r pca covariance

我很难理解程序中的某些步骤。他们获取坐标数据,找到协方差矩阵,应用PCA,然后从每个特征值的平方根中提取标准偏差。我正在尝试重现此过程,但是我被困在步骤上。

已采取的步骤

数据集由一个矩阵 R 组成,该矩阵包含coordiante巴黎(x(i),y(i)),其中i = 1,...,N是N记录的实例总数。我们将PCA应用于 R 输入数据集的协方差矩阵,并获得以下变量:

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

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

使用这些变量,为每个项目创建图形表示。两个正交线段以坐标数据的平均值为中心。片段的方向由PCA的特征向量驱动,每个片段的长度定义为围绕平均值的一个标准偏差(σ1和σ2),该平均值是通过提取每个特征值的平方根λ1和λ2来计算的。

我的步骤

#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的标准偏差?

2 个答案:

答案 0 :(得分:2)

您不将prcomp应用于协方差矩阵,而是对数据本身进行处理。

result= prcomp(df) 

如果通过缩放表示标准化或标准化,则发生在执行prcomp()之前。有关该过程的更多信息,请参见该过程简介的以下链接:pca on R。那可以带您了解基础知识。要获取sdev,请使用结果对象上的摘要

summary(result)
result$sdev

答案 1 :(得分:1)

您不将 prcomp 应用于协方差矩阵。 scale=T 基于相关矩阵的 PCA 和基于协方差矩阵的 F

df.cor = prcomp(df, scale=TRUE)
df.cov = prcomp(df, scale=FALSE)
相关问题