我试图计算PCA分数,并且部分算法说:subtract the mean of the matrix, divided by the standard deviation
我有以下2x2矩阵:A = [1 3; 2 4]
让我们在Matlab中说,我会做以下事情:
mean(A)
- >这给了我一个2个值的矢量(基于列),所以.. 1.5和3.5。在这个例子中,这对我来说是正确的。
然而,在R中,当计算平均值mean(A)
时,均值只是一个值。标准偏差也是如此。
所以我的问题是,哪个是对的?出于此功能的目的(在算法中):
function(x) {(x - mean(x))/sd(x)
(http://strata.uga.edu/software/pdf/pcaTutorial.pdf)
我应该根据Matlab的两个值减去平均值还是按R减去1个值?
由于
答案 0 :(得分:2)
对于矩阵或数据帧一次性执行此操作的R命令是scale()
> A = matrix(c(1, 3, 2, 4), 2)
> scale(A)
[,1] [,2]
[1,] -0.7071068 -0.7071068
[2,] 0.7071068 0.7071068
attr(,"scaled:center")
[1] 2 3
attr(,"scaled:scale")
[1] 1.414214 1.414214
这是由专栏完成的。当你使用'mean'时,你获得了所有四个数字的平均值,而不是列数。如果您正在进行PCA计算,那就是不你想要的东西。