# smooth

##### Tukey's (Running Median) Smoothing

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

##### Usage

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

##### Arguments

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

.

##### Details

* 3* is Tukey's short notation for running

`median`

s
of length **3**,

* 3R* stands for

**R**epeated

*until convergence, and*

`3`

* S* for

**S**plitting of horizontal stretches of length 2 or 3.

Hence, * 3RS3R* is a concatenation of

`3R`

, `S`

and `3R`

, *similarly, whereas*

`3RSS`

*means first*

`3RSR`

`3R`

and then `(S and 3)`

**R**epeated until convergence -- which can be bad.

##### Value

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.

##### Note

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.

##### References

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

##### See Also

`runmed`

for running medians;
`lowess`

and `loess`

;
`supsmu`

and
`smooth.spline`

.

##### Examples

`library(stats)`

```
# NOT RUN {
require(graphics)
## 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)
# }
```

*Documentation reproduced from package stats, version 3.6.2, License: Part of R 3.6.2*