Learn R Programming

fdrtool (version 1.2.18)

grenader: Grenander Estimator of a Decreasing or Increasing Density

Description

The function grenander computes the Grenander estimator of a one-dimensional decreasing or increasing density.

Usage

grenander(F, type=c("decreasing", "increasing"))

Value

A list of class grenander with the following components:

F

the empirical distribution function specified as input.

x.knots

x locations of the knots of the least concave majorant of the ECDF.

F.knots

the corresponding y locations of the least concave majorant of the ECDF.

f.knots

the corresponding slopes (=density).

Arguments

F

an ecdf containing the empirical cumulative density.

type

specifies whether the distribution is decreasing (the default) or increasing.

Author

Korbinian Strimmer (https://strimmerlab.github.io).

Details

The Grenander (1956) density estimator is given by the slopes of the least concave majorant (LCM) of the empirical distribution function (ECDF). It is a decreasing piecewise-constant function and can be shown to be the non-parametric maximum likelihood estimate (NPMLE) under the assumption of a decreasing density (note that the ECDF is the NPMLE without this assumption). Similarly, an increasing density function is obtained by using the greatest convex minorant (GCM) of the ECDF.

References

Grenander, U. (1956). On the theory of mortality measurement, Part II. Skan. Aktuarietidskr, 39, 125--153.

See Also

ecdf, gcmlcm, density.

Examples

Run this code
# load "fdrtool" library
library("fdrtool")

# samples from random exponential variable 
z = rexp(30,1)
e = ecdf(z)
g = grenander(e)
g

# plot ecdf, concave cdf, and Grenander density estimator (on log scale)
plot(g, log="y") 

# for comparison the kernel density estimate
plot(density(z)) 

# area under the Grenander density estimator 
sum( g$f.knots[-length(g$f.knots)]*diff(g$x.knots) )

Run the code above in your browser using DataLab