##################################### ## Load stuff for testing purposes ## ##################################### library(hdi) data(riboflavin) x <- riboflavin[,-1] y <- riboflavin[,1] dim(x) ##- [1] 71 4088 length(y) ##- [1] 71 doExtras <- interactive() # i.e., FALSE for routine R CMD check p. <- if(doExtras) 50 else 16 # smaller for speed p. x.use <- x[,1:p.] ###################### ## Lasso projection ## ###################### ## set seed because of cv suppressWarnings(RNGversion("3.5.0")) set.seed(3) ; fit.lasso <- lasso.proj(x = x.use, y = y) ## Check standardization, i.e., equivariance : suppressWarnings(RNGversion("3.5.0")) set.seed(3) ; fit.lasso2 <- lasso.proj(x = 2 + 4 * x.use, y = y) ## verbose ncores <- if(.Platform$OS.type == "windows") 1 else getOption("mc.cores", 2L) suppressWarnings(RNGversion("3.5.0")) set.seed(3) ; fit.tmp <- lasso.proj(x = x.use, y = y, verbose = TRUE) suppressWarnings(RNGversion("3.5.0")) set.seed(3) ; fit.tmp2 <- lasso.proj(x = x.use, y = y, parallel = TRUE, ncores = ncores, verbose = TRUE) ## confidence intervals ci.lasso <- confint(fit.lasso, level = 0.95) ci.lasso2 <- confint(fit.lasso2, level = 0.95) stopifnot( all.equal(fit.lasso$pval, fit.lasso2$pval) , all.equal(c(0,0), range(fit.lasso$bhat / fit.lasso2$bhat - 4)) , all.equal(ci.lasso, ci.lasso2 * 4) , TRUE) if(!doExtras) { stopifnot( all.equal(as.vector(fit.lasso$bhat), c(0.54650099, -0.64364814, 0.079821945, 0.26406221, -0.21405501, -0.63576549, -0.095448048, 0.40801737, -1.2194818, -0.11113313, 0.3474404, 1.1425587, -0.54460967, 0.45298509, -0.31922868, 0.42184791), tol = 4e-7)# 1e-8 , all.equal(unname(ci.lasso), matrix(c(-0.186587, -1.88574, -1.03822, -0.274364, -0.808168, -1.30643, -0.994648, -0.446016, -2.29657, -1.23525, -0.728214, 0.256838, -1.297, -0.416467, -1.16564, -0.593977, 1.27959, 0.598448, 1.19786, 0.802489, 0.380058, 0.0348979, 0.803752, 1.26205, -0.142394, 1.01298, 1.42309, 2.02828, 0.207783, 1.32244, 0.527183, 1.43767), 16, 2), tol = 5e-5) ) } ################################## ## Code of example of help page ## ################################## x <- matrix(rnorm(100 * 10), nrow = 100, ncol = 10) y <- x[,1] + x[,2] + rnorm(100) fit.lasso <- lasso.proj(x, y) which(fit.lasso$pval.corr < 0.05) # typically: '1' and '2' and no other ## Group-wise testing of the first two coefficients fit.lasso$groupTest(1:2) ## Hierarchical testing using distance matrix based on ## correlation matrix out.clust <- fit.lasso$clusterGroupTest() plot(out.clust) ## Fit the lasso projection method without doing the preparations ## for group testing (saves time and memory) fit.lasso.faster <- lasso.proj(x, y, suppress.grouptesting = TRUE) ## Use the scaled lasso for the initial estimate fit.lasso.scaled <- lasso.proj(x, y, betainit = "scaled lasso") which(fit.lasso.scaled$pval.corr < 0.05) ## Use a robust estimate for the standard error fit.lasso.robust <- lasso.proj(x, y, robust = TRUE) which(fit.lasso.robust$pval.corr < 0.05)