grenander: Grenander Estimator of a Decreasing or Increasing Density

View source: R/grenander.R

grenaderR Documentation

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"))

Arguments

F

an ecdf containing the empirical cumulative density.

type

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

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.

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).

Author(s)

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

References

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

See Also

ecdf, gcmlcm, density.

Examples

# 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) )

fdrtool documentation built on Sept. 11, 2024, 9:10 p.m.

Related to grenander in fdrtool...