Learn R Programming

broom (version 0.4.3)

cv.glmnet_tidiers: Tidiers for glmnet cross-validation objects

Description

Tidying methods for cross-validation performed by glmnet.cv, summarizing the mean-squared-error across choices of the penalty parameter lambda.

Usage

# S3 method for cv.glmnet
tidy(x, ...)

# S3 method for cv.glmnet glance(x, ...)

Arguments

x

a "cv.glmnet" object

...

extra arguments (not used)

Value

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

Details

No augment method exists for this class.

Examples

Run this code
# NOT RUN {
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)
}

# }

Run the code above in your browser using DataLab