R: Specify a loess fit in a GAMLSS formula

lo {gamlss} | R Documentation

## Specify a loess fit in a GAMLSS formula

### Description

Allows the user to specify a loess fit within a GAMLSS model. This function is similar to the `lo` function in the `gam` implementation of package `gam` see Chambers and Hastie (1991).

The function `vis.lo()` allows plotting the results.

### Usage

    lo(formula, control = lo.control(...), ...)
    lo.control(span = 0.75, enp.target = NULL,
              degree = 2, parametric = FALSE, drop.square = FALSE,
              normalize = TRUE, family = c("gaussian", "symmetric"),
              method = c("loess", "model.frame"),
              surface = c("interpolate", "direct"),
              statistics = c("approximate", "exact", "none"),
              trace.hat = c("exact", "approximate"),
              cell = 0.2, iterations = 4,iterTrace = FALSE, ...)
    vis.lo(obj, se=-1, rug = FALSE, partial.resid = FALSE,
              col.term = "darkred",  col.shaded = "gray",
              col.res = "lightblue", col.rug = "gray", lwd.term = 1.5,
              cex.res = 1, pch.res = par("pch"),
              type = c("persp", "contour"), col.surface = "gray",
              nlevels = 30, n.grid = 30, image = TRUE, ...)

### Arguments

`formula` | a formula specifying the explanatory variables
`control` | a control to be passed to the `loess` function
`...` | extra arguments
`span` | the number of observations in a neighbourhood. This is the smoothing parameter for a loess fit.
`enp.target` | an alternative way to specify span, as the approximate equivalent number degrees of freedom to be used. See also the help file of the R function `loess`. For consistency with the older version of `lo` the effective degrees of freedom `df` can be also specified instead of span, e.g. `df=5`
`degree` | the degree of local polynomial; can be 1 or 2. See also the help file of `loess`
`parametric` | should any terms be fitted globally rather than locally? See the help file of `loess`
`drop.square` | for fits with more than one predictor and degree=2, should the quadratic term be dropped for particular predictors?. See also help file of `loess`
`normalize` | should the predictors be normalized to a common scale if there is more than one? See the help file of `loess`
`family` | if "gaussian" fitting is by least-squares, and if "symmetric" a re-descending M estimator is used with Tukey's biweight function. See the help file of `loess`
`method` | fit the model or just extract the model frame. See the help file of `loess`
`surface` | should the fitted surface be computed exactly or via interpolation from a kd tree? See also the help file of `loess.control`
`statistics` | should the statistics be computed exactly or approximately? See the help file of `loess.control`
`trace.hat` | should the trace of the smoother matrix be computed exactly or approximately? See the help file of `loess.control`
`cell` | if interpolation is used this controls the accuracy of the approximation via the maximum number of points in a cell in the kd tree. See the help file of `loess.control`
`iterations` | the number of iterations used in robust fitting. See the help file of `loess.control`
`iterTrace` | logical (or integer) determining if tracing information during the robust iterations (iterations>= 2) is produced. See the help file of `loess.control`

`obj` | an `lowss` object fitted within gamlss
`se` | if `se>0` then stadard erros surfanes are drawn in the 3-dimentional plot. Set `se` at the required level i.e `se=1.96` will be an approximated 95% CI.
`rug` | whether to plot a rug in the plot
`partial.resid` | whether to plot the partial residuals
`col.term` | the colour of the line of fitted term
`cex.res` | the shading of standard
`col.shaded` | the shading of standard error intervals
`col.res` | the colour of partial residuals
`col.rug` | the colour of the rug
`lwd.term` | the width of the line
`pch.res` | The character for the partial residuals
`type` | The type of the plot if the x's are two dimensional
`col.surface` | the colour of the fitted surface
`nlevels` | the number of levels used in `cotour()` plot.
`n.grid` | The number of points to evaluate the surface
`image` | whether to use `image()` or just `contour`

### Details

Note that `lo` itself does no smoothing; it simply sets things up for the function `gamlss.lo()` which is used by the backfitting function `gamlss.add()`.

### Value

a loess object is returned.

### Warning

In this version the first argument is a formula NOT a list as in the previous one

### Note

Note that `lo` itself does no smoothing; it simply sets things up for `gamlss.lo()` to do the backfitting.

### Author(s)

Mikis Stasinopoulos d.stasinopoulos@londonmet.ac.uk, Bob Rigby, (The original `lo()` function was based on the Trevor Hastie's S-plus `lo()` function. See also the documentation of the `loess` function for the authorship of the function.

### References

Chambers, J. M. and Hastie, T. J. (1991). Statistical Models in S, Chapman and Hall, London.

Rigby, R. A. and Stasinopoulos D. M. (2005). Generalized additive models for location, scale and shape,(with discussion), Appl. Statist., 54, part 3, pp 507-554.

Rigby, R. A., Stasinopoulos, D. M., Heller, G. Z., and De Bastiani, F. (2019) Distributions for modeling location, scale, and shape: Using GAMLSS in R, Chapman and Hall/CRC. An older version can be found in https://www.gamlss.com/.

Stasinopoulos D. M. Rigby R.A. (2007) Generalized additive models for location scale and shape (GAMLSS) in R. Journal of Statistical Software, Vol. 23, Issue 7, Dec 2007, https://www.jstatsoft.org/v23/i07/.

Stasinopoulos D. M., Rigby R.A., Heller G., Voudouris V., and De Bastiani F., (2017) Flexible Regression and Smoothing: Using GAMLSS in R, Chapman and Hall/CRC.

(see also https://www.gamlss.com/).

### See Also

`cs`, `random`,

### Examples

    # fitting a loess curve with span=0.4 plus the a quarterly  effect
    aids1<-gamlss(y~lo(~x,span=0.4)+qrt,data=aids,family=PO) #
    term.plot(aids1, page=1)
    ## Not run:
    r1 <- gamlss(R~lo(~Fl)+lo(~A), data=rent, family=GA)
     term.plot(r1, pages=1)
     vis.lo(getSmo(r1, which=1), partial=T)
    r2 <- gamlss(R~lo(~Fl+A), data=rent, family=GA)
     term.plot(r2, pages=1)
     vis.lo(getSmo(r2, which=1))
     vis.lo(getSmo(r2, which=1), se=1.97)
     vis.lo(getSmo(r2, which=1), partial.res=T)

    ## End(Not run)

[Package gamlss version 5.3-2 Index]