R: Half Sample Mode

hsm {modeest} | R Documentation

## Half Sample Mode

### Description

This function computes the Robertson-Cryer mode estimator described in Robertson and Cryer (1974), also called half sample mode (if `bw = 1/2`) or fraction sample mode (for some other `bw`) by Bickel (2006).

### Usage

      hsm(x,
          bw = NULL,
          k,
          tie.action = "mean",
          tie.limit = 0.05,
          ...)

### Arguments

`x` | numeric. Vector of observations.
`bw` | numeric or function. The bandwidth to be used. Should belong to (0, 1].
`k` | numeric. See 'Details'.
`tie.action` | character. The action to take if a tie is encountered.
`tie.limit` | numeric. A limit deciding whether or not a warning is given when a tie is encountered.
`...` | further arguments.

### Details

The modal interval, i.e. the shortest interval among intervals containing `k+1` observations, is computed iteratively, until only one value is found, the mode estimate. At each step i, one takes `k = ceiling(bw*n) - 1`, where `n` is the length of the modal interval computed at step i-`1`. If `bw` is of class `"function"`, then `k = ceiling(bw(n)) - 1` instead.

### Value

A numeric value is returned, the mode estimate.

### Note

The user should preferentially call `hsm` through `mlv(x, method = "hsm", ...)`. This returns an object of class `mlv`.

### Author(s)

D.R. Bickel for the original code,
P. Poncet for the slight modifications introduced.

### References

- Robertson T. and Cryer J.D. (1974). An iterative procedure for estimating the mode. J. Amer. Statist. Assoc., 69(348):1012-1016.

- Bickel D.R. and Fruehwirth R. (2006). On a Fast, Robust Estimator of the Mode: Comparisons to Other Robust Estimators with Applications. Computational Statistics and Data Analysis, 50(12):3500-3530.

### See Also

`mlv` for general mode estimation; `venter` for the Venter mode estimate

### Examples

    # Unimodal distribution
    x <- rweibull(10000, shape = 3, scale = 0.9)

    ## True mode
    weibullMode(shape = 3, scale = 0.9)

    ## Estimate of the mode
    bandwidth <- function(n, alpha) {1/n^alpha}
    hsm(x, bw = bandwidth, alpha = 2)
    M <- mlv(x, method = "hsm", bw = bandwidth, alpha = 2)
    print(M)
    plot(M)

[Package modeest version 2.1 Index]