具有不同尺寸的主成分旋转矩阵

时间:2015-05-15 01:42:54

标签: r pca

我无法理解为什么会这样。我有一个数据矩阵(64x6830)。当我做以下

pr.out=prcomp(data,scale=TRUE)
dim(pr.out$rotation)
# [1] 6830   64

我无法理解为什么旋转矩阵不是6830x6830。当我采用这样的数据子集时:

data1=data[1:nrow(data),1:10]
pr.data=prcomp(data1,scale=TRUE)
dim(pr.data$rotation)
# [1] 10 10 

因此,对于相同数据的较小尺寸给出正确,但我无能为力,为什么它在整个数据集上完成时给出不同的旋转矩阵。

1 个答案:

答案 0 :(得分:0)

函数DayOfTheWeek基于函数prcomp

svd

svd(x, nu = min(n, p), nv = min(n, p), LINPACK = FALSE) ,我们看到:

edit(stats:::prcomp.default)

这意味着不计算左奇异向量。因此,对于s <- svd(x, nu = 0) prcomp仅返回svd"a vector containing the singular values of x, of length min(n, p)"

如果我们回到"a matrix whose columns contain the right singular vectors of x [...]. Dimension c(p, nv)"的电话,svd被定义为nvnv = min(n, p)n之间的最小值),其中{{1} }和p

  1. 如果是&#34;数据&#34;,n = row(x)p = ncol(x)。然后n = 64p = 6830是6830x64(p x nv)矩阵
  2. 如果是&#34; data1&#34;,nv = 64pr.out$rotation。然后n = 10p = 10是10x10(p x nv)矩阵