sparseDecom2 | R Documentation |
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
)
## Not run:
# 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
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.