Skip to contents

This function solves a system of equations, whose solution characterizes the asymptotic bias and variance of the M-estimator (in case of the MLE, it is the negative log-likelihood).

Usage

find_param(
  rho_prime = rho_prime_logistic,
  f_prime1 = f_prime1_logistic,
  f_prime0 = f_prime0_logistic,
  kappa,
  gamma,
  beta0 = 0,
  intercept = TRUE,
  verbose = FALSE,
  x_init = NULL
)

Arguments

rho_prime

A function that computes the success probability \(\rho'(t) = \mathrm{P}(Y=1 | X^\top \beta = t)\), here \(\beta\) is the coefficient. The default is logistic model.

f_prime1

A function. Derivative of the loss function when \(Y = 1\). The default is the derivative of the negative log-likelihood of logistic regression when \(Y = 1\).

f_prime0

A function. Derivative of the loss function when \(Y = -1\). The default is the derivative of the negative log-likelihood of logistic regression when \(Y = -1\).

kappa

Numeric. The problem dimension \(\kappa = p/n\).

gamma

Numeric. Signal strength \(\gamma = \sqrt{\mathrm{Var}(X^\top \beta)}\).

beta0

Numeric. Intercept.

intercept

If TRUE, the glm contains an intercept term. intercept = TRUE by default.

verbose

If TRUE, print progress at each step.

x_init

Initial values for the parameters.

Value

A vector solution to the system. When gamma != 0 and b !=0, returns \((\alpha_\star, \lambda_\star, \sqrt{\kappa}\sigma_\star, b_\star)\). When signal strength is zero (gamma = 0), returns the solution to the system with three equations \((\alpha_\star = 0, \lambda_\star, \sqrt{\kappa}\sigma_\star, b_\star)\). When gamma = 0 and

b = 0, returns \((\alpha_\star = 0, \lambda_\star, \sqrt{\kappa}\sigma_\star)\).

References

The Impact of Regularization on High-dimensional Logistic Regression, Fariborz Salehi, Ehsan Abbasi and Babak Hassibi, Proceedings of NeurIPS 2019.

Examples

# Compute parameters for a logistic model
param <- find_param(kappa = 0.1, gamma = sqrt(5))
# Asymptotic bias
param[1]
#> [1] 1.169051
# Standard deviation
param[3] / sqrt(0.1)
#> [1] 3.349089
# Another example
param <- find_param(kappa = 0.1, gamma = 0, intercept = FALSE)
# Asymptotic standard deviation
param[2] / sqrt(0.1)
#> [1] 1.565013