stats (version 3.6.2)

# smooth: Tukey's (Running Median) Smoothing

## Description

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

## 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.

## Details

`3` is Tukey's short notation for running `median`s of length 3,

`3R` stands for Repeated `3` until convergence, and

`S` for Splitting of horizontal stretches of length 2 or 3.

Hence, `3RS3R` is a concatenation of `3R`, `S` and `3R`, `3RSS` similarly, whereas `3RSR` means first `3R` and then `(S and 3)` Repeated until convergence -- which can be bad.

## References

`runmed` for running medians; `lowess` and `loess`; `supsmu` and `smooth.spline`.

## Examples

Run this code
``````# NOT RUN {
require(graphics)

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