# Setup ========================================================================
rm(list = ls())
devtools::install_github("ocbe-uio/MADMMplasso", force = TRUE)
#> Downloading GitHub repo ocbe-uio/MADMMplasso@HEAD
#>
#> ── R CMD build ─────────────────────────────────────────────────────────────────
#> * checking for file ‘/tmp/Rtmpr2fzD2/remotes149907717ef58/ocbe-uio-MADMMplasso-9896eeb/DESCRIPTION’ ... OK
#> * preparing ‘MADMMplasso’:
#> * checking DESCRIPTION meta-information ... OK
#> * cleaning src
#> * checking for LF line-endings in source and make files and shell scripts
#> * checking for empty or unneeded directories
#> * building ‘MADMMplasso_0.0.0.9015.tar.gz’
#> Installing package into '/home/netto/R/x86_64-pc-linux-gnu-library/4.3'
#> (as 'lib' is unspecified)
library(MADMMplasso)
print(packageVersion("MADMMplasso"))
#> [1] '0.0.0.9015'
# Run ==========================================================================
set.seed(1235)
N <- 100
p <- 50
nz <- 4
K <- nz
X <- matrix(rnorm(n = N * p), nrow = N, ncol = p)
mx <- colMeans(X)
sx <- sqrt(apply(X, 2, var))
X <- scale(X, mx, sx)
X <- matrix(as.numeric(X), N, p)
Z <- matrix(rnorm(N * nz), N, nz)
mz <- colMeans(Z)
sz <- sqrt(apply(Z, 2, var))
Z <- scale(Z, mz, sz)
beta_1 <- rep(x = 0, times = p)
beta_2 <- rep(x = 0, times = p)
beta_3 <- rep(x = 0, times = p)
beta_4 <- rep(x = 0, times = p)
beta_5 <- rep(x = 0, times = p)
beta_6 <- rep(x = 0, times = p)
beta_1[1:5] <- c(2, 2, 2, 2, 2)
beta_2[1:5] <- c(2, 2, 2, 2, 2)
beta_3[6:10] <- c(2, 2, 2, -2, -2)
beta_4[6:10] <- c(2, 2, 2, -2, -2)
beta_5[11:15] <- c(-2, -2, -2, -2, -2)
beta_6[11:15] <- c(-2, -2, -2, -2, -2)
Beta <- cbind(beta_1, beta_2, beta_3, beta_4, beta_5, beta_6)
colnames(Beta) <- c(1:6)
theta <- array(0, c(p, K, 6))
theta[1, 1, 1] <- 2
theta[3, 2, 1] <- 2
theta[4, 3, 1] <- -2
theta[5, 4, 1] <- -2
theta[1, 1, 2] <- 2
theta[3, 2, 2] <- 2
theta[4, 3, 2] <- -2
theta[5, 4, 2] <- -2
theta[6, 1, 3] <- 2
theta[8, 2, 3] <- 2
theta[9, 3, 3] <- -2
theta[10, 4, 3] <- -2
theta[6, 1, 4] <- 2
theta[8, 2, 4] <- 2
theta[9, 3, 4] <- -2
theta[10, 4, 4] <- -2
theta[11, 1, 5] <- 2
theta[13, 2, 5] <- 2
theta[14, 3, 5] <- -2
theta[15, 4, 5] <- -2
theta[11, 1, 6] <- 2
theta[13, 2, 6] <- 2
theta[14, 3, 6] <- -2
theta[15, 4, 6] <- -2
library(MASS)
pliable <- matrix(0, N, 6)
for (e in 1:6) {
pliable[, e] <- compute_pliable(X, Z, theta[, , e])
}
esd <- diag(6)
e <- MASS::mvrnorm(N, mu = rep(0, 6), Sigma = esd)
y_train <- X %*% Beta + pliable + e
y <- y_train
# colnames(y)<-c(1:6)
colnames(y) <- c(paste("y", 1:(ncol(y)), sep = ""))
TT <- tree_parms(y)
gg1 <- matrix(0, 2, 2)
gg1[1, ] <- c(0.02, 0.02)
gg1[2, ] <- c(0.2, 0.2)
nlambda <- 50
e.abs <- 1E-4
e.rel <- 1E-2
alpha <- .5
tol <- 1E-3
fit <- MADMMplasso(X, Z, y, alpha = alpha, my_lambda = NULL, lambda_min = 0.001, max_it = 5000, e.abs = e.abs, e.rel = e.rel, maxgrid = nlambda, nlambda = nlambda, rho = 5, tree = TT, my_print = FALSE, alph = 1, parallel = FALSE, pal = TRUE, gg = gg1, tol = tol)
#> Convergence reached after 31 iterations
#> Convergence reached after 42 iterations
#> Convergence reached after 42 iterations
#> Convergence reached after 42 iterations
#> Convergence reached after 43 iterations
#> Convergence reached after 43 iterations
#> Convergence reached after 42 iterations
#> Convergence reached after 43 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 47 iterations
#> Convergence reached after 50 iterations
#> Convergence reached after 53 iterations
#> Convergence reached after 56 iterations
#> Convergence reached after 59 iterations
#> Convergence reached after 61 iterations
#> Convergence reached after 65 iterations
#> Convergence reached after 70 iterations
#> Convergence reached after 74 iterations
#> Convergence reached after 78 iterations
#> Convergence reached after 81 iterations
#> Convergence reached after 85 iterations
#> Convergence reached after 89 iterations
#> Convergence reached after 47 iterations
#> Convergence reached after 49 iterations
#> Convergence reached after 51 iterations
#> Convergence reached after 53 iterations
#> Convergence reached after 55 iterations
#> Convergence reached after 57 iterations
#> Convergence reached after 58 iterations
#> Convergence reached after 60 iterations
#> Convergence reached after 62 iterations
#> Convergence reached after 63 iterations
#> Convergence reached after 65 iterations
#> Convergence reached after 67 iterations
#> Convergence reached after 68 iterations
#> Convergence reached after 69 iterations
#> Convergence reached after 71 iterations
#> Convergence reached after 72 iterations
#> Convergence reached after 73 iterations
#> Convergence reached after 73 iterations
#> Convergence reached after 74 iterations
#> Convergence reached after 75 iterations
#> Convergence reached after 76 iterations
#> Convergence reached after 76 iterations
#> Convergence reached after 77 iterations
#> Convergence reached after 77 iterations
#> Convergence reached after 78 iterations
#> Convergence reached after 78 iterations
#> Convergence reached after 78 iterations
gg1 <- fit$gg
cv_admp <- cv_MADMMplasso(fit, nfolds = 5, X, Z, y, alpha = alpha, lambda = fit$Lambdas, max_it = 5000, e.abs = e.abs, e.rel = e.rel, nlambda, rho = 5, my_print = FALSE, alph = 1, foldid = NULL, parallel = FALSE, pal = TRUE, gg = gg1, TT = TT, tol = tol)
#> Convergence reached after 37 iterations
#> Convergence reached after 37 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 54 iterations
#> Convergence reached after 47 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 47 iterations
#> Convergence reached after 50 iterations
#> Convergence reached after 55 iterations
#> Convergence reached after 54 iterations
#> Convergence reached after 56 iterations
#> Convergence reached after 57 iterations
#> Convergence reached after 61 iterations
#> Convergence reached after 64 iterations
#> Convergence reached after 67 iterations
#> Convergence reached after 72 iterations
#> Convergence reached after 77 iterations
#> Convergence reached after 82 iterations
#> Convergence reached after 87 iterations
#> Convergence reached after 92 iterations
#> Convergence reached after 97 iterations
#> Convergence reached after 102 iterations
#> Convergence reached after 109 iterations
#> Convergence reached after 115 iterations
#> Convergence reached after 122 iterations
#> Convergence reached after 66 iterations
#> Convergence reached after 69 iterations
#> Convergence reached after 73 iterations
#> Convergence reached after 76 iterations
#> Convergence reached after 79 iterations
#> Convergence reached after 82 iterations
#> Convergence reached after 84 iterations
#> Convergence reached after 87 iterations
#> Convergence reached after 90 iterations
#> Convergence reached after 91 iterations
#> Convergence reached after 93 iterations
#> Convergence reached after 94 iterations
#> Convergence reached after 95 iterations
#> Convergence reached after 96 iterations
#> Convergence reached after 98 iterations
#> Convergence reached after 99 iterations
#> Convergence reached after 100 iterations
#> Convergence reached after 100 iterations
#> Convergence reached after 101 iterations
#> Convergence reached after 102 iterations
#> Convergence reached after 102 iterations
#> Convergence reached after 103 iterations
#> Convergence reached after 104 iterations
#> Convergence reached after 104 iterations
#> Convergence reached after 105 iterations
#> Convergence reached after 41 iterations
#> Convergence reached after 46 iterations
#> Convergence reached after 49 iterations
#> Convergence reached after 55 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 42 iterations
#> Convergence reached after 44 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 49 iterations
#> Convergence reached after 53 iterations
#> Convergence reached after 54 iterations
#> Convergence reached after 58 iterations
#> Convergence reached after 61 iterations
#> Convergence reached after 65 iterations
#> Convergence reached after 69 iterations
#> Convergence reached after 74 iterations
#> Convergence reached after 79 iterations
#> Convergence reached after 83 iterations
#> Convergence reached after 88 iterations
#> Convergence reached after 92 iterations
#> Convergence reached after 96 iterations
#> Convergence reached after 100 iterations
#> Convergence reached after 105 iterations
#> Convergence reached after 110 iterations
#> Convergence reached after 59 iterations
#> Convergence reached after 61 iterations
#> Convergence reached after 63 iterations
#> Convergence reached after 65 iterations
#> Convergence reached after 68 iterations
#> Convergence reached after 70 iterations
#> Convergence reached after 72 iterations
#> Convergence reached after 74 iterations
#> Convergence reached after 77 iterations
#> Convergence reached after 79 iterations
#> Convergence reached after 81 iterations
#> Convergence reached after 83 iterations
#> Convergence reached after 84 iterations
#> Convergence reached after 84 iterations
#> Convergence reached after 86 iterations
#> Convergence reached after 87 iterations
#> Convergence reached after 88 iterations
#> Convergence reached after 89 iterations
#> Convergence reached after 90 iterations
#> Convergence reached after 91 iterations
#> Convergence reached after 92 iterations
#> Convergence reached after 92 iterations
#> Convergence reached after 93 iterations
#> Convergence reached after 93 iterations
#> Convergence reached after 93 iterations
#> Convergence reached after 39 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 49 iterations
#> Convergence reached after 43 iterations
#> Convergence reached after 42 iterations
#> Convergence reached after 42 iterations
#> Convergence reached after 43 iterations
#> Convergence reached after 46 iterations
#> Convergence reached after 50 iterations
#> Convergence reached after 53 iterations
#> Convergence reached after 59 iterations
#> Convergence reached after 59 iterations
#> Convergence reached after 62 iterations
#> Convergence reached after 65 iterations
#> Convergence reached after 69 iterations
#> Convergence reached after 73 iterations
#> Convergence reached after 77 iterations
#> Convergence reached after 83 iterations
#> Convergence reached after 88 iterations
#> Convergence reached after 93 iterations
#> Convergence reached after 97 iterations
#> Convergence reached after 102 iterations
#> Convergence reached after 107 iterations
#> Convergence reached after 112 iterations
#> Convergence reached after 118 iterations
#> Convergence reached after 63 iterations
#> Convergence reached after 66 iterations
#> Convergence reached after 69 iterations
#> Convergence reached after 71 iterations
#> Convergence reached after 74 iterations
#> Convergence reached after 77 iterations
#> Convergence reached after 79 iterations
#> Convergence reached after 82 iterations
#> Convergence reached after 84 iterations
#> Convergence reached after 86 iterations
#> Convergence reached after 88 iterations
#> Convergence reached after 90 iterations
#> Convergence reached after 91 iterations
#> Convergence reached after 93 iterations
#> Convergence reached after 94 iterations
#> Convergence reached after 95 iterations
#> Convergence reached after 96 iterations
#> Convergence reached after 97 iterations
#> Convergence reached after 98 iterations
#> Convergence reached after 99 iterations
#> Convergence reached after 100 iterations
#> Convergence reached after 100 iterations
#> Convergence reached after 101 iterations
#> Convergence reached after 101 iterations
#> Convergence reached after 102 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 49 iterations
#> Convergence reached after 63 iterations
#> Convergence reached after 52 iterations
#> Convergence reached after 52 iterations
#> Convergence reached after 50 iterations
#> Convergence reached after 53 iterations
#> Convergence reached after 52 iterations
#> Convergence reached after 54 iterations
#> Convergence reached after 53 iterations
#> Convergence reached after 54 iterations
#> Convergence reached after 57 iterations
#> Convergence reached after 59 iterations
#> Convergence reached after 63 iterations
#> Convergence reached after 67 iterations
#> Convergence reached after 70 iterations
#> Convergence reached after 74 iterations
#> Convergence reached after 77 iterations
#> Convergence reached after 81 iterations
#> Convergence reached after 85 iterations
#> Convergence reached after 89 iterations
#> Convergence reached after 95 iterations
#> Convergence reached after 100 iterations
#> Convergence reached after 105 iterations
#> Convergence reached after 56 iterations
#> Convergence reached after 59 iterations
#> Convergence reached after 61 iterations
#> Convergence reached after 64 iterations
#> Convergence reached after 67 iterations
#> Convergence reached after 69 iterations
#> Convergence reached after 72 iterations
#> Convergence reached after 75 iterations
#> Convergence reached after 77 iterations
#> Convergence reached after 79 iterations
#> Convergence reached after 81 iterations
#> Convergence reached after 83 iterations
#> Convergence reached after 84 iterations
#> Convergence reached after 86 iterations
#> Convergence reached after 88 iterations
#> Convergence reached after 90 iterations
#> Convergence reached after 91 iterations
#> Convergence reached after 92 iterations
#> Convergence reached after 94 iterations
#> Convergence reached after 95 iterations
#> Convergence reached after 96 iterations
#> Convergence reached after 97 iterations
#> Convergence reached after 98 iterations
#> Convergence reached after 98 iterations
#> Convergence reached after 99 iterations
#> Convergence reached after 100 iterations
#> Convergence reached after 42 iterations
#> Convergence reached after 42 iterations
#> Convergence reached after 52 iterations
#> Convergence reached after 57 iterations
#> Convergence reached after 48 iterations
#> Convergence reached after 46 iterations
#> Convergence reached after 44 iterations
#> Convergence reached after 45 iterations
#> Convergence reached after 46 iterations
#> Convergence reached after 49 iterations
#> Convergence reached after 48 iterations
#> Convergence reached after 49 iterations
#> Convergence reached after 50 iterations
#> Convergence reached after 54 iterations
#> Convergence reached after 58 iterations
#> Convergence reached after 65 iterations
#> Convergence reached after 71 iterations
#> Convergence reached after 77 iterations
#> Convergence reached after 82 iterations
#> Convergence reached after 89 iterations
#> Convergence reached after 95 iterations
#> Convergence reached after 100 iterations
#> Convergence reached after 105 iterations
#> Convergence reached after 110 iterations
#> Convergence reached after 59 iterations
#> Convergence reached after 61 iterations
#> Convergence reached after 63 iterations
#> Convergence reached after 65 iterations
#> Convergence reached after 68 iterations
#> Convergence reached after 70 iterations
#> Convergence reached after 72 iterations
#> Convergence reached after 74 iterations
#> Convergence reached after 76 iterations
#> Convergence reached after 78 iterations
#> Convergence reached after 80 iterations
#> Convergence reached after 81 iterations
#> Convergence reached after 83 iterations
#> Convergence reached after 84 iterations
#> Convergence reached after 85 iterations
#> Convergence reached after 86 iterations
#> Convergence reached after 87 iterations
#> Convergence reached after 88 iterations
#> Convergence reached after 88 iterations
#> Convergence reached after 89 iterations
#> Convergence reached after 90 iterations
#> Convergence reached after 91 iterations
#> Convergence reached after 91 iterations
#> Convergence reached after 92 iterations
#> Convergence reached after 92 iterations
#> Convergence reached after 92 iterations
s_ad <- which(cv_admp$lambda[, 1] == cv_admp$lambda.min)
print(fit$beta[[s_ad]])
#> 50 x 6 sparse Matrix of class "dgCMatrix"
#>
#> [1,] 1.932783336 1.924357361 . . .
#> [2,] 1.842556697 1.785615971 . -0.014023030 .
#> [3,] 1.851813202 1.930390710 . . .
#> [4,] 1.905341902 1.879121040 . . 0.009985256
#> [5,] 1.995553057 1.908662378 . . 0.001122245
#> [6,] . . 1.561019826 1.474884542 .
#> [7,] . . 1.481321927 1.680940622 .
#> [8,] . . 1.825968704 1.689887063 .
#> [9,] . -0.046097852 -1.561676981 -1.659310229 .
#> [10,] . . -1.825172412 -1.852150281 .
#> [11,] . . 0.079255379 . -1.634118217
#> [12,] . 0.020630796 . . -1.795940506
#> [13,] . . . . -1.766903080
#> [14,] . . -0.003954695 . -1.641047357
#> [15,] . . . -0.065666500 -1.668932018
#> [16,] . . . -0.044784773 -0.028893659
#> [17,] . . . . .
#> [18,] . . . . .
#> [19,] 0.013164902 . . . 0.002296439
#> [20,] . . -0.075709023 -0.001602451 .
#> [21,] . . . . .
#> [22,] . . 0.076493497 . .
#> [23,] . . . . .
#> [24,] . . . . .
#> [25,] . . . . .
#> [26,] . . -0.021297641 . .
#> [27,] . . 0.028055520 . .
#> [28,] . . . . .
#> [29,] . 0.036609118 . . .
#> [30,] . . . . -0.210779457
#> [31,] . . . . .
#> [32,] . . . . .
#> [33,] . . . . .
#> [34,] . . . . .
#> [35,] . . . . .
#> [36,] . . . 0.013054171 .
#> [37,] . . . . .
#> [38,] . . . . .
#> [39,] . . . . .
#> [40,] . . . . .
#> [41,] . 0.014253410 . . .
#> [42,] . -0.003188221 . . .
#> [43,] . . . . 0.166158122
#> [44,] . . . . .
#> [45,] 0.005129281 . . . .
#> [46,] . . -0.016695091 . .
#> [47,] . . . . .
#> [48,] . 0.005291275 . 0.002492285 .
#> [49,] . . . . .
#> [50,] . . -0.026306536 . .
#>
#> [1,] .
#> [2,] .
#> [3,] -0.008737992
#> [4,] .
#> [5,] 0.008419943
#> [6,] .
#> [7,] .
#> [8,] .
#> [9,] .
#> [10,] .
#> [11,] -1.744816346
#> [12,] -1.611201627
#> [13,] -1.592585819
#> [14,] -1.643865443
#> [15,] -1.716013535
#> [16,] .
#> [17,] .
#> [18,] .
#> [19,] 0.013721400
#> [20,] .
#> [21,] .
#> [22,] .
#> [23,] .
#> [24,] .
#> [25,] .
#> [26,] .
#> [27,] .
#> [28,] .
#> [29,] .
#> [30,] -0.029479503
#> [31,] .
#> [32,] .
#> [33,] .
#> [34,] .
#> [35,] .
#> [36,] .
#> [37,] 0.023856589
#> [38,] .
#> [39,] .
#> [40,] .
#> [41,] .
#> [42,] .
#> [43,] 0.198158135
#> [44,] .
#> [45,] .
#> [46,] .
#> [47,] .
#> [48,] .
#> [49,] .
#> [50,] .
Created on 2024-03-11 with reprex v2.1.0