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.

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

a `loess`

object is returned.

- 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 standard errors surfaces are drawn in the 3-dimensional 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`

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.

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

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()`

.

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/).

`cs`

, `random`

,

```
# 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)
if (FALSE) {
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)
}
```

Run the code above in your browser using DataLab