sparseDecom2.Rd
Decomposes two matrices into paired sparse eigenevectors to maximize canonical correlation. Note: we do not scale the matrices internally. We leave scaling choices to the user.
sparseDecom2( inmatrix, inmask = list(NULL, NULL), sparseness = c(0.01, 0.01), nvecs = 3, its = 20, cthresh = c(0, 0), statdir = NA, perms = 0, uselong = 0, z = 0, smooth = 0, robust = 0, mycoption = 0, initializationList = list(), initializationList2 = list(), ell1 = 10, priorWeight = 0, verbose = FALSE, rejector = 0, maxBased = FALSE )
inmatrix | input as inmatrix=list(mat1,mat2). n by p input matrix and n by q input matrix , spatial variable lies along columns. |
---|---|
inmask | optional pair of antsImage masks |
sparseness | a c(.,.) pair of values e.g c(0.01,0.1) enforces an unsigned 99 percent and 90 percent sparse solution for each respective view |
nvecs | number of eigenvector pairs |
its | number of iterations, 10 or 20 usually sufficient |
cthresh | cluster threshold pair |
statdir | temporary directory if you want to look at full output |
perms | number of permutations. settings permutations greater than 0 will estimate significance per vector empirically. For small datasets, these may be conservative. p-values depend on how one scales the input matrices. |
uselong | enforce solutions of both views to be the same - requires matrices to be the same size |
z | subject space (low-dimensional space) sparseness value |
smooth | smooth the data (only available when mask is used) |
robust | rank transform input matrices |
mycoption | enforce 1 - spatial orthogonality, 2 - low-dimensional orthogonality or 0 - both |
initializationList | initialization for first view |
initializationList2 | initialization for 2nd view |
ell1 | gradient descent parameter, if negative then l0 otherwise use l1 |
priorWeight | Scalar value weight on prior between 0 (prior is weak) and 1 (prior is strong). Only engaged if initialization is used |
verbose | activates verbose output to screen |
rejector | rejects small correlation solutions |
maxBased | boolean that chooses max-based thresholding |
outputs a decomposition of a pair of matrices
Avants BB
mat<-replicate(100, rnorm(20)) mat2<-replicate(100, rnorm(20)) mat<-scale(mat) mat2<-scale(mat2) mydecom<-sparseDecom2( inmatrix = list(mat,mat2), sparseness=c(0.1,0.3), nvecs=3, its=3, perms=0) wt<-0.666 mat3<-mat*wt+mat2*(1-wt) mydecom<-sparseDecom2( inmatrix=list(mat,mat3), sparseness=c(0.2,0.2), nvecs=5, its=10, perms=5 ) if (FALSE) { # a masked example im<-antsImageRead( getANTsRData("r64")) mask<-thresholdImage( im, 250, Inf ) dd = sum( mask == 1 ) mat1<-matrix( rnorm(dd*10) , nrow=10 ) mat2<-matrix( rnorm(dd*10) , nrow=10 ) initlist<-list() for ( nvecs in 1:2 ) { init1<-antsImageClone( mask ) init1[ mask == 1 ]<-rnorm( dd ) initlist<-lappend( initlist, init1 ) } ff<-sparseDecom2( inmatrix=list(mat1,mat2), inmask=list(mask,mask), sparseness=c(0.1,0.1) ,nvecs=length(initlist) , smooth=1, cthresh=c(0,0), initializationList = initlist ,ell1 = 11 ) ### now SNPs ### rf<-usePkg('randomForest') bg<-usePkg('BGLR') if ( bg & rf ) { data(mice) snps<-mice.X numericalpheno<-as.matrix( mice.pheno[,c(4,5,13,15) ] ) numericalpheno<-residuals( lm( numericalpheno ~ as.factor(mice.pheno$Litter) ) ) nfolds<-6 train<-sample( rep( c(1:nfolds), 1800/nfolds ) ) train<-( train < 4 ) snpd<-sparseDecom2( inmatrix=list( ( as.matrix(snps[train,]) ), numericalpheno[train,] ), nvecs=20, sparseness=c( 0.001, -0.5 ), its=3, ell1=0.1 , z=-1 ) for ( j in 3:3) { traindf<-data.frame( bmi=numericalpheno[ train,j] , snpse=as.matrix( snps[train, ] ) %*% as.matrix( snpd$eig1 ) ) testdf <-data.frame( bmi=numericalpheno[!train,j] , snpse=as.matrix( snps[!train,] ) %*% as.matrix( snpd$eig1 ) ) myrf<-randomForest( bmi ~ . , data=traindf ) preddf<-predict(myrf, newdata=testdf ) print( cor.test(preddf, testdf$bmi ) ) plot( preddf, testdf$bmi ) } } # check bg and rf }