lsei (version 1.2-0)

lsei: Least Squares Solution under Equality and Inequality Constraints

Description

The lsei function solves a least squares problem under both equality and inequality constraints and implements the LSEI algorithm described in Lawson and Hanson (1974, 1995).

The lsi function solves a least squares problem under inequality constraints and implements the LSI algorithm described in Lawson and Hanson (1974, 1995).

The ldp function solves a least distance programming problem under inequality constraints and implements the LDP algorithm described in Lawson and Hanson (1974, 1995).

The qp function solves a quadratic programming problem, by transforming the problem into a least squares one under the same equality and inequality constraints, which is then solved by function lsei.

The NNLS Fortran implementation used internally is downloaded from http://www.netlib.org/lawson-hanson.

Usage

lsei(a, b, c=NULL, d=NULL, e=NULL, f=NULL, lower=-Inf, upper=Inf)
lsi(a, b, e=NULL, f=NULL, lower=-Inf, upper=Inf)
ldp(e, f, tol=1e-15)
qp(q, p, c=NULL, d=NULL, e=NULL, f=NULL, lower=-Inf, upper=Inf, tol=1e-15)

Arguments

a

Design matrix.

b

Response vector.

c

Matrix of numeric coefficients on the left-hand sides of equality constraints. If it is NULL, c and d are ignored.

d

Vector of numeric values on the right-hand sides of equality constraints.

e

Matrix of numeric coefficients on the left-hand sides of inequality constraints. If it is NULL, e and f are ignored.

f

Vector of numeric values on the right-hand sides of inequality constraints.

q

Matrix of numeric values for the quadratic term of a quadratic programming problem.

p

Vector of numeric values for the linear term of a quadratic programming problem.

lower, upper

Bounds on the solutions, as a way to specify such simple inequality constraints.

tol

Tolerance, for checking compatibility of inequalities in lsi and for calculating pseudo-rank in qp.

Value

A vector of the solution values

Details

Given matrices a, c and e, and vectors b, d and f, function lsei solves the least squares problem under both equality and inequality constraints:

$$\mathrm{minimize\ \ } || a x - b ||,$$ $$\mathrm{subject\ to\ \ } c x = d, e x \ge f.$$

Function lsi solves the least squares problem under inequality constraints:

$$\mathrm{minimize\ \ } || a x - b ||,$$ $$\mathrm{\ \ \ subject\ to\ \ } e x \ge f.$$

Function ldp solves the least distance programming problem under inequality constraints:

$$\mathrm{minimize\ \ } || x ||,$$ $$\mathrm{\ \ \ subject\ to\ \ } e x \ge f.$$

Function qp solves the quadratic programming problem:

$$\mathrm{minimize\ \ } \frac12 x^T q x + p^T x,$$ $$\mathrm{subject\ to\ \ } c x = d, e x \ge f.$$

References

Lawson and Hanson (1974, 1995). Solving least squares problems. Englewood Cliffs, N.J., Prentice-Hall.

See Also

nnls,hfti.

Examples

Run this code
# NOT RUN {
beta = c(rnorm(2), 1)
beta[beta<0] = 0
beta = beta / sum(beta)
a = matrix(rnorm(18), ncol=3)
b = a %*% beta + rnorm(3,sd=.1)
c = t(rep(1, 3))
d = 1
e = diag(1,3)
f = rep(0,3)
lsei(a, b)                        # under no constraint
lsei(a, b, c, d)                  # under eq. constraints
lsei(a, b, e=e, f=f)              # under ineq. constraints
lsei(a, b, c, d, e, f)            # under eq. and ineq. constraints
lsei(a, b, rep(1,3), 1, lower=0)  # same solution
q = crossprod(a)
p = -drop(crossprod(b, a))
qp(q, p, rep(1,3), 1, lower=0)    # same solution

## Example from Lawson and Hanson (1974), p.170
a = cbind(c(.25,.5,.5,.8),rep(1,4))
b = c(.5,.6,.7,1.2)
e = cbind(c(1,0,-1),c(0,1,-1))
f = c(0,0,-1)
lsi(a, b, e, f)      # Solution: 0.6213152 0.3786848

## Example from Lawson and Hanson (1974), p.171:
e = cbind(c(-.207,-.392,.599), c(2.558, -1.351, -1.206))
f = c(-1.3,-.084,.384)
ldp(e, f)            # Solution: 0.1268538 -0.2554018
# }

Run the code above in your browser using DataCamp Workspace