Ridge regression can be used to calculate coefficient vector given lambda and formula.
library(bis557) fit<-ridge_reg(Sepal.Length ~ .,1.2, iris) fit
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.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.