Univariate Kernel Density Estimation

Provides an efficient implementation of univariate local polynomial kernel density estimators that can handle bounded, discrete, and zero-inflated data. See Geenens and Wang (2018) , Geenens (2014) , Nagler (2018a) , Nagler (2018b) .


kde1d

R build status CRAN version

Summary

  • implements a univariate kernel density estimator that can handle bounded, discrete, and zero-inflated data.
  • provides classical kernel density as well as log-linear and log-quadratic methods.
  • is highly efficient due to the Fast Fourier Transform, spline interpolation, and a C++ backend.

For details, see the API documentation.

How to install

  • the stable release from CRAN:
install.packages("kde1d")
  • the latest development version:
# install.packages("remotes")
remotes::install_github("tnagler/kde1d@dev")

Examples

Unbounded data
x <- rnorm(100)                    # simulate data
fit <- kde1d(x)                    # estimate density
dkde1d(0, fit)                     # evaluate density estimate
summary(fit)                       # information about the estimate
plot(fit)                          # plot the density estimate
curve(dnorm(x), add = TRUE,        # add true density
      col = "red")
Bounded data, log-linear
x <- rgamma(100, shape = 1)        # simulate data
fit <- kde1d(x, xmin = 0, deg = 1) # estimate density
dkde1d(seq(0, 5, by = 1), fit)     # evaluate density estimate
summary(fit)                       # information about the estimate
plot(fit)                          # plot the density estimate
curve(dgamma(x, shape = 1),        # add true density
      add = TRUE, col = "red",
      from = 1e-3)
Discrete data
x <- rbinom(100, size = 5, prob = 0.5)  # simulate data
x <- ordered(x, levels = 0:5)           # declare as ordered
fit <- kde1d(x, xmin = 0, xmax = 5,     # estimate density
            type = "discrete") 
fit <- kde1d(ordered(x, levels = 0:5))  # alternative API
dkde1d(sort(unique(x)), fit)            # evaluate density estimate
summary(fit)                            # information about the estimate
plot(fit)                               # plot the density estimate
points(ordered(0:5, 0:5),               # add true density
       dbinom(0:5, 5, 0.5), col = "red")
Zero-inflated data data
x <- rexp(500, 0.5)                    # simulate data
x[sample(1:500, 200)] <- 0             # add zero-inflation
fit <- kde1d(x, xmin = 0, type = "zi") # estimate density
plot(fit)                              # plot the density estimate
lines(                                 # add true density        
  seq(0, 20, l = 100),
  0.6 * dexp(seq(0, 20, l = 100), 0.5),
  col = "red"
)
points(0, 0.4, col = "red")
Weighted estimate
x <- rnorm(100)                         # simulate data
weights <- rexp(100)                    # weights as in Bayesian bootstrap
fit <- kde1d(x, weights = weights)      # weighted fit
plot(fit)                               # compare with unweighted fit
lines(kde1d(x), col = 2)

References

Geenens, G. (2014). Probit transformation for kernel density estimation on the unit interval. Journal of the American Statistical Association, 109:505, 346-358, arXiv:1303.4121

Geenens, G., Wang, C. (2018). Local-likelihood transformation kernel density estimation for positive random variables. Journal of Computational and Graphical Statistics, 27(4), 822-835. arXiv:1602.04862

Loader, C. (2006). Local regression and likelihood. Springer Science & Business Media.

Nagler, T. (2018a). A generic approach to nonparametric function estimation with mixed data. Statistics & Probability Letters, 137:326–330, arXiv:1704.07457

Nagler, T. (2018b). Asymptotic analysis of the jittering kernel density estimator. Mathematical Methods of Statistics, 27, 32-46. arXiv:1705.05431

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("kde1d")

1.2.2 by Thomas Nagler, 24 days ago


https://tnagler.github.io/kde1d/


Report a bug at https://github.com/tnagler/kde1d/issues/


Browse source code at https://github.com/cran/kde1d


Authors: Thomas Nagler [aut, cre] , Thibault Vatter [aut]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports graphics, Rcpp, randtoolbox, stats, utils

Suggests BH, RcppEigen, testthat

Linking to BH, Rcpp, RcppEigen


Imported by AIDA, MLCOPULA, rvinecopulib, vinereg.

Linked to by portvine.


See at CRAN