我正在为大型电子表格做一些PCA分析,我正在根据负载选择我的PC。 据我所知,由于我的数据有不同的单位,因此在进行PCA分析之前必须进行标准化。
函数prcomp()
是否固有地执行标准化?
我正在阅读prcomp()
帮助文件,并在prcomp()
的参数下看到了这一点:
scale. a logical value indicating whether the variables should be scaled to have
unit variance before the analysis takes place. The default is FALSE for
consistency with S, but in general scaling is advisable. Alternatively, a
vector of length equal the number of columns of x can be supplied. The
value is passed to scale.
“将变量缩放到单位方差”是否意味着标准化?
我目前正在使用此命令:
prcomp(formula = ~., data=file, center = TRUE, scale = TRUE, na.action = na.omit)
够了吗?或者我应该单独进行标准化?
谢谢,
答案 0 :(得分:5)
是的,scale = TRUE
将导致所有变量被缩放为具有单位方差(即方差为1,因此标准差为1)。这是“标准化”的通用定义,但还有其他方法可以做到等等。center = TRUE
意味着数据的中心,即从变量的每次观察中减去变量的平均值。
当您执行此操作(scale = TRUE, center = TRUE
)而不是PCA位于数据集的协方差矩阵时,它位于相关矩阵上。因此,PCA找到解释变量之间相关性的轴而不是它们的协方差。
答案 1 :(得分:3)
如果您通过标准化来表示每列除以其标准差,并且减去每列的平均值,那么使用scale = TRUE
和center = TRUE
就是您想要的。