| cv.glmnet_tidiers {broom} | R Documentation |
Tidying methods for cross-validation performed by glmnet.cv,
summarizing the mean-squared-error across choices of the penalty parameter
lambda.
## S3 method for class 'cv.glmnet' tidy(x, ...) ## S3 method for class 'cv.glmnet' glance(x, ...)
x |
a "cv.glmnet" object |
... |
extra arguments (not used) |
No augment method exists for this class.
All tidying methods return a data.frame without rownames, whose structure depends on the method chosen.
tidy produces a data.frame with one row per choice of lambda,
with columns
lambda |
penalty parameter lambda |
estimate |
estimate (median) of mean-squared error or other criterion |
std.error |
standard error of criterion |
conf.high |
high end of confidence interval on criterion |
conf.low |
low end of confidence interval on criterion |
nzero |
number of parameters that are zero at this choice of lambda |
glance returns a one-row data.frame with the values
nulldev |
null deviance |
npasses |
total passes over the data across all lambda values |
if (require("glmnet", quietly = TRUE)) {
set.seed(2014)
nobs <- 100
nvar <- 50
real <- 5
x <- matrix(rnorm(nobs * nvar), nobs, nvar)
beta <- c(rnorm(real, 0, 1), rep(0, nvar - real))
y <- c(t(beta) %*% t(x)) + rnorm(nvar, sd = 3)
cvfit1 <- cv.glmnet(x,y)
head(tidy(cvfit1))
glance(cvfit1)
library(ggplot2)
tidied_cv <- tidy(cvfit1)
glance_cv <- glance(cvfit1)
# plot of MSE as a function of lambda
g <- ggplot(tidied_cv, aes(lambda, estimate)) + geom_line() + scale_x_log10()
g
# plot of MSE as a function of lambda with confidence ribbon
g <- g + geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha = .25)
g
# plot of MSE as a function of lambda with confidence ribbon and choices
# of minimum lambda marked
g <- g + geom_vline(xintercept = glance_cv$lambda.min) +
geom_vline(xintercept = glance_cv$lambda.1se, lty = 2)
g
# plot of number of zeros for each choice of lambda
ggplot(tidied_cv, aes(lambda, nzero)) + geom_line() + scale_x_log10()
# coefficient plot with min lambda shown
tidied <- tidy(cvfit1$glmnet.fit)
ggplot(tidied, aes(lambda, estimate, group = term)) + scale_x_log10() +
geom_line() +
geom_vline(xintercept = glance_cv$lambda.min) +
geom_vline(xintercept = glance_cv$lambda.1se, lty = 2)
}