fill.SVDimpute {filling} | R Documentation |
Iterative Regression against Right Singular Vectors
Description
Singular Value Decomposition (SVD) is the best low-rank approximation of a given matrix.
fill.SVDimpute
exploits such idea. First, it starts with simple filling using
column mean values for filling. Second, it finds SVD of a current matrix. Then,
each row vector is regressed upon top-k
right singular vectors. Missing entries are
then filled with predicted estimates.
Usage
fill.SVDimpute(A, k = ceiling(ncol(A)/2), maxiter = 100, tol = 0.01)
Arguments
A |
an |
k |
the number of regressors to be used. |
maxiter |
maximum number of iterations to be performed. |
tol |
stopping criterion for an incremental progress. |
Value
a named list containing
- X
an
(n\times p)
matrix after completion.
References
Troyanskaya O, Cantor M, Sherlock G, Brown P, Hastie T, Tibshirani R, Botstein D, Altman RB (2001). “Missing value estimation methods for DNA microarrays.” Bioinformatics, 17(6), 520–525. ISSN 1367-4803.
See Also
Examples
## Not run:
## load image data of 'lena128'
data(lena128)
## transform 5% of entries into missing
set.seed(5)
A <- aux.rndmissing(lena128, x=0.05)
## apply the method with 3 different number of regressors
fill1 <- fill.SVDimpute(A, k=5)
fill2 <- fill.SVDimpute(A, k=25)
fill3 <- fill.SVDimpute(A, k=50)
## visualize only the last ones from each run
opar <- par(no.readonly=TRUE)
par(mfrow=c(2,2), pty="s")
image(A, col=gray((0:100)/100), axes=FALSE, main="5% missing")
image(fill1$X, col=gray((0:100)/100), axes=FALSE, main="5 regressors")
image(fill2$X, col=gray((0:100)/100), axes=FALSE, main="25 regressors")
image(fill3$X, col=gray((0:100)/100), axes=FALSE, main="50 regressors")
par(opar)
## End(Not run)