我很难理解程序中的某些步骤。他们获取坐标数据,找到协方差矩阵,应用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()
还是应该首先扩展数据。它们都处于相同的规模,因此我看不到问题所在。
我的第二个问题是如何提取x
和y
的标准偏差?
答案 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)