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="identity", earg=list(),
           method.init=1, imu=NULL, shrinkage.init=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, earg` | Link function applied to the `mean' mu, and extra argument optionally used by the link function. See `Links` for more details.
`method.init` | 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 `method.init=1`.
`shrinkage.init` | 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 `method.init=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)
    d = data.frame(x = sort(runif(n <- 10 )))
    realfun = function(x) 4 + 5*x
    d = transform(d, y = realfun(x) + rnorm(n, sd=exp(1)))
    # Make the first observation an outlier
    d = transform(d, y = c(4*y[1], y[-1]), x=c(-1, x[-1]))
    fit = vglm(y ~ x, fam = lqnorm(qpower=1.2), data=d)
    coef(fit, matrix=TRUE)
    head(fitted(fit))
    fit@misc$qpower
    fit@misc$objectiveFunction

    ## Not run:
    # Graphical check
    with(d, plot(x, y, main=paste("LS=red, lqnorm=blue (qpower = ",
                 fit@misc$qpower, "), truth=black", sep=""), col="blue"))
    it = lm(y ~ x, data=d)
    with(d, lines(x, fitted(fit), col="blue"))
    with(d, lines(x,   it$fitted, col="red"))
    with(d, lines(x, realfun(x),  col="black"))
    ## End(Not run)

[Package VGAM version 0.7-9 Index]