svd(x, nu=min(n,p), nv=min(n,p))
x
| a matrix whose SVD decomposition is to be computed. |
nu
|
the number of left eigenvectors to be computed.
This must be one of 0, nrow(x) and ncol(x).
|
nv
|
the number of right eigenvectors to be computed.
This must be one of 0, and ncol(x).
|
svd provides an interface to the LINPACK routine DSVDC.
The singular value decompostion plays an important role in many
statistical techniques.X = U D V
, where U and V are orthogonal, and D is a diagonal matrix with the singular values D[i,i].The components in the returned value correspond directly to the values returned by DSVDC.
d
|
a vector containing the singular values of x.
|
u
|
a matrix whose columns contain the left eigenvectors of x.
|
v
|
a matrix whose columns contain the right eigenvectors of x.
|
eigen, qr.
hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }
str(X <- hilbert(9)[,1:6])
str(s <- svd(X))
Eps <- 10 * .Machine$double.eps
all(abs(diag(s$d) - t(s$u)%*% X %*% s$v) < Eps)# TRUE: D = U' X V
X <- cbind(1,1:7)
str(s <- svd(X))
all(abs(diag(s$d) - t(s$u)%*% X %*% s$v) < Eps)# TRUE: D = U' X V