我已应用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数据集中的变量具有相同的旋转。那可能吗?
谢谢,
答案 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