# NOT RUN {
require(irlba)
nsamp <- 100; nvar <- 300; subset.size <- 25; elbow <- 6
mat <- matrix(rnorm(nsamp*nvar),ncol=nsamp)
#this gives the full solution
pca <- svd(mat,nv=subset.size,nu=0)
pca2 <- irlba(mat,nv=subset.size,nu=0)
# show alternate fits for linear versus 1/x fit
pca.scree.plot((pca2$d^2)[1:subset.size],n.xax=100,add.fit.line=TRUE,
min.dim=min(dim(mat)),linear=TRUE, elbow=6, ylim=c(0,1400))
pca.scree.plot((pca2$d^2)[1:subset.size],n.xax=100,add.fit.line=TRUE,
min.dim=min(dim(mat)),linear=FALSE, elbow=40, ylim=c(0,1400))
subset.size <- 75
pca2 <- irlba(mat,nv=subset.size,nu=0)
pca.scree.plot((pca2$d^2)[1:subset.size],n.xax=100,add.fit.line=TRUE,
min.dim=min(dim(mat)),linear=TRUE, elbow=6, ylim=c(0,1400))
pca.scree.plot((pca2$d^2)[1:subset.size],n.xax=100,add.fit.line=TRUE,
min.dim=min(dim(mat)),linear=FALSE, elbow=40, ylim=c(0,1400))
# }
Run the code above in your browser using DataLab