loess {modreg} | R Documentation |
Local Polynomial Regression Fitting
Description
Fit a polynomial surface determined by one or more numerical predictors, using local fitting.
Usage
loess(formula, data, weights, subset, na.action, model = FALSE,
span = 0.75, enp.target, degree = 2,
parametric = FALSE, drop.square = FALSE, normalize = TRUE,
family = c("gaussian", "symmetric"),
method = c("loess", "model.frame"),
control = loess.control(...), ...)
Arguments
formula |
a formula specifying the response and one or more numeric predictors (best specified via an interaction, but can also be specified additively). |
data |
an optional data frame within which to look first for the response, predictors and weights. |
weights |
optional weights for each case. |
subset |
an optional specification of a subset of the data to be used. |
na.action |
the action to be taken with missing values in the response or predictors. The default is to stop. |
model |
should the model frame be returned? |
span |
the parameter |
enp.target |
an alternative way to specify |
degree |
the degree of the polynomials to be used, up to 2. |
parametric |
should any terms be fitted globally rather than locally? Terms can be specified by name, number or as a logical vector of the same length as the number of predictors. |
drop.square |
for fits with more than one predictor and
|
normalize |
should the predictors be normalized to a common scale if there is more than one? The normalization used is to set the 10% trimmed standard deviation to one. Set to false for spatial coordinate predictors and others know to be a common scale. |
family |
if |
method |
fit the model or just extract the model frame. |
control |
control parameters: see |
... |
control parameters can also be supplied directly. |
Details
Fitting is done locally. That is, for the fit at point x, the fit is
made using points in a neighbourhood of x, weighted by their distance
from x (with differences in ‘parametric’ variables being ignored when
computing the distance). The size of the neighbourhood is controlled
by \alpha
(set by span
or enp.target
). For
\alpha < 1
, the neighbourhood includes proportion \alpha
of the points, and these have tricubic weighting (proportional to
(1 - \mathrm{(dist/maxdist)}^3)^3
.
For \alpha > 1
, all points are used, with the ‘maximum distance’
assumed to be \alpha
times the actual maximum distance.
For the default family, fitting is by (weighted) least squares. For
family="symmetric"
a few iterations of an M-estimation
procedure with Tukey's biweight are used. Be aware that as the initial
value is the least-squares fit, this need not be a very resistant fit.
It can be important to tune the control list to achieve acceptable speed. See loess.control for details.
Value
An object of class "loess"
.
Note
As this is based on the cloess
package available at
netlib
, it is similar to but not identical to the loess
function of S. In particular, conditioning is not implemented.
The memory usage of this implementation of loess
is roughly
quadratic in the number of points, with 1000 points taking about 10Mb.
Author(s)
B.D. Ripley, based on the cloess
package of Cleveland,
Grosse and Shyu.
References
W.S. Cleveland, E. Grosse and W.M. Shyu (1992) Local regression models. Chapter 8 of Statistical Models in S eds J.M. Chambers and T.J. Hastie, Wadsworth & Brooks/Cole.
See Also
loess.control
,
predict.loess
Examples
data(cars)
cars.lo <- loess(dist ~ speed, cars)
predict(cars.lo, data.frame(speed=seq(5, 30, 1)), se=TRUE)
# to get extrapolation
cars.lo2 <- loess(dist ~ speed, cars,
control=loess.control(surface="direct"))
predict(cars.lo2, data.frame(speed=seq(5, 30, 1)), se=TRUE)