RcppNumerical (version 0.4-0)

fastLR: Fast Logistic Regression Fitting Using L-BFGS Algorithm

Description

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.

Usage

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

Value

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., \(X\hat{\beta}\)

loglikelihood

The maximized log likelihood

converged

Whether the optimization algorithm has converged

Arguments

x

The model matrix.

y

The response vector.

start

The initial guess of the coefficient vector.

eps_f

Iteration stops if \(|f-f'|/|f|<\epsilon_f\), where \(f\) and \(f'\) are the current and previous value of the objective function (negative log likelihood) respectively.

eps_g

Iteration stops if \(||g|| < \epsilon_g * \max(1, ||\beta||)\), where \(\beta\) is the current coefficient vector and \(g\) is the gradient.

maxit

Maximum number of iterations.

Author

Yixuan Qiu https://statr.me

See Also

Examples

Run this code
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))

Run the code above in your browser using DataCamp Workspace