R: Minimizing the L-q norm Family Function

lqnorm {VGAM} | R Documentation

## Minimizing the L-q norm Family Function

### Description

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

### Usage

    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` | 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`.

### Warning

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

### 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.

### Author(s)

Thomas W. Yee

### 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.

### See Also

`gaussianff`.

### 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)
    coef(fit, matrix = TRUE)
    head(fitted(fit))
    fit@misc$qpower
    fit@misc$objectiveFunction

    ## Not run:
    # Graphical check
    with(ldata, plot(x, y, main = paste("LS = red, lqnorm = blue (qpower = ",
                 fit@misc$qpower, "), truth = black", sep = ""), 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"))
    ## End(Not run)

[Package VGAM version 1.0-3 Index]