R: Tidiers for glmnet cross-validation objects

cv.glmnet_tidiers {broom} | R Documentation

## 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 class 'cv.glmnet'
    tidy(x, ...)

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

### Arguments

`x` | a "cv.glmnet" object
`...` | extra arguments (not used)

### Details

No `augment` method exists for this class.

### 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

### Examples

    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)
    }

[Package broom version 0.4.4 Index]