fastLR function

Fast Logistic Regression Fitting Using L-BFGS Algorithm

Fast Logistic Regression Fitting Using L-BFGS Algorithm

fastLR() uses the L-BFGS algorithm to efficiently fit logistic regression. It is in fact an application of the C++ function optim_lbfgs() provided by RcppNumerical to perform L-BFGS optimization.

fastLR( x, y, start = rep(0, ncol(x)), eps_f = 1e-08, eps_g = 1e-05, maxit = 300 )

Arguments

  • x: The model matrix.
  • y: The response vector.
  • start: The initial guess of the coefficient vector.
  • eps_f: Iteration stops if ff/f<epsf|f-f'|/|f|<eps_f, where ff and ff' are the current and previous value of the objective function (negative log likelihood) respectively.
  • eps_g: Iteration stops if g<epsgmax(1,beta)||g|| < eps_g * max(1, ||beta||), where betabeta is the current coefficient vector and gg is the gradient.
  • maxit: Maximum number of iterations.

Returns

fastLR() returns a list with the following components: - coefficients: Coefficient vector

  • fitted.values: The fitted probability values

  • linear.predictors: The fitted values of the linear part, i.e., XbetahatX * beta_hat

  • loglikelihood: The maximized log likelihood

  • converged: Whether the optimization algorithm has converged

Examples

set.seed(123) n = 1000 p = 100 x = matrix(rnorm(n * p), n) beta = runif(p) xb = c(x %*% beta) p = 1 / (1 + exp(-xb)) y = rbinom(n, 1, p) system.time(res1 <- glm.fit(x, y, family = binomial())) system.time(res2 <- fastLR(x, y)) max(abs(res1$coefficients - res2$coefficients))

See Also

glm.fit()

Author(s)

Yixuan Qiu https://statr.me

  • Maintainer: Yixuan Qiu
  • License: GPL (>= 2)
  • Last published: 2023-09-06