R: Smooth Weighting Function - Generalized Biweight

smoothWgt {robustbase} | R Documentation

## Smooth Weighting Function - Generalized Biweight

### Description

“The Biweight on a Stick” — Compute a smooth (when h > 0) weight function typically for computing weights from large (robust) “distances” using a piecewise polynomial function which in fact is a 2-parameter generalization of Tukey's 1-parameter “biweight”.

### Usage

    smoothWgt(x, c, h)

### Arguments

`x` | numeric vector of abscissa values
`c` | “cutoff”, a typically positive number.
`h` | “bandwidth”, a positive number.

### Details

Let w(x;c,h) := `smoothWgt(x, c, h)`. Then,

w(x; c,h) := 0 if |x| >= c + h/2,

w(x; c,h) := 1 if |x| <= c - h/2,

w(x; c,h) := (1 - (|x| - (c-h/2))^2)^2 if c-h/2 < |x| < c+h/2.

`smoothWgt()` is scale invariant in the sense that

w(S x; S c, S h) = w(x; c, h),

when S > 0.

### Value

a numeric vector of the same length as `x` with weights between zero and one. Currently all `attributes` including `dim` and `names` are dropped.

### Author(s)

Martin Maechler

### See Also

`Mwgt(.., psi = "bisquare")` of which `smoothWgt()` is a generalization, and `Mwgt(.., psi = "optimal")` which looks similar for larger `c` with its constant one part around zero, but also has only one parameter.

### Examples

    ## a somewhat typical picture:
    curve(smoothWgt(x, c=3, h=1), -5,7, n = 1000)

    csW <- curve(smoothWgt(x, c=1/2, h=1), -2,2) # cutoff 1/2, bandwidth 1
    ## Show that the above is the same as
    ## Tukey's "biweight" or "bi-square" weight function:
    bw <- function(x) pmax(0, (1 - x^2))^2
    cbw <- curve(bw,                     col=adjustcolor(2, 1/2), lwd=2, add=TRUE)
    cMw <- curve(Mwgt(x,c=1,"biweight"), col=adjustcolor(3, 1/2), lwd=2, add=TRUE)
    stopifnot(## proving they are all the same:
       all.equal(csW, cbw, tol=1e-15),
       all.equal(csW, cMw, tol=1e-15))

[Package robustbase version 0.93-6 Index]