我无法理解为什么会这样。我有一个数据矩阵(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
因此,对于相同数据的较小尺寸给出正确,但我无能为力,为什么它在整个数据集上完成时给出不同的旋转矩阵。
答案 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
被定义为nv
(nv = min(n, p)
和n
之间的最小值),其中{{1} }和p
。
n = row(x)
和p = ncol(x)
。然后n = 64
和p = 6830
是6830x64(p x nv)矩阵nv = 64
和pr.out$rotation
。然后n = 10
和p = 10
是10x10(p x nv)矩阵