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 function is a low-level equivalent to `lowess` in the stats package if `weights` is null and to `loess` otherwise. It is intended to give a streamlined common interface to the two functions for use in `normalizeWithinArrays`. Note that, while `lowess` has fewer features than `loess`, it is faster, uses less memory and uses a more accurate interpolation scheme than `loess`, so it is desirable to use `lowess` whenever the extra features of `loess` are not required.

There are a couple of key differences between `loessFit` and `loess` when `weights` is non-NULL. One difference is that `loessFit` returns a linear regression fit if there are insufficient observations to estimate the loess curve, whereas `loess` will return an error.

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`.

### 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

### See Also

An overview of LIMMA functions for normalization is given in 05.Normalization.

See also `lowess` and `loess` in the stats package.

### 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.2.0 Index]