Ridge_reg function

Ridge regression can be used to calculate coefficient vector given lambda and formula.

library(bis557)
fit<-ridge_reg(Sepal.Length ~ .,1.2, iris)
fit

Looks at effect on the out-of-sample mean square error as $\lambda$ varies

data(ridge_train)
data(ridge_test)

# Calculate MSE
cal_mse<-function(formula,lambda,train_data,test_data){
  coeff<-ridge_reg(formula,lambda,train_data)$coefficients
  x_test<-as.matrix(model.matrix(formula, test_data))
  y_test<-test_data[,as.character(formula)[2]]
  test_pred<-x_test %*% coeff
  mse<-mean(sum(y_test-test_pred)^2)
  mse
}

# Try lambda from 0 to 100
lambda<-seq(0,100,0.5)
mse_test<-sapply(lambda, function(lambda)cal_mse(y~.,lambda,ridge_train,ridge_test))
min(mse_test)
plot(lambda, mse_test, type = 'l', xlab = "log(lambda)", ylab = "MSE of Test Set")
lambda[which.min(mse_test)]

From the plot, the out-of-sample MSE decreases when log(lambda) increases.



wentinggao1217/bis557 documentation built on May 29, 2019, 9:16 a.m.