如何计算与 $x 中的 prcomp() 返回的结果相同的主成分分数?
How can I compute the principal component scores with the same result as returned by prcomp() in $x?
当我尝试计算主成分 (PC) 分数(即在 PC space 中投影的数据集)时,我得到的结果与 prcomp()
在 $x
其结果的属性。我将数据居中并缩放。
我运行prcomp()
作为
pca.result = prcomp(USArrests, scale=TRUE)
然后我可以访问想要的 PC 分数作为
pca.result$x # 1
从文档中,我理解了上面的中心和缩放数据,然后将它们乘以旋转矩阵(a.k.a。变量加载,a.k.a。特征向量)。
我试图通过自己投影(旋转)数据集来重现上面的结果,如:
((as.matrix(USArrests)-pca.result$center)/pca.result$scale) %*% pca.result$rotation # 2
但是我从 # 2
得到的结果与我从 # 1
得到的结果不同。
我应该如何更正 # 2
才能得到与 # 1
相同的结果?
这个比较简单。只需使用 score()
函数计算标准化数据:
pcscores <- scale(USArrests) %*% pca.result$rotation
如果您想使用pca.result
中的统计信息:
means <- pca.result$center
sdevs <- pca.result$scale
center <- sweep(USArrests, 2, means)
zscores <- sweep(center, 2, sdevs, "/")
pcscores2 <- as.matrix(zscores) %*% pca.result$rotation
您的方法减去每列的均值,而不是跨列。
当我尝试计算主成分 (PC) 分数(即在 PC space 中投影的数据集)时,我得到的结果与 prcomp()
在 $x
其结果的属性。我将数据居中并缩放。
我运行prcomp()
作为
pca.result = prcomp(USArrests, scale=TRUE)
然后我可以访问想要的 PC 分数作为
pca.result$x # 1
从文档中,我理解了上面的中心和缩放数据,然后将它们乘以旋转矩阵(a.k.a。变量加载,a.k.a。特征向量)。 我试图通过自己投影(旋转)数据集来重现上面的结果,如:
((as.matrix(USArrests)-pca.result$center)/pca.result$scale) %*% pca.result$rotation # 2
但是我从 # 2
得到的结果与我从 # 1
得到的结果不同。
我应该如何更正 # 2
才能得到与 # 1
相同的结果?
这个比较简单。只需使用 score()
函数计算标准化数据:
pcscores <- scale(USArrests) %*% pca.result$rotation
如果您想使用pca.result
中的统计信息:
means <- pca.result$center
sdevs <- pca.result$scale
center <- sweep(USArrests, 2, means)
zscores <- sweep(center, 2, sdevs, "/")
pcscores2 <- as.matrix(zscores) %*% pca.result$rotation
您的方法减去每列的均值,而不是跨列。