test_that("slim method='dantzig' works when d >= n", { set.seed(101) x <- matrix(rnorm(60), nrow = 10, ncol = 6) y <- x[, 1] + rnorm(10) * 0.5 fit <- slim(x, y, nlambda = 3, method = "dantzig", verbose = FALSE, max.ite = 5000) expect_s3_class(fit, "slim") expect_equal(fit$method, "dantzig") expect_equal(fit$nlambda, 3L) expect_equal(ncol(fit$beta), 3L) }) test_that("slim method='dantzig' works when d < n", { set.seed(102) x <- matrix(rnorm(120), nrow = 30, ncol = 4) y <- x[, 1] + rnorm(30) * 0.5 fit <- slim(x, y, nlambda = 3, method = "dantzig", verbose = FALSE, max.ite = 5000) expect_s3_class(fit, "slim") expect_equal(fit$method, "dantzig") expect_equal(ncol(fit$beta), 3L) }) test_that("slim method='lq' q=1 runs LAD lasso", { set.seed(103) x <- matrix(rnorm(120), nrow = 30, ncol = 4) y <- x[, 1] + rnorm(30) * 0.5 fit <- slim(x, y, nlambda = 3, method = "lq", q = 1, verbose = FALSE, max.ite = 5000) expect_s3_class(fit, "slim") expect_equal(fit$q, 1) }) test_that("slim method='lq' q=1.5 runs Lq lasso", { set.seed(104) x <- matrix(rnorm(120), nrow = 30, ncol = 4) y <- x[, 1] + rnorm(30) * 0.5 fit <- slim(x, y, nlambda = 3, method = "lq", q = 1.5, verbose = FALSE, max.ite = 5000) expect_s3_class(fit, "slim") expect_equal(fit$q, 1.5) }) test_that("slim method='lq' q=2 runs SQRT lasso", { set.seed(105) x <- matrix(rnorm(120), nrow = 30, ncol = 4) y <- x[, 1] + rnorm(30) * 0.5 fit <- slim(x, y, nlambda = 3, method = "lq", q = 2, verbose = FALSE, max.ite = 5000) expect_s3_class(fit, "slim") expect_equal(fit$q, 2) }) test_that("slim method='lasso' works", { set.seed(106) x <- matrix(rnorm(120), nrow = 30, ncol = 4) y <- x[, 1] + rnorm(30) * 0.5 fit <- slim(x, y, nlambda = 3, method = "lasso", verbose = FALSE, max.ite = 5000) expect_s3_class(fit, "slim") expect_equal(fit$method, "lasso") }) test_that("slim dfmax truncates output", { set.seed(107) x <- matrix(rnorm(300), nrow = 30, ncol = 10) y <- x[, 1:3] %*% c(2, -1, 0.5) + rnorm(30) * 0.3 fit <- slim(x, y, nlambda = 10, method = "lasso", dfmax = 3, verbose = FALSE, max.ite = 5000) expect_s3_class(fit, "slim") expect_true(fit$nlambda <= 10) expect_true(all(fit$df <= 3) || fit$df[fit$nlambda] >= 3) }) test_that("slim res.sd=TRUE works without error", { set.seed(108) x <- matrix(rnorm(120), nrow = 30, ncol = 4) y <- x[, 1] + rnorm(30) * 0.5 fit <- slim(x, y, nlambda = 3, method = "lasso", res.sd = TRUE, verbose = FALSE, max.ite = 5000) expect_s3_class(fit, "slim") })