knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(ridgereg)
library(caret)
library(MASS)
BostonHousing <- MASS::Boston

scale_BostonHousing <- scale(as.matrix(BostonHousing[, c(1:3,5:13)]))
scale_BostonHousing <- as.data.frame(scale_BostonHousing)
scale_BostonHousing$medv <- BostonHousing$medv
scale_BostonHousing$chas <- BostonHousing$chas
BostonHousing <- scale_BostonHousing

Dividing the data

set.seed(12345)
train <- caret::createDataPartition(y = BostonHousing$medv, p=0.8, list = FALSE)
training <- BostonHousing[train,]
test <- BostonHousing[-train, ]

Linear regression models

fitlinear <- caret::train(medv~ . , 
                          data=training,
                          method="lm")


fitlinear_forward <- caret::train(medv~.,
                                  data=training,
                                  method="leapForward",
                                  tuneGrid = data.frame(nvmax=1:(ncol(BostonHousing)-1)))

Evaluate linear models on the training set

rbind(fitlinear$results[2:7], fitlinear_forward$results[fitlinear_forward$bestTune[[1]],][2:7])

Ridge regression model

```r Rid <- list(type = "Regression", library = "Lab4HugoOtto", loop = NULL) prm <- data.frame(parameter = "lambda", class = "numeric" , label = "lambda") Rid$parameters <- prm Fit<-function(x,y,lambda,param,lev,last,classProbs,...){

names <- lapply(x, function(x){ all(x == y) }) y_name <- names(x)[unlist(names)] x_names <- names(x)[!unlist(names)]

formula <- paste(y_name,"~", sep="")

for (xvar in 1:length(x_names)) { formula <- paste(formula, "+", x_names[xvar], sep="") }

formula <- as.formula(formula) model <- ridgereg::ridgereg( formula = formula, data=x,lambda= param$lambda) return(model) }

Rid$fit <- Fit pred <- function(modelFit, newdata , preProc = NULL, submodels = NULL){ predict(modelFit, newdata) }

Rid$predict <- pred Rid$grid <- function(x, y, len=NULL, search="grid"){ data.frame(lambda=seq(from= 0 , to = 20, by = 0.5)) }

Rid$sort <- function(x) x[order(-x$lambda),]

Rid$prob <- list(NULL)

Rid$label <- "Ridge regression" RidFit <- caret::train( y = training$medv, x = training, method = Rid ) RidFit



mahnazmohammadzamani/ridgereg documentation built on Dec. 21, 2021, 1:43 p.m.