Learn R Programming

stats (version 3.5.0)

lowess: Scatter Plot Smoothing

Description

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

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.

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.

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.

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

Run this code
# 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)
# }

Run the code above in your browser using DataLab