grenander: The Grenander mode estimator

Description Usage Arguments Details Value Note Author(s) References See Also Examples

View source: R/grenander.R

Description

This function computes the Grenander mode estimator.

Usage

1
grenander(x, bw = NULL, k, p, ...)

Arguments

x

numeric. Vector of observations.

bw

numeric. The bandwidth to be used. Should belong to (0, 1].

k

numeric. Paramater 'k' in Grenander's mode estimate, see below.

p

numeric. Paramater 'p' in Grenander's mode estimate, see below. If p = Inf, the function venter is used.

...

Additional arguments to be passed to venter.

Details

The Grenander estimate is defined by

( sum_{j=1}^{n-k} (x_{j+k} + x_{j})/(2(x_{j+k} - x_{j})^p) ) / ( sum_{j=1}^{n-k} 1/((x_{j+k} - x_{j})^p) )

If p tends to infinity, this estimate tends to the Venter mode estimate; this justifies to call venter if p = Inf.

The user should either give the bandwidth bw or the argument k, k being taken equal to ceiling(bw*n) - 1 if missing.

Value

A numeric value is returned, the mode estimate. If p = Inf, the venter mode estimator is returned.

Note

The user may call grenander through mlv(x, method = "grenander", bw, k, p, ...).

Author(s)

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

References

See Also

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

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Unimodal distribution
x <- rnorm(1000, mean = 23, sd = 0.5) 

## True mode
normMode(mean = 23, sd = 0.5) # (!)

## Parameter 'k'
k <- 5

## Many values of parameter 'p'
ps <- seq(0.1, 4, 0.01)

## Estimate of the mode with these parameters
M <- sapply(ps, function(p) grenander(x, p = p, k = k))

## Distribution obtained
plot(density(M), xlim = c(22.5, 23.5))

paulponcet/modeest documentation built on Nov. 19, 2019, 9:16 p.m.