将自定义主成分应用于R中的数据

时间:2015-02-20 15:25:33

标签: r pca

我已应用prcomp函数来获取主要组件。我目前使用前3个主要组件作为变量。我对通过它们表示数据的方式感到满意,因此我决定对另一个数据集应用相同的程序。问题是,如果我为新数据集做另一个prcomp,我会得到新的组合,因此,新的主要组件。我可以为新数据获得相同的主成分(具有相同的旋转/加载)吗?这样做手动繁琐(因为我有数百个变量和微小的旋转),我似乎无法想到一个智能脚本来做到这一点。这是一个可重现的例子,类似于我的数据。

pca1 <- prcomp(USArrests, scale = TRUE)
pca1$rotation ##ideal Principal components
pca2 <- prcomp(iris[,1:4], scale = TRUE)
pca2$rotation ##not ideal

我想拥有虹膜数据集的主要组件,与ISArrests数据集中的变量具有相同的旋转。那可能吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

特征向量是rotation返回的prcomp矩阵的列。

为了旋转另一个数据矩阵,您只需将其与旋转矩阵相乘,并可选择预先缩放。

在你的情况下:

result = scale(iris[, 1:4]) %*% pca1$rotation

您可以使用原始数据验证这是否有效:

pca1_should_be = scale(USArrests) %*% pca1$rotation
all.equal(pca1_should_be, pca1$x)
# [1] TRUE