# lowess

##### Scatter Plot Smoothing

This function performs the computations for the
*LOWESS* smoother which uses locally-weighted polynomial
regression (see the references).

- Keywords
- smooth

##### Usage

`lowess(x, y = NULL, f = 2/3, iter = 3, delta = 0.01 * diff(range(x)))`

##### Arguments

- x, y
vectors giving the coordinates of the points in the scatter plot. Alternatively a single plotting structure can be specified -- see

`xy.coords`

.- f
the smoother span. This gives the proportion of points in the plot which influence the smooth at each value. Larger values give more smoothness.

- iter
the number of ‘robustifying’ iterations which should be performed. Using smaller values of

`iter`

will make`lowess`

run faster.- delta
See ‘Details’. Defaults to 1/100th of the range of

`x`

.

##### Details

`lowess`

is defined by a complex algorithm, the Ratfor original
of which (by W. S. Cleveland) can be found in the R sources as file
`src/appl/lowess.doc`

. Normally a local linear polynomial fit is
used, but under some circumstances (see the file) a local constant fit
can be used. ‘Local’ is defined by the distance to the
`floor(f*n)`

th nearest neighbour, and tricubic weighting is used
for `x`

which fall within the neighbourhood.

The initial fit is done using weighted least squares. If
`iter > 0`

, further weighted fits are done using the product of
the weights from the proximity of the `x`

values and case weights
derived from the residuals at the previous iteration. Specifically,
the case weight is Tukey's biweight, with cutoff 6 times the MAD of the
residuals. (The current R implementation differs from the original
in stopping iteration if the MAD is effectively zero since the
algorithm is highly unstable in that case.)

`delta`

is used to speed up computation: instead of computing the
local polynomial fit at each data point it is not computed for points
within `delta`

of the last computed point, and linear
interpolation is used to fill in the fitted values for the skipped
points.

##### Value

`lowess`

returns a list containing components
`x`

and `y`

which give the coordinates of the smooth.
The smooth can be added to a plot of the original
points with the function `lines`

: see the examples.

##### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988).
*The New S Language*.
Wadsworth & Brooks/Cole.

Cleveland, W. S. (1979).
Robust locally weighted regression and smoothing scatterplots.
*Journal of the American Statistical Association*, **74**,
829--836.
10.1080/01621459.1979.10481038.

Cleveland, W. S. (1981)
LOWESS: A program for smoothing scatterplots by robust locally
weighted regression.
*The American Statistician*, **35**, 54.
10.2307/2683591.

##### See Also

`loess`

, a newer
formula based version of `lowess`

(with different defaults!).

##### Examples

`library(stats)`

```
# NOT RUN {
require(graphics)
plot(cars, main = "lowess(cars)")
lines(lowess(cars), col = 2)
lines(lowess(cars, f = .2), col = 3)
legend(5, 120, c(paste("f = ", c("2/3", ".2"))), lty = 1, col = 2:3)
# }
```

*Documentation reproduced from package stats, version 3.6.1, License: Part of R 3.6.1*