Learn R Programming

ANTsR (version 0.3.3)

sparseDecom2: Convenience wrapper for 2-view eigenanatomy decomposition.

Description

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.

Usage

sparseDecom2(inmatrix, inmask = c(NA, NA), 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)

Arguments

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

Value

outputs a decomposition of a pair of matrices

Examples

Run this code

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 )

## Not run: 
# # a masked example
# im<-antsImageRead( getANTsRData("r64"))
# dd<- im > 250
# mask<-antsImageClone( im )
# mask[ !dd ]<-0
# mask[ dd ]<-1
# mat1<-matrix( rnorm(sum(dd)*10) , nrow=10 )
# mat2<-matrix( rnorm(sum(dd)*10) , nrow=10 )
# initlist<-list()
# for ( nvecs in 1:2 ) {
#   init1<-antsImageClone( mask )
#   init1[dd]<-rnorm(sum(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
# ## End(Not run)

Run the code above in your browser using DataLab