\Header{loessFit}{Fast Simple Loess}
\keyword{models}{loessFit}
\begin{Description}\relax
A fast version of locally weighted regression when there is only one x-variable and only the fitted values and residuals are required.
\end{Description}
\begin{Usage}
\begin{verbatim}
loessFit(y, x, weights=NULL, span=0.3, bin=0.01/(2-is.null(weights)), iterations=4)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{y}] numeric vector of response values.  Missing values are allowed.
\item[\code{x}] numeric vector of predictor values  Missing values are allowed.
\item[\code{weights}] numeric vector of non-negative weights.  Missing values are allowed.
\item[\code{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.
\item[\code{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.
\code{bin=0} forces an exact local regression fit with no interpolation.
\item[\code{iterations}] number of iterations of loess fit
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
This function is a low-level equivalent to \code{lowess} in the base library if \code{weights} is null and to \code{loess} in the modreg package otherwise.
It is used by \code{\Link{normalizeWithinArrays}}.
The parameters \code{span}, \code{cell} and \code{iterations} have the same meaning as in \code{loess}.
\code{span} is equivalent to the argument \code{f} to \code{lowess} and \code{iterations} is equivalent to \code{iter+1}.
Unlike \code{lowess} this function returns values in original rather than sorted order.

The parameter \code{bin} is equivalent to \code{delta=bin*diff(range(x))} in a call to \code{lowess} when \code{weights=NULL} or to \code{cell=bin/span} in a call to \code{loess} when \code{weights} are given.

The treatment of missing values is analogous to \code{na.exclude}.\end{Details}
\begin{Value}
A list with components
\begin{ldescription}
\item[\code{fitted}] numeric vector of same length as \code{y} giving the loess fit
\item[\code{residuals}] numeric vector of same length as \code{x} giving residuals from the fit
\end{ldescription}
\end{Value}
\begin{Author}\relax
Gordon Smyth
\end{Author}
\begin{SeeAlso}\relax
An overview of LIMMA functions for normalization is given in \link{4.Normalization}.

See also \code{\Link{lowess}} in the base library and \code{\Link{loess}} in the modreg package.\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
y <- rnorm(1000)
x <- rnorm(1000)
w <- rep(1,1000)
# The following are equivalent apart from execution time
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)))
# Similar but with sorted x-values
system.time(fit <- lowess(x,y,f=0.3)$y)
\end{ExampleCode}
\end{Examples}

