规范化所有变量与使用 R 中 prcomp 中的 scale=TRUE 选项

机器算法验证 r 主成分分析
2022-04-01 10:22:06

和有什么区别

  1. 标准化变量并进行 PCA;
  2. 在R中的函数中使用scale=TRUE选项(不规范化变量)prcomp
2个回答

没有不同。debug(prcomp)运行前输入prcomp函数的第三行显示:x <- scale(x, center = center, scale = scale.); IE。如果您scale = TRUE在函数调用期间设置,您将在函数内缩放,或者您将由您最初完成缩放。

话虽如此,通常在应用 PCA 时,缩放变量是一个好主意。否则,某些变量的大小决定了样本中变量之间的关联。除非您的所有变量都以相同的比例记录和/或变量大小的差异感兴趣,否则我建议您在 PCA 之前对数据进行标准化。此问题已在 CV 中多次重新讨论,例如。1、2、3_ _ _ _

使用相关矩阵等同于标准化每个变量(平均为 0,标准差为 1)。一般来说,有和没有标准化的 PCA 会给出不同的结果。特别是当尺度不同时。

scale=TRUE 基于相关矩阵的 PCA 和基于协方差矩阵的 FALSE

例如:

#my data
set.seed(1)
x<-rnorm(10,50,4)
y<-rnorm(10,50,7)
df<-data.frame(x,y) 

PCA based on covariance matrix and on Correlation matrix
PCA_df.cov <- prcomp(df, scale=FALSE)
PCA_df.corr <- prcomp(df, scale=TRUE)