Evaluation of Local Regression Surfaces

DESCRIPTION:
Returns the surface values of local regression surfaces and/or standard errors.

USAGE:
predict.loess(object, newdata,  se.fit = FALSE)

REQUIRED ARGUMENTS:
object:
a loess object.

OPTIONAL ARGUMENTS:
newdata:
a data frame specifying the values of the predictors at which the evaluation is to be carried out. The default is to predict at the data used to fit object.
se.fit:
if TRUE, estimates of the standard errors of the surface values and other statistical information, are returned along with the surface values.

VALUE:
if se.fit=FALSE, a vector or array of surface values evaluated at newdata. The evaluation is on the scale of the expression given on the left side of formula; for example, if the expression is log(temperature), then the evaluation is on the log scale. If se.fit=TRUE, then a list is returned, with the following components.
fit:
the evaluated loess surface at newdata.
se.fit:
estimates of the standard errors of the surface values.
residual.scale:
estimate of the scale of the residuals.
df:
the degrees of freedom of the t-distribution used to compute pointwise confidence intervals for the evaluated surface. The function pointwise can be used to compute such intervals.

DETAILS:
This function is a method for the generic function predict for class "loess". It can be invoked by calling predict for an object of the appropriate class, or directly by calling predict.loess regardless of the class of the object.

For one predictor, newdata can be a vector rather than a data frame. For two or more predictors, the names of newdata must include the names of predictors used in formula as they appear on the database from which they come. For example, if the right side of formula is log(E)*C, then there must be names C and E in newdata. Note that the specification of E in this example is not on the transformed but rather on the original scale.

For two or more predictors, there are two data structures that can be given to newdata. The first is a plain old data frame; the result is a vector whose length is equal to the number of rows of newdata, and the element of the vector in position i is the evaluation of the surface at row i of newdata. A second data structure can be used when the evaluation points form a grid. In this case, newdata is the result of the function expand.grid. If se.fit=FALSE, the result of predict.loess is a numeric array whose dimension is equal to the number of predictors; if se.fit=TRUE, then the components fit and se.fit are both such arrays.

The computations of predict.loess that produce the component se.fit are much more costly than those that produce fit, so the number of points at which standard errors are computed should be modest compared to those at which we do evaluations. Often this means calling predict.loess twice, once at a large number of points with se.fit equal to FALSE to get a thorough description of the surface, and once at a small number of points to get standard-error information.

Suppose the computation method for loess surfaces is interpolate, the default for the argument surface. Then the evaluation values of a numeric predictor must lie within the range of the values of the predictor used in the fit. The evaluation values for a predictor that is a factor must be one of the levels of the factor. For any evaluation point for which these conditions are not met, an NA is returned.

If se.fit is TRUE or the computation method for loess surfaces is direct, then predict.loess must use the data originally used to fit the loess model to compute the predictions. If you fit the loess model using the data argument, then the data set given by data should not be changed between the fit and the prediction. If you attached a data frame to supply data for the model, then that same data frame must be attached to compute the predicted values.


SEE ALSO:
data.frame , expand.grid , loess , loess.object , predict , pointwise , seq .

EXAMPLES:
attach(ethanol)
ethanol.cp <- loess(formula = NOx ~ C * E, span = 1/2, degree = 2,
              parametric = "C", drop.square = "C")

# Example 1 - evaluation at 5 points # newdata is a data frame with variables C and E predict(ethanol.cp, newdata) [1] 0.2815825 2.5971411 3.0667178 3.2555778 1.0637788

# Example 2 - evaluation at 9 grid points C.marginal <- seq(min(C), max(C), length = 3) E.marginal <- seq(min(E), max(E), length = 3) CE.grid <- expand.grid(list(C = C.marginal, E = E.marginal)) predict(ethanol.cp, CE.grid)

# Gives the following output: E=0.5350 E=0.8835 E=1.2320 C= 7.50 -0.1039991 3.399360 0.6823181 C=12.75 0.2057837 3.850801 0.6481270 C=18.00 0.5155665 4.302243 0.6139359

# Example 3 - evaluate and compute estimates of standard errors gas.m <- loess(formula = NOx ~ E, span = 2/3, degree = 2) predict(gas.m, newdata = seq(min(E), max(E),length = 5), se.fit = T)$se.fit

# Gives the following output: [1] 0.18423300 0.07098989 0.076443326 0.07503963 0.11885234