Minimizes the L-q norm of residuals in a linear model.

lqnorm(qpower = 2, link = "identitylink",
       imethod = 1, imu = NULL, ishrinkage = 0.95)

Arguments

qpower

A single numeric, must be greater than one, called \(q\) below. The absolute value of residuals are raised to the power of this argument, and then summed. This quantity is minimized with respect to the regression coefficients.

Link function applied to the `mean' \(\mu\). See Links for more details.

imethod

Must be 1, 2 or 3. See CommonVGAMffArguments for more information. Ignored if imu is specified.

imu

Numeric, optional initial values used for the fitted values. The default is to use imethod = 1.

ishrinkage

How much shrinkage is used when initializing the fitted values. The value must be between 0 and 1 inclusive, and a value of 0 means the individual response values are used, and a value of 1 means the median or mean is used. This argument is used in conjunction with imethod = 3.

Details

This function minimizes the objective function $$ \sum_{i=1}^n \; w_i (|y_i - \mu_i|)^q $$ where \(q\) is the argument qpower, \(\eta_i = g(\mu_i)\) where \(g\) is the link function, and \(\eta_i\) is the vector of linear/additive predictors. The prior weights \(w_i\) can be inputted using the weights argument of vlm/vglm/vgam etc.; it should be just a vector here since this function handles only a single vector or one-column response.

Numerical problem will occur when \(q\) is too close to one. Probably reasonable values range from 1.5 and up, say. The value \(q=2\) corresponds to ordinary least squares while \(q=1\) corresponds to the MLE of a double exponential (Laplace) distibution. The procedure becomes more sensitive to outliers the larger the value of \(q\).

Value

An object of class "vglmff" (see vglmff-class). The object is used by modelling functions such as vglm, and vgam.

References

Yee, T. W. and Wild, C. J. (1996). Vector generalized additive models. Journal of the Royal Statistical Society, Series B, Methodological, 58, 481–493.

Author

Thomas W. Yee

Note

This VGAM family function is an initial attempt to provide a more robust alternative for regression and/or offer a little more flexibility than least squares. The @misc slot of the fitted object contains a list component called objectiveFunction which is the value of the objective function at the final iteration.

Warning

Convergence failure is common, therefore the user is advised to be cautious and monitor convergence!

See also

Examples

set.seed(123)
ldata <- data.frame(x = sort(runif(nn <- 10 )))
realfun <- function(x) 4 + 5*x
ldata <- transform(ldata, y = realfun(x) + rnorm(nn, sd = exp(-1)))
# Make the first observation an outlier
ldata <- transform(ldata, y = c(4*y[1], y[-1]), x = c(-1, x[-1]))
fit <- vglm(y ~ x, lqnorm(qpower = 1.2), data = ldata)
#> Iteration 1: coefficients =  9.8969381, -2.6531240
#> Iteration 2: coefficients = 10.5148343, -4.1442827
#> Iteration 3: coefficients = 10.4189669, -4.2858735
#> Iteration 4: coefficients = 10.4226089, -4.2980094
#> Iteration 5: coefficients = 10.4226034, -4.2980089
#> Iteration 6: coefficients = 10.4226034, -4.2980089
coef(fit, matrix = TRUE)
#>                    mu
#> (Intercept) 10.422603
#> x           -4.298009
head(fitted(fit))
#>        [,1]
#> 1 14.720612
#> 2  9.186593
#> 3  8.664817
#> 4  8.460069
#> 5  8.152801
#> 6  8.052531
fit@misc$qpower
#> [1] 1.2
fit@misc$objectiveFunction
#> [1] 28.38752

if (FALSE) { # \dontrun{
# Graphical check
with(ldata, plot(x, y,
     main = paste0("LS = red, lqnorm = blue (qpower = ",
     fit@misc$qpower, "), truth = black"), col = "blue"))
lmfit <- lm(y ~ x, data = ldata)
with(ldata, lines(x,  fitted(fit), col = "blue"))
with(ldata, lines(x, lmfit$fitted, col = "red"))
with(ldata, lines(x,  realfun(x),  col = "black")) } # }