svds {rARPACK}R Documentation

Find the Largest k Singular Values/Vectors of a Matrix

Description

This function is a simple wrapper of the svds() function in the RSpectra package. Also see the documentation there.

Given an m by n matrix A, function svds() can find its largest k singular values and the corresponding singular vectors. It is also called the Truncated Singular Value Decomposition since it only contains a subset of the whole singular triplets.

Currently svds() supports matrices of the following classes:

matrix The most commonly used matrix type, defined in base package.
dgeMatrix General matrix, equivalent to matrix, defined in Matrix package.
dgCMatrix Column oriented sparse matrix, defined in Matrix package.
dgRMatrix Row oriented sparse matrix, defined in Matrix package.
dsyMatrix Symmetrix matrix, defined in Matrix package.

Note that when A is symmetric, SVD reduces to eigen decomposition, so you may consider using eigs() instead.

Usage

svds(A, k, nu = k, nv = k, opts = list(), ...)

Arguments

A

The matrix whose truncated SVD is to be computed.

k

Number of singular values requested.

nu

Number of left singular vectors to be computed. This must be between 0 and k.

nv

Number of right singular vectors to be computed. This must be between 0 and k.

opts

Control parameters related to the computing algorithm. See Details below.

...

Currently not used.

Details

The opts argument is a list that can supply any of the following parameters:

ncv

Number of Lanzcos basis vectors to use. More vectors will result in faster convergence, but with greater memory use. ncv must be satisfy k < ncv \le p where p = min(m, n). Default is min(p, max(2*k+1, 20)).

tol

Precision parameter. Default is 1e-10.

maxitr

Maximum number of iterations. Default is 1000.

Value

A list with the following components:

d

A vector of the computed singular values.

u

An m by nu matrix whose columns contain the left singular vectors. If nu == 0, NULL will be returned.

v

An n by nv matrix whose columns contain the right singular vectors. If nv == 0, NULL will be returned.

nconv

Number of converged singular values.

niter

Number of iterations used.

nops

Number of matrix-vector multiplications used.

Author(s)

Yixuan Qiu <http://statr.me>

See Also

eigen(), svd(), eigs().

Examples

m = 100
n = 20
k = 5
set.seed(111)
A = matrix(rnorm(m * n), m)

svds(A, k)
svds(t(A), k, nu = 0, nv = 3)

## Sparse matrices
library(Matrix)
A[sample(m * n, m * n / 2)] = 0
Asp1 = as(A, "dgCMatrix")
Asp2 = as(A, "dgRMatrix")

svds(Asp1, k)
svds(Asp2, k, nu = 0, nv = 0)


[Package rARPACK version 0.11-0 Index]