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.3 Index]