Prediction function for fitted cross validation oem objects

# S3 method for cv.oem
predict(
  object,
  newx,
  which.model = "best.model",
  s = c("lambda.min", "lambda.1se"),
  ...
)

Arguments

object

fitted "cv.oem" model object

newx

Matrix of new values for x at which predictions are to be made. Must be a matrix; can be sparse as in the CsparseMatrix objects of the Matrix package This argument is not used for type = c("coefficients","nonzero")

which.model

If multiple penalties are fit and returned in the same oem object, the which.model argument is used to specify which model to make predictions for. For example, if the oem object "oemobj" was fit with argument penalty = c("lasso", "grp.lasso"), then which.model = 2 provides predictions for the group lasso model. For predict.cv.oem(), can specify "best.model" to use the best model as estimated by cross-validation

s

Value(s) of the penalty parameter lambda at which predictions are required. Default is the entire sequence used to create the model. For predict.cv.oem(), can also specify "lambda.1se" or "lambda.min" for best lambdas estimated by cross validation

...

used to pass the other arguments for predict.oem

Value

An object depending on the type argument

Examples

set.seed(123) n.obs <- 1e4 n.vars <- 100 n.obs.test <- 1e3 true.beta <- c(runif(15, -0.5, 0.5), rep(0, n.vars - 15)) x <- matrix(rnorm(n.obs * n.vars), n.obs, n.vars) y <- rnorm(n.obs, sd = 3) + x %*% true.beta x.test <- matrix(rnorm(n.obs.test * n.vars), n.obs.test, n.vars) y.test <- rnorm(n.obs.test, sd = 3) + x.test %*% true.beta fit <- cv.oem(x = x, y = y, penalty = c("lasso", "grp.lasso"), groups = rep(1:10, each = 10), nlambda = 10) preds.best <- predict(fit, newx = x.test, type = "response", which.model = "best.model") apply(preds.best, 2, function(x) mean((y.test - x) ^ 2))
#> [1] 9.091859
preds.gl <- predict(fit, newx = x.test, type = "response", which.model = "grp.lasso") apply(preds.gl, 2, function(x) mean((y.test - x) ^ 2))
#> [1] 9.091859
preds.l <- predict(fit, newx = x.test, type = "response", which.model = 1) apply(preds.l, 2, function(x) mean((y.test - x) ^ 2))
#> [1] 9.099376