The lab7ab package provides a RC class named ridgereg
to apply ridge regression.
set.seed(27) library(devtools) #install_github("brbatv/lab7",force=TRUE) library(lab7ab) library(MASS) library(mlbench) library(caret) library(leaps) data("BostonHousing")
After loading the BostonHousing data frame, we will partitionize it in two parts.
set.seed(27) training_data <- createDataPartition(BostonHousing$crim,p = 0.55) training <- BostonHousing[training_data$Resample1, ] test <- BostonHousing[-training_data$Resample1, ]
We now need to select the best variables to predict crim.
set.seed(27) full_model <- lm(crim~.,data=training)
set.seed(27) step <- stepAIC(full_model, direction="backward")
step <- stepAIC(full_model, direction="backward")
step$anova # display results
The backward method used in stepAIC gave us a model with the lowest AIC : crim ~ zn + rm + dis + rad + medv
lm1 <- caret::train(crim ~ ., data=training, method = 'leapForward') lm1 summary(lm1)
The leapForward method gave us a model with only two variables `crim ~
set.seed(27) ridgeex <- list(type="Regression", library="lab7ab", loop=NULL, prob=NULL, parameters=data.frame(parameter="lambda",class="numeric",label="lambda"), grid=function(y,x, len=NULL, search="grid") { data.frame(lambda = seq(0,200,by=5)) }, fit=function (x, y, wts, param, lev, last, classProbs, ...) { dat <- if (is.data.frame(x)) x else as.data.frame(x) dat$.outcome <- y out <- ridgereg$new(formula=.outcome ~ ., data = dat, lambda=param$lambda, ...) out }, predict = function (modelFit, newdata, submodels = NULL,preProc=NULL) { if (!is.data.frame(newdata)) newdata <- as.data.frame(newdata) modelFit$predict(newdata) }) testo<-caret::train(crim ~ ., data=training, method = ridgeex) testo
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.