Learn R Programming

genridge (version 0.6-3)

ridge: Ridge Regression Estimates

Description

The function ridge fits linear models by ridge regression, returning an object of class ridge designed to be used with the plotting methods in this package.

Usage

ridge(y, ...)

## S3 method for class 'default':
ridge(y, X, lambda = 0, df, svd = TRUE, ...)

## S3 method for class 'formula':
ridge(formula, data, lambda = 0, df, svd = TRUE, ...)

## S3 method for class 'ridge':
print(x, digits = max(5, getOption("digits") - 5), ...)

## S3 method for class 'ridge':
coef(object, ...)

## S3 method for class 'ridge':
vcov(object, ...)

Arguments

Value

A list with the following components:lambdaThe vector of ridge constantsdfThe vector of effective degrees of freedom corresponding to lambdacoefThe matrix of estimated ridge regression coefficientsscalesscalings used on the X matrixkHKBHKB estimate of the ridge constantkLWL-W estimate of the ridge constantGCVvector of GCV valueskGCVvalue of lambda with the minimum GCVIf svd==TRUE, the following are also included:svd.DSingular values of the svd of the scaled X matrixsvd.ULeft singular vectors of the svd of the scaled X matrix. Rows correspond to observations and columns to dimensions.svd.VRight singular vectors of the svd of the scaled X matrix. Rows correspond to variables and columns to dimensions.

Details

Ridge regression shrinkage can be parameterized in several ways. If a vector of lambda values is supplied, these are used directly in the ridge regression computations. Otherwise, if a vector df is supplied the equivalent values of lambda. In either case, both lambda and df are returned in the ridge object, but the rownames of the coefficients are given in terms of lambda.

References

Hoerl, A. E., Kennard, R. W., and Baldwin, K. F. (1975), "Ridge Regression: Some Simulations," Communications in Statistics, 4, 105-123. Lawless, J.F., and Wang, P. (1976), "A Simulation Study of Ridge and Other Regression Estimators," Communications in Statistics, 5, 307-323.

See Also

lm.ridge, simple.ridge for other implementations of ridge regression traceplot, plot.ridge, pairs.ridge, plot3d.ridge, for 1D, 2D, 3D plotting methods pca.ridge, biplot.ridge, biplot.pcaridge for views in PCA/SVD space precision.ridge for measures of shrinkage and precision

Examples

Run this code
# Longley data, using number Employed as response
longley.y <- longley[, "Employed"]
longley.X <- data.matrix(longley[, c(2:6,1)])

lambda <- c(0, 0.005, 0.01, 0.02, 0.04, 0.08)
lridge <- ridge(longley.y, longley.X, lambda=lambda)

# same, using formula interface
lridge <- ridge(Employed ~ GNP + Unemployed + Armed.Forces + Population + Year + GNP.deflator, 
		data=longley, lambda=lambda)


coef(lridge)
traceplot(lridge)
traceplot(lridge, X="df")
pairs(lridge, radius=0.5)


if (require("ElemStatLearn")) {
	py <- prostate[, "lpsa"]
	pX <- data.matrix(prostate[, 1:8])
	pridge <- ridge(py, pX, df=8:1)
	pridge
	
	plot(pridge)
	pairs(pridge)
	traceplot(pridge)
	traceplot(pridge, X="df")
}

# Hospital manpower data from Table 3.8 of Myers (1990) 
data(Manpower)
str(Manpower)

mmod <- lm(Hours ~ ., data=Manpower)
vif(mmod)
# ridge regression models, specified in terms of equivalent df
mridge <- ridge(Hours ~ ., data=Manpower, df=seq(5, 3.75, -.25))
vif(mridge)

# univariate ridge trace plots
traceplot(mridge)
traceplot(mridge, X="df")

# bivariate ridge trace plots
plot(mridge, radius=0.25, labels=mridge$df)
pairs(mridge, radius=0.25)

# 3D views
# ellipsoids for Load, Xray & BedDays are nearly 2D
plot3d(mridge, radius=0.2, labels=mridge$df)
# variables in model selected by AIC & BIC
plot3d(mridge, variables=c(2,3,5), radius=0.2, labels=mridge$df)

# plots in PCA/SVD space
mpridge <- pca.ridge(mridge)
traceplot(mpridge, X="df")
biplot(mpridge, radius=0.25)

Run the code above in your browser using DataLab