我很难理解程序中的一些步骤。它们取坐标数据,找出协方差矩阵,应用主成分分析,然后从每个特征值的平方根中提取标准差。我试图重新生产这一过程,但我被困在台阶上。
所采取的步骤
该数据集由一个矩阵R组成,该矩阵包含巴黎的辅助性,(x(i),y(i))与i=1,.,N为记录的实例总数。将主成分分析应用于R输入数据集的协方差矩阵,得到以下变量:
a)新坐标系的主要组成部分,特征向量u和v,以及
( b)每个主成分解释的总变异性对应的特征值(λ1和λ2)。
使用这些变量,为每个项创建了一个图形表示。两个正交段集中在坐标数据的平均值上。每段的方向由主成分分析的特征向量驱动,每段的长度定义为均值附近的一个标准差(σ1和σ2),通过提取每个特征值λ1和λ2的平方根来计算。
My Steps
#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
方向的标准差?
发布于 2019-04-29 14:05:23
不对协方差矩阵应用prcomp,而是对数据本身应用prcomp。
result= prcomp(df)
如果通过缩放意味着规范化或标准化,那么在执行prcomp()之前就会发生这种情况。有关该过程的更多信息,请参见该过程的介绍性链接:R上的pca。能让你了解基本的东西。要获得sdev,请使用结果对象上的摘要
summary(result)
result$sdev
发布于 2021-03-29 14:50:33
不将prcomp应用于协方差矩阵。scale=T将主成分分析建立在相关矩阵上,F基于协方差矩阵。
df.cor = prcomp(df, scale=TRUE)
df.cov = prcomp(df, scale=FALSE)
https://stackoverflow.com/questions/55903778
复制相似问题