loessFit {limma}R Documentation

Fast Simple Loess

Description

A fast version of locally weighted linear 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 purpose is to give a unified and streamlined 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 with degree=1. See the help pages for those functions for references and credits.

Note that 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 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. This is an attempt to put the delta and cell arguments on comparable scales.

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 3.10.2 Index]