loessFit {limma}R Documentation

Fast Simple Loess

Description

A fast version of locally weighted regression when there is only one x-variable and only the fitted values and residuals are required.

Usage

loessFit(y, x, weights=NULL, span=0.3, bin=0.01/(2-is.null(weights)), iterations=4)

Arguments

y numeric vector of response values. Missing values are allowed.
x numeric vector of predictor values Missing values are allowed.
weights numeric vector of non-negative weights. Missing values are allowed.
span numeric parameter between 0 and 1 specifying proportion of data to be used in the local regression moving window. Larger numbers give smoother fits.
bin numeric value between 0 and 1 giving the proportion of the data which can be grouped in a single bin when doing local regression fit. bin=0 forces an exact local regression fit with no interpolation.
iterations number of iterations of loess fit

Details

This is a wrapper function to the Fortran and C code in the stats package which underlies the lowess and loess functions. Its is to give a streamlined common interface to lowess and loess for use in normalizeWithinArrays. When weights is null, this function is in effect a call to lowess in the stats package, with appropropriate choice of tuning parameters. When weights is non-null, it is in effect a call to loess. See the help pages for those functions for references and credits.

Note tha lowess is faster, needs less memory and is able to use a more accurate interpolation scheme than loess, so it is desirable to use lowess whenever loess is not needed to handle quantitative weights.

The arguments span, cell and iterations here have the same meaning as in loess. span is equivalent to the argument f of lowess and iterations is equivalent to iter+1. The parameter bin is intended to give a simple uniform interface to the delta argument of lowess and the cell argument of loess. bin translates to delta=bin*diff(range(x)) in a call to lowess or to cell=bin/span in a call to loess.

Unlike lowess, loessFit returns values in original rather than sorted order. Also unlike lowess, loessFit allows missing values, the treatment being analogous to na.exclude. Unlike loess, loessFit returns a linear regression fit if there are insufficient observations to estimate the loess curve.

Value

A list with components

fitted numeric vector of same length as y giving the loess fit
residuals numeric vector of same length as x giving residuals from the fit

Author(s)

Gordon Smyth, based on code from lowess and loess by BD Ripley

See Also

See lowess and loess in the stats package.

See 05.Normalization for an outline of the limma package normalization functions.

Examples

y <- rnorm(1000)
x <- rnorm(1000)
w <- rep(1,1000)
# The following are equivalent apart from execution time
# and interpolation inaccuracies
system.time(fit <- loessFit(y,x)$fitted)
system.time(fit <- loessFit(y,x,w)$fitted)
system.time(fit <- fitted(loess(y~x,weights=w,span=0.3,family="symmetric",iterations=4)))
# The same but with sorted x-values
system.time(fit <- lowess(x,y,f=0.3)$y)

[Package limma version 2.18.2 Index]