R 中的 PCA 使用 caret 包与 prcomp PCA

PCA in R using the caret package vs prcomp PCA

我有一个包含 50 多个变量的数据框 data,我正在尝试使用 caret 包在 R 中执行 PCA。

library(caret)
library(e1071)
trans <- preProcess(data,method=c("YeoJohnson", "center","scale", "pca"))

如果我正确理解这段代码,它会应用 YeoJohnson 转换(因为 data 中有零),标准化 data 然后应用 PCA(默认情况下,该函数只保留 PC这是解释数据中至少 95% 的变异所必需的)

但是,当我使用 prcomp 命令时,

  model<-prcomp(data,scale=TRUE)

我可以获得更多输出,例如打印 summary 或执行 plot(data, type = "l"),而我在 trans 中无法执行这些操作。有谁知道 caret 包中是否有任何函数产生与 prcomp 中相同的输出?

您可以使用 predict 函数访问主成分本身。

df <- predict(trans, data)
summary(df)

您不会得到与 prcomp 完全相同的输出:虽然 caret 使用 prcomp(),但它丢弃了原始 prcomp class 对象并且没有 return 它。