msamnet(x, y, family = c("gaussian", "binomial", "poisson", "cox"),
init = c("mnet", "ridge"), gammas = 3, alphas = seq(0.05, 0.95,
0.05), tune = c("cv", "ebic", "bic", "aic"), nfolds = 5L,
ebic.gamma = 1, nsteps = 2L, tune.nsteps = c("max", "ebic", "bic",
"aic"), ebic.gamma.nsteps = 1, scale = 1, eps = 1e-04,
max.iter = 10000L, penalty.factor.init = rep(1, ncol(x)),
seed = 1001, parallel = FALSE, verbose = FALSE)

Arguments

x Data matrix. Response vector if family is "gaussian", "binomial", or "poisson". If family is "cox", a response matrix created by Surv. Model family, can be "gaussian", "binomial", "poisson", or "cox". Type of the penalty used in the initial estimation step. Can be "mnet" or "ridge". Vector of candidate gammas (the concavity parameter) to use in MCP-Net. Default is 3. Vector of candidate alphas to use in MCP-Net. Parameter tuning method for each estimation step. Possible options are "cv", "ebic", "bic", and "aic". Default is "cv". Fold numbers of cross-validation when tune = "cv". Parameter for Extended BIC penalizing size of the model space when tune = "ebic", default is 1. For details, see Chen and Chen (2008). Maximum number of adaptive estimation steps. At least 2, assuming adaptive MCP-net has only one adaptive estimation step. Optimal step number selection method (aggregate the optimal model from the each step and compare). Options include "max" (select the final-step model directly), or compare these models using "ebic", "bic", or "aic". Default is "max". Parameter for Extended BIC penalizing size of the model space when tune.nsteps = "ebic", default is 1. Scaling factor for adaptive weights: weights = coefficients^(-scale). Convergence threshhold to use in MCP-net. Maximum number of iterations to use in MCP-net. The multiplicative factor for the penalty applied to each coefficient in the initial estimation step. This is useful for incorporating prior information about variable weights, for example, emphasizing specific clinical variables. To make certain variables more likely to be selected, assign a smaller value. Default is rep(1, ncol(x)). Random seed for cross-validation fold division. Logical. Enable parallel parameter tuning or not, default is FALSE. To enable parallel tuning, load the doParallel package and run registerDoParallel() with the number of CPU cores before calling this function. Should we print out the estimation progress?

Value

List of model coefficients, ncvreg model object, and the optimal parameter set.

Examples

dat <- msaenet.sim.gaussian(
n = 150, p = 500, rho = 0.6,
coef = rep(1, 5), snr = 2, p.train = 0.7,
seed = 1001
)

msamnet.fit <- msamnet(
dat$x.tr, dat$y.tr,
alphas = seq(0.3, 0.9, 0.3),
nsteps = 3L, seed = 1003
)

print(msamnet.fit)#> Call: msamnet(x = dat$x.tr, y = dat$y.tr, alphas = seq(0.3, 0.9, 0.3),
#>     nsteps = 3L, seed = 1003)
#>   Df    Lambda Gamma Alpha
#> 1  4 0.4260659     3   0.6msaenet.nzv(msamnet.fit)#> [1] 2 3 4 5msaenet.fp(msamnet.fit, 1:5)#> [1] 0msaenet.tp(msamnet.fit, 1:5)#> [1] 4msamnet.pred <- predict(msamnet.fit, dat$x.te) msaenet.rmse(dat$y.te, msamnet.pred)#> [1] 2.183295plot(msamnet.fit)