smooth {stats} | R Documentation |

Tukey's smoothers, *3RS3R*, *3RSS*, *3R*, etc.

smooth(x, kind = c("3RS3R", "3RSS", "3RSR", "3R", "3", "S"), twiceit = FALSE, endrule = "Tukey", do.ends = FALSE)

`x` |
a vector or time series |

`kind` |
a character string indicating the kind of smoother required;
defaults to `"3RS3R"` . |

`twiceit` |
logical, indicating if the result should be “twiced”.
Twicing a smoother S(y) means S(y) + S(y - S(y)), i.e.,
adding smoothed residuals to the smoothed values. This decreases
bias (increasing variance). |

`endrule` |
a character string indicating the rule for smoothing at the
boundary. Either `"Tukey"` (default) or `"copy"` . |

`do.ends` |
logical, indicating if the 3-splitting of ties should
also happen at the boundaries (“ends”). This is only used for
`kind = "S"` . |

* 3* is Tukey's short notation for running

`median`

s
of length `3R`

`3`

`S`

Hence, * 3RS3R* is a concatenation of

`3R`

, `S`

and `3R`

, `3RSS`

`3RSR`

`3R`

and then `(S and 3)`

An object of class `"tukeysmooth"`

(which has `print`

and
`summary`

methods) and is a vector or time series containing the
smoothed values with additional attributes.

S and S-PLUS use a different (somewhat better) Tukey smoother in
`smooth(*)`

.
Note that there are other smoothing methods which provide
rather better results. These were designed for hand calculations
and may be used mainly for didactical purposes.

Since **R** version 1.2, `smooth`

*does* really implement
Tukey's end-point rule correctly (see argument `endrule`

).

`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 `smooth(*)`

*does*
smooth more, for the `"3RS*"`

kinds.

Tukey, J. W. (1977).
*Exploratory Data Analysis*,
Reading Massachusetts: Addison-Wesley.

`lowess`

;
`loess`

,
`supsmu`

and
`smooth.spline`

.

## 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 horror x <- 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 # silly summary(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 S all.equal(c(sm), c(smooth(smooth(sm3, "S"), "3R")))# 3RS3R === 3R S 3R plot(presidents, main = "smooth(presidents0, *) : 3R and default 3RS3R") lines(sm3,col = 3, lwd = 1.5) lines(sm, col = 2, lwd = 1.25)

[Package *stats* version 2.5.0 Index]