#' @author mahnaz
#' @description Ridge regression
#' @details Computations using least squares
#' @export ridgereg
#' @param formula
#' @param data
#' @param lambda
ridgereg <- function(formula, data, lambda){
x <- model.matrix(formula,data)
y <- as.matrix( data[all.vars(formula)[1]])
betahat_ridge <- solve(t(x)%*%x+lambda*diag(ncol(x)))%*%(t(x)%*%y)
betahat_ridge1 <- t(betahat_ridge)
row.names(betahat_ridge1) <- ""
colnames(betahat_ridge1) <- c("","Speciesversicolor","Speciesvirginica")
yhat <- x%*% betahat_ridge
yhat1 <- t(yhat)
row.names(yhat1) <- ""
obj_result <- list(coefficients = betahat_ridge1,fitted.values = yhat1,call=match.call())
class(obj_result) <- "ridgereg"
return(obj_result)
}
#mod_object <- ridgereg(Petal.Length~Species, data = iris,lambda = 1)
ridgereg <- function(formula, data, lambda){
x <- model.matrix(formula,data)
y <-as.matrix( data[all.vars(formula)[1]])
QRy <- t(x)%*%y
QR <- qr(crossprod(x)+lambda*diag(ncol(x)))
betahat_ridge <- qr.solve(QR, QRy)
betahat_ridge1 <- t(betahat_ridge)
row.names(betahat_ridge1) <- ""
colnames(betahat_ridge1) <- c("","Speciesversicolor","Speciesvirginica")
yhat <- t(x%*% betahat_ridge)
row.names(yhat) <- ""
result <- list(coefficients = betahat_ridge1,fitted.values = yhat,call=match.call())
class(result) <- "ridgereg"
return(result)
}
#mod_object <- ridgereg(Petal.Length~Species, data = iris,lambda = 1)
print.ridgereg <- function(obj){
cat("Call:\n")
print(obj$call)
cat("\nCoefficient: \n")
print(obj$coefficients)
}
#print(mod_object)
predict.ridgereg <- function(obj){
print(obj$fitted.values)
}
#predict(mod_object)
coef.ridgereg <- function(obj){
print(obj$coefficient)
}
#coef(mod_object)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.