sim <- generateData(n = 120, p = 12, q = 6, rho = 0.1)
X <- sim$X; Y <- sim$Z
# \donttest{
# Basic 5-fold cross-validation
cvfit <- cv.missoNet(X = X, Y = Y, kfold = 5, verbose = 0)
# Extract optimal estimates
Beta.min <- cvfit$est.min$Beta
Theta.min <- cvfit$est.min$Theta
# Extract 1SE estimates (if computed)
if (!is.null(cvfit$est.1se.beta)) {
Beta.1se <- cvfit$est.1se.beta$Beta
}
if (!is.null(cvfit$est.1se.theta)) {
Theta.1se <- cvfit$est.1se.theta$Theta
}
# Make predictions
newX <- matrix(rnorm(10 * 12), 10, 12)
pred.min <- predict(cvfit, newx = newX, s = "lambda.min")
pred.1se <- predict(cvfit, newx = newX, s = "lambda.1se.beta")
# Parallel cross-validation
library(parallel)
cl <- makeCluster(min(detectCores() - 1, 2))
cvfit2 <- cv.missoNet(X = X, Y = Y, kfold = 5,
parallel = TRUE, cl = cl)
stopCluster(cl)
# Adaptive search for efficiency
cvfit3 <- cv.missoNet(X = X, Y = Y, kfold = 5,
adaptive.search = TRUE)
# Reproducible CV with specific lambdas
cvfit4 <- cv.missoNet(X = X, Y = Y, kfold = 5,
lambda.beta = 10^seq(0, -2, length = 20),
lambda.theta = 10^seq(0, -2, length = 20),
seed = 486)
# Plot CV results
plot(cvfit, type = "heatmap")
plot(cvfit, type = "scatter")
# }
Run the code above in your browser using DataLab