Learn R Programming

msaenet (version 2.1)

msamnet: Multi-Step Adaptive MCP-Net

Description

Multi-Step Adaptive MCP-Net

Usage

msamnet(x, y, family = c("gaussian", "binomial", "poisson", "cox"), init = c("mnet", "ridge"), nsteps = 2L, nfolds = 5L, gammas = c(1.01, 1.7, 3, 100), alphas = seq(0.05, 0.95, 0.05), eps = 1e-04, max.iter = 10000L, gamma = 1, seed = 1001, parallel = FALSE, verbose = FALSE)

Arguments

x
Data matrix.
y
Response vector if family is "gaussian", "binomial" or "poisson". If family is "cox", a response matrix made by Surv.
family
Model family, can be "gaussian", "binomial", "poisson", or "cox".
init
Type of the penalty used in the initial estimation step. Can be "mnet" or "ridge".
nsteps
How many adaptive estimation steps? At least 2. We assume adaptive MCP-net has only 1 adaptive estimation step.
nfolds
Fold numbers of cross-validation.
gammas
Vector of candidate gammas to use in MCP-Net.
alphas
Vector of candidate alphas to use in MCP-Net.
eps
Convergence threshhold to use in MCP-net.
max.iter
Maximum number of iterations to use in MCP-net.
gamma
Scaling factor for adaptive weights: weights = coefs^(-gamma).
seed
Two random seeds for cross-validation fold division in two estimation steps.
parallel
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.
verbose
Should we print out the estimation progress?

Value

List of coefficients beta and ncvreg model object model.

Examples

Run this code
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,
                      gammas = 3, alphas = seq(0.3, 0.9, 0.3),
                      nsteps = 3L, seed = 1003)

print(msamnet.fit)
msaenet.nzv(msamnet.fit)
msaenet.fp(msamnet.fit, 1:5)
msaenet.tp(msamnet.fit, 1:5)
msamnet.pred = predict(msamnet.fit, dat$x.te)
msaenet.rmse(dat$y.te, msamnet.pred)
plot(msamnet.fit)

Run the code above in your browser using DataLab