lowess(x, y = NULL, f = 2/3, iter = 3, delta = 0.01 * diff(range(x)))
xy.coords
.iter
will make lowess
run faster.x
.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.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.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)
Run the code above in your browser using DataLab