Rev 30915 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{smooth}\alias{smooth}%\alias{print.tukeysmooth}%\alias{summary.tukeysmooth}\title{Tukey's (Running Median) Smoothing}\description{Tukey's smoothers, \emph{3RS3R}, \emph{3RSS}, \emph{3R}, etc.}\usage{smooth(x, kind = c("3RS3R", "3RSS", "3RSR", "3R", "3", "S"),twiceit = FALSE, endrule = "Tukey", do.ends = FALSE)}\arguments{\item{x}{a vector or time series}\item{kind}{a character string indicating the kind of smoother required;defaults to \code{"3RS3R"}.}\item{twiceit}{logical, indicating if the result should be \dQuote{twiced}.Twicing a smoother \eqn{S(y)} means \eqn{S(y) + S(y - S(y))}, i.e.,adding smoothed residuals to the smoothed values. This decreasesbias (increasing variance).}\item{endrule}{a character string indicating the rule for smoothing at theboundary. Either \code{"Tukey"} (default) or \code{"copy"}.}\item{do.ends}{logical, indicating if the 3-splitting of ties shouldalso happen at the boundaries (\dQuote{ends}). This is only used for\code{kind = "S"}.}}\details{\emph{\code{3}} is Tukey's short notation for running \code{\link{median}}sof length \bold{3},\cr\emph{\code{3R}} stands for \bold{R}epeated \emph{\code{3}} untilconvergence, and\cr\emph{\code{S}} for \bold{S}plitting of horizontal stretches of length 2 or 3.Hence, \emph{\code{3RS3R}} is a concatenation of \code{3R}, \code{S}and \code{3R}, \emph{\code{3RSS}} similarly,whereas \emph{\code{3RSR}} means first \code{3R}and then \code{(S and 3)} \bold{R}epeated until convergence -- whichcan be bad.}\value{An object of class \code{"tukeysmooth"} (which has \code{print} and\code{summary} methods) and is a vector or time series containing thesmoothed values with additional attributes.}\note{S and S-PLUS use a different (somewhat better) Tukey smoother in\code{smooth(*)}.Note that there are other smoothing methods which providerather better results. These were designed for hand calculationsand may be used mainly for didactical purposes.Since \R version 1.2, \code{smooth} \emph{does} really implementTukey's end-point rule correctly (see argument \code{endrule}).\code{kind = "3RSR"} has been the default till \R-1.1,but it can have very bad properties, see the examples.Note that repeated application of \code{smooth(*)} \emph{does}smooth more, for the \code{"3RS*"} kinds.}\references{Tukey, J. W. (1977).\emph{Exploratory Data Analysis},Reading Massachusetts: Addison-Wesley.}\seealso{\code{\link{lowess}};\code{\link{loess}},\code{\link{supsmu}} and\code{\link{smooth.spline}}.}\examples{## see also demo(smooth) !x1 <- c(4, 1, 3, 6, 6, 4, 1, 6, 2, 4, 2) # very artificial(x3R <- smooth(x1, "3R")) # 2 iterations of "3"smooth(x3R, kind = "S")sm.3RS <- function(x, ...)smooth(smooth(x, "3R", ...), "S", ...)y <- c(1,1, 19:1)plot(y, main = "misbehaviour of \"3RSR\"", col.main = 3)lines(sm.3RS(y))lines(smooth(y))lines(smooth(y, "3RSR"), col = 3, lwd = 2)# the horrorx <- c(8:10,10, 0,0, 9,9)plot(x, main = "breakdown of 3R and S and hence 3RSS")matlines(cbind(smooth(x,"3R"),smooth(x,"S"), smooth(x,"3RSS"),smooth(x)))presidents[is.na(presidents)] <- 0 # sillysummary(sm3 <- smooth(presidents, "3R"))summary(sm2 <- smooth(presidents,"3RSS"))summary(sm <- smooth(presidents))all.equal(c(sm2),c(smooth(smooth(sm3, "S"), "S"))) # 3RSS === 3R S Sall.equal(c(sm), c(smooth(smooth(sm3, "S"), "3R")))# 3RS3R === 3R S 3Rplot(presidents, main = "smooth(presidents0, *) : 3R and default 3RS3R")lines(sm3,col = 3, lwd = 1.5)lines(sm, col = 2, lwd = 1.25)}\keyword{robust}\keyword{smooth}