Learn R Programming

pracma (version 1.7.3)

L1linreg: L1 Linear Regression

Description

Solve the linear system A x = b in an Lp sense, that is minimize the term sum |b - A x|^p. The case p=1 is also called ``least absolute deviation'' (LAD) regression.

Usage

L1linreg(A, b, p = 1, tol = 1e-07, maxiter = 200)

Arguments

A
matrix of independent variables.
b
independent variables.
p
the p in L^p norm, p<=1< code="">.
tol
relative tolerance.
maxiter
maximum number of iterations.

Value

  • Returns a list with components x the linear coefficients describing the solution, reltol the relative tolerance reached, and niter the number of iterations.

Details

L1/Lp regression is here solved applying the ``iteratively reweighted least square'' (IRLS) method in which each step involves a weighted least squares problem.

If an intercept term is required, add a unit column to A.

References

Dasgupta, M., and S.K. Mishra (2004). Least absolute deviation estimation of linear econometric models: A literature review. MPRA Paper No. 1781. URL:http://mpra.ub.uni-muenchen.de/1781/1/MPRA_paper_1781.pdf

See Also

lm, lsqnonlin, quantreg::rq

Examples

Run this code
m <- 101; n <- 10       # no. of data points, degree of polynomial
x <- seq(-1, 1, len=m)
y <- runge(x)           # Runge's function
A <- outer(x, n:0, '^') # Vandermonde matrix
b <- y

( sol <- L1linreg(A, b) )
# $x
# [1] -21.93242   0.00000  62.91092   0.00000 -67.84854   0.00000
# [7]  34.14400   0.00000  -8.11899   0.00000   0.84533
# 
# $reltol
# [1] 6.712355e-10
# 
# $niter
# [1] 81

# minimum value of polynomial L1 regression
sum(abs(polyval(sol$x, x) - y))
# [1] 3.061811

Run the code above in your browser using DataLab