I wonder is there a way to output summary for ridge regression in R?
It is a result of lm.ridge{MASS}
function.
For standard linear model you just do summary(lm_model)
but what about ridge regression model?
Thanks for help.
I just added a method that summarizes (or more precisely, tidies) "ridgelm"
objects to my broom package. This takes the form of two S3 generics: tidy
and glance
. You can install it with devtools::install_github("dgrtwo/broom")
(though you'll need to install devtools
first).
As an example, let's set up a ridge regression:
library(MASS)
names(longley)[1] <- "y"
fit <- lm.ridge(y ~ ., longley, lambda = seq(0.001, .05, .001))
The tidy
function provides a data frame that shows each combination of lambda and the estimated term:
library(broom)
td <- tidy(fit)
head(td)
## lambda GCV term estimate
## 1 0.001 0.1240 GNP 23.02
## 2 0.002 0.1217 GNP 21.27
## 3 0.003 0.1205 GNP 19.88
## 4 0.004 0.1199 GNP 18.75
## 5 0.005 0.1196 GNP 17.80
## 6 0.006 0.1196 GNP 16.99
While the glance
function creates a one-row summary, particularly the choices of lambda by various methods:
g <- glance(fit)
g
## kHKB kLW lambdaGCV
## 1 0.006837 0.05267 0.006
This is useful because it makes it easy to plot and explore the data yourself rather than relying on MASS's plotters:
library(ggplot2)
ggplot(td, aes(lambda, estimate, color = term)) + geom_line()
# plot of GCV versus lambda
ggplot(td, aes(lambda, GCV)) + geom_line() +
geom_vline(xintercept = g$lambdaGCV, col = "red", lty = 2)
For more on these methods, see ?ridgelm_tidiers
, or see the package's vignettes for more about the tidy
and glance
methods in general.