Scatter Plot Smoothing
This function performs the computations for the LOWESS smoother which uses locally-weighted polynomial regression (see the references).
lowess(x, y = NULL, f = 2/3, iter = 3, delta = 0.01 * diff(range(x)))
- x, y
- vectors giving the coordinates of the points in the scatter plot.
Alternatively a single plotting structure can be specified -- see
- the smoother span. This gives the proportion of points in the plot which influence the smooth at each value. Larger values give more smoothness.
- the number of
robustifyingiterations which should be performed. Using smaller values of
Details. Defaults to 1/100th of the range of
lowess is defined by a complex algorithm, the Ratfor original
of which (by W. S. Cleveland) can be found in the Rsources as file
floor(f*n)th nearest neighbour, and tricubic weighting is used
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 Rimplementation 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
delta of the last computed point, and linear
interpolation is used to fill in the fitted values for the skipped
lowessreturns a list containing components
ywhich 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.
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. J. American Statistical Association 74, 829--836.
Cleveland, W. S. (1981) LOWESS: A program for smoothing scatterplots by robust locally weighted regression. The American Statistician 35, 54.
loess, a newer
formula based version of
lowess (with different defaults!).
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)