logConCI {logcondens} | R Documentation |
Compute pointwise confidence interval for a density assuming log-concavity
Description
Compute approximate confidence interval for the true log-concave density, on a grid of points. Two main approaches are implemented: In the first, the confidence interval at a fixed point is based on the pointwise asymptotic theory for the log-concave maximum likelihood estimator (MLE) developed in Balabdaoui, Rufibach, and Wellner (2009). In the second, the confidence interval is estimated via the boostrap.
Usage
logConCI(res, xx0, conf.level = c(0.8, 0.9, 0.95, 0.99)[3],
type = c("DR", "ks", "nrd", "ECDFboot", "NPMLboot")[2],
htype = c("hscv", "hlscv", "hpi", "hns")[4], BB = 500)
Arguments
res |
An object of class |
xx0 |
Vector of grid points at which to calculate the confidence interval. |
conf.level |
Confidence level for the confidence interval(s). The default is 95%. |
type |
Vector of strings indicating type of confidence interval to compute. When |
htype |
Vector of strings indicating bandwidth selection method if |
BB |
number of iterations in the bootstrap if |
Details
In Balabdaoui et al. (2009) it is shown that (if the true density is strictly log-concave) the limiting distribution of the MLE of a log-concave
density \widehat f_n
at a point x
is
n^{2/5}(\widehat f_n(x)-f(x)) \to c_2(x) \bar{C}(0).
The nuisance parameter c_2(x)
depends on the true density f
and the second derivative of its logarithm. The limiting process \bar{C}(0)
is found as the second derivative at zero of a particular operator (called the "envelope") of an integrated Brownian motion plus t^4
.
Three of the confidence intervals are based on inverting the above limit using estimated quantiles of \bar{C}(0)
, and estimating the nuisance
parameter c_2(x)
. The options for the function logConCI
provide different ways to estimate this nuisance parameter. If type = "DR"
,
c_2(x)
is estimated using derivatives of the smoothed MLE as calculated by the function logConDens
(this method does not perform well in
simulations and is therefore not recommended). If type="ks"
, c_2(x)
is estimated using kernel density estimates of the true density and its
first and second derivatives. This is done using the R
package ks, and, with this option, a bandwidth selection method htype
must also
be chosen. The choices in htype
correspond to the various options for bandwidth selection available in ks. If type = "nrd"
, the second
derivative of the logarithm of the true density in c_2(x)
is estimated assuming a normal reference distribution.
Two of the confidence intervals are based on the bootstrap. For type = "ECDFboot"
confidence intervals based on re-sampling from the empirical
cumulative distribution function are computed. For type = "NPMLboot"
confidence intervals based on re-sampling from the nonparametric maximum
likelihood estimate of log-concave density are computed. Bootstrap confidence intervals take a few minutes to compute!
The default option is type = "ks"
with htype = "hns"
. Currently available confidence levels are 80%, 90%, 95% and 99%, with a default
of 95%.
Azadbakhsh et al. (2014) provides an empirical study of the relative performance of the various approaches available in this function.
Value
The function returns a list containing the following elements:
fhat |
MLE evaluated at grid points. |
up_DR |
Upper confidence interval limit when |
lo_DR |
Lower confidence interval limit when |
up_ks_hscv |
Upper confidence interval limit when |
lo_ks_hscv |
Lower confidence interval limit when |
up_ks_hlscv |
Upper confidence interval limit when |
lo_ks_hlscv |
Lower confidence interval limit when |
up_ks_hpi |
Upper confidence interval limit when |
lo_ks_hpi |
Lower confidence interval limit when |
up_ks_hns |
Upper confidence interval limit when |
lo_ks_hns |
Lower confidence interval limit when |
up_nrd |
Upper confidence interval limit when |
lo_nrd |
Lower confidence interval limit when |
up_npml |
Upper confidence interval limit when |
lo_npml |
Lower confidence interval limit when |
up_ecdf |
Upper confidence interval limit when |
lo_ecdf |
Lower confidence interval limit when |
Author(s)
Mahdis Azadbakhsh
Hanna Jankowski, hkj@yorku.ca
References
Azadbakhsh, M., Jankowski, H. and Gao, X. (2014). Computing confidence intervals for log-concave densities. Comput. Statist. Data Anal., 75, 248–264.
Baladbaoui, F., Rufibach, K. and Wellner, J. (2009) Limit distribution theory for maximum likelihood estimation of a log-concave density. Ann. Statist., 37(3), 1299–1331.
Tarn Duong (2012). ks: Kernel smoothing. R package version 1.8.10. https://CRAN.R-project.org/package=ks
Examples
## Not run:
## ===================================================
## Confidence intervals at a fixed point for the density
## ===================================================
data(reliability)
x.rel <- sort(reliability)
# calculate 95
grid <- seq(min(x.rel), max(x.rel), length.out = 200)
res <- logConDens(x.rel)
ci <- logConCI(res, grid, type = c("nrd", "ECDFboot"))
par(las = 1, mar = c(2.5, 3.5, 0.5, 0.5))
hist(x.rel, n = 25, col = gray(0.9), main = "", freq = FALSE,
xlab = "", ylab = "", ylim = c(0, 0.0065), border = gray(0.5))
lines(grid, ci$fhat, col = "black", lwd = 2)
lines(grid, ci$lo_nrd, col = "red", lwd = 2, lty = 2)
lines(grid, ci$up_nrd, col = "red", lwd = 2, lty = 2)
lines(grid, ci$lo_ecdf, col = "blue", lwd = 2, lty = 2)
lines(grid, ci$up_ecdf, col = "blue", lwd = 2, lty = 2)
legend("topleft", col = c("black", "blue", "red"), lwd = 2, lty = c(1, 2, 2), legend =
c("log-concave NPMLE", "CI for type = nrd", "CI for type = ECDFboot"), bty = "n")
## End(Not run)