l1linreg.RdSolve 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.
L1linreg(A, b, p = 1, tol = 1e-07, maxiter = 200)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.
Returns a list with components x the linear coefficients describing
the solution, reltol the relative tolerance reached, and niter
the number of iterations.
Dasgupta, M., and S.K. Mishra (2004). Least absolute deviation estimation of linear econometric models: A literature review. MPRA Paper No. 1781.
In this case of p=1, the problem would be better approached by use
of linear programming methods.
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] -2.193242e+01 -3.463779e-13 6.291092e+01 6.559040e-13 -6.784854e+01
#> [6] -3.931573e-13 3.414400e+01 8.367666e-14 -8.118989e+00 -4.699117e-15
#> [11] 8.453273e-01
#>
#> $reltol
#> [1] 6.710152e-10
#>
#> $niter
#> [1] 81
#>
# $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
# [1] 3.061811