| hsm {modeest} | R Documentation |
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).
hsm(x,
bw = NULL,
k,
tie.action = "mean",
tie.limit = 0.05,
...)
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. |
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.
A numeric value is returned, the mode estimate.
The user should preferentially call hsm through
mlv(x, method = "hsm", ...).
This returns an object of class mlv.
D.R. Bickel for the original code,
P. Poncet for the slight modifications introduced.
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.
mlv for general mode estimation;
venter for the Venter mode estimate
# 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)