Skip to content
Prev 360435 / 398503 Next

Linear Regressions with constraint coefficients

This is a quadratic programming problem that you can solve using
either a quadratic programming solver with constraints or a general
nonlinear solver with constraints.  See
https://cran.r-project.org/web/views/Optimization.html
for more info on what is available.

Here is an example using a nonlinear least squares solver and
non-negative bound constraints. The constraint that the coefficients
sum to 1 is implied by dividing them by their sum and then dividing
the coefficients found by their sum at the end:

# test data
set.seed(123)
n <- 1000
X1 <- rnorm(n)
X2 <- rnorm(n)
X3 <- rnorm(n)
Y <- .2 * X1 + .3 * X2 + .5 * X3 + rnorm(n)

# fit
library(nlmrt)
fm <- nlxb(Y ~ (b1 * X1 + b2 * X2 + b3 * X3)/(b1 + b2 + b3),
     data = list(Y = Y, X1 = X1, X2 = X2, X3 = X3),
     lower = numeric(3),
     start = list(b1 = 1, b2 = 2, b3 = 3))

giving the following non-negative coefficients which sum to 1 that are
reasonably close to the true values of 0.2, 0.3 and 0.5:
b1      b2      b3
0.18463 0.27887 0.53650


On Tue, Apr 26, 2016 at 8:39 AM, Aleksandrovic, Aljosa (Pfaeffikon)
<Aljosa.Aleksandrovic at man.com> wrote: