R/my-multiclass.R

Defines functions my_multiclass

Documented in my_multiclass

#' @title Build Multi-class Logistic Regression Model
#' @description This is a simple algorithm to solve a multi-class logistic regression model.
#' @param X design matrix
#' @param Y a vector of outcome
#' @param family an R ‘family‘ object.
#' @param lambda a numeric number indicating the learning rate
#' @param tol a numeric number indicating the precision of the algorithm
#' @param maxit an integer indicating the maximum number iterations
#'
#' @examples
#' data(iris)
#' X <- model.matrix(Species ~ ., data = iris)
#' Y <- iris$Species
#' fit_m <- my_multiclass(X, Y)
#' @export

my_multiclass <-
  function(X,
           Y,
           maxit = 2e3,
           tol = 1e-10,
           lambda = 0.001){

  y_unique <- unique(Y)
  betas <- list()
  for(i in 1:length(y_unique)){
    y_temp <- ifelse(Y == y_unique[i], 1, 0)
    betas[[i]] <- my_glm(X, y_temp,
                         family = binomial(link = "logit"),
                         step_option = "constant",
                         lambda = lambda,
                         maxit = maxit,
                         tol = tol)$coefficients
  }

  rslt <- list(coefficients = betas, y_lab = y_unique)
  class(rslt) <- "my_multiclass"
  return(rslt)

  #### next step, perform prediction function
}
tqchen07/bis557 documentation built on Dec. 21, 2020, 3:06 a.m.