将自定义主成分应用于 R 中的数据
Applying customized principal components to data in R
我已经应用 prcomp
函数来获取主成分。我目前使用前 3 个主成分作为变量。我对通过它们表示数据的方式感到满意,因此我决定对另一个数据集应用相同的过程。问题是,如果我为新数据集再做一次 prcomp
,我会得到新的组合,因此会得到新的前因成分。我能否为新数据获得相同的主成分(具有相同的 rotations/loadings)?手动执行这会很乏味(因为我有数百个变量和微小的旋转)而且我似乎无法想出一个智能脚本来做到这一点。这是一个类似于我的数据的可重现示例。
pca1 <- prcomp(USArrests, scale = TRUE)
pca1$rotation ##ideal Principal components
pca2 <- prcomp(iris[,1:4], scale = TRUE)
pca2$rotation ##not ideal
我想要 iris 数据集的主成分,与 ISArrests 数据集中的变量具有相同的旋转。这可能吗?
谢谢,
特征向量是 rotation
矩阵的列 prcomp
returns。
为了旋转另一个数据矩阵,您只需将它与旋转矩阵相乘,并可选择预先缩放它。
你的情况:
result = scale(iris[, 1:4]) %*% pca1$rotation
您可以使用您的原始数据验证这是否有效:
pca1_should_be = scale(USArrests) %*% pca1$rotation
all.equal(pca1_should_be, pca1$x)
# [1] TRUE
我已经应用 prcomp
函数来获取主成分。我目前使用前 3 个主成分作为变量。我对通过它们表示数据的方式感到满意,因此我决定对另一个数据集应用相同的过程。问题是,如果我为新数据集再做一次 prcomp
,我会得到新的组合,因此会得到新的前因成分。我能否为新数据获得相同的主成分(具有相同的 rotations/loadings)?手动执行这会很乏味(因为我有数百个变量和微小的旋转)而且我似乎无法想出一个智能脚本来做到这一点。这是一个类似于我的数据的可重现示例。
pca1 <- prcomp(USArrests, scale = TRUE)
pca1$rotation ##ideal Principal components
pca2 <- prcomp(iris[,1:4], scale = TRUE)
pca2$rotation ##not ideal
我想要 iris 数据集的主成分,与 ISArrests 数据集中的变量具有相同的旋转。这可能吗?
谢谢,
特征向量是 rotation
矩阵的列 prcomp
returns。
为了旋转另一个数据矩阵,您只需将它与旋转矩阵相乘,并可选择预先缩放它。
你的情况:
result = scale(iris[, 1:4]) %*% pca1$rotation
您可以使用您的原始数据验证这是否有效:
pca1_should_be = scale(USArrests) %*% pca1$rotation
all.equal(pca1_should_be, pca1$x)
# [1] TRUE