huber {CVXR} | R Documentation |
Huber Function
Description
The elementwise Huber function, Huber(x, M) = 1
2M|x|-M^2
for
|x| \geq |M|
|x|^2
for
|x| \leq |M|.
Usage
huber(x, M = 1)
Arguments
x |
An Expression, vector, or matrix. |
M |
(Optional) A positive scalar value representing the threshold. Defaults to 1. |
Value
An Expression representing the Huber function evaluated at the input.
Examples
set.seed(11)
n <- 10
m <- 450
p <- 0.1 # Fraction of responses with sign flipped
# Generate problem data
beta_true <- 5*matrix(stats::rnorm(n), nrow = n)
X <- matrix(stats::rnorm(m*n), nrow = m, ncol = n)
y_true <- X %*% beta_true
eps <- matrix(stats::rnorm(m), nrow = m)
# Randomly flip sign of some responses
factor <- 2*rbinom(m, size = 1, prob = 1-p) - 1
y <- factor * y_true + eps
# Huber regression
beta <- Variable(n)
obj <- sum(huber(y - X %*% beta, 1))
prob <- Problem(Minimize(obj))
result <- solve(prob)
result$getValue(beta)
[Package CVXR version 1.0-14 Index]