Learn R Programming

kader (version 0.0.8)

fnhat_ES2013: Robust Kernel Density Estimator of Eichner & Stute (2013)

Description

Implementation of eq. (4) in Eichner & Stute (2013) for a given and fixed scalar \(\sigma\), for rank transformation function \(J\) (and, of course, for fixed and given location(s) in \(x\), data \((X_1, \ldots, X_n)\), a kernel function \(K\), and a bandwidth \(h\)).

Usage

fnhat_ES2013(x, data, K, h, ranktrafo, sigma)

Arguments

x

Numeric vector with the location(s) at which the density estimate is to be computed.

data

Numeric vector \((X_1, \ldots, X_n)\) of the data from which the estimate is to be computed. Missing values are not allowed and entail an error.

K

A kernel function to be used for the estimator.

h

Numeric scalar for bandwidth \(h\).

ranktrafo

A function used for the rank transformation.

sigma

Numeric scalar for value of scale parameter \(\sigma\).

Value

An object with class "density" whose underlying structure is a list containing the following components (as described in density), so that the print and plot methods for density-objects are immediately available):

x the n coordinates of the points where the density is estimated.
y the estimated density values from eq. (4) in Eichner & Stute (2013).
bw the bandwidth used.
n the sample size. (Recall: missing or infinite values are not allowed here.)
call the call which produced the result.
data.name the deparsed name of the x argument.
has.na logical, for compatibility (always FALSE).
Additionally:
ranktrafo
as in Arguments. sigma
as in Arguments. x

Details

The formula upon which the computational version implemented here is based is given in eq. (15.9) of Eichner (2017). This function does mainly only a simple preparatory computation and then calls compute_fnhat which does the actual work.

References

Eichner & Stute (2013) and Eichner (2017): see kader.

See Also

fnhat_SS2011.

Examples

Run this code
# NOT RUN {
require(stats);   require(grDevices);   require(datasets)

 # Simulated N(0,1)-data and one sigma-value
set.seed(2016);     n <- 100;     d <- rnorm(n)
xgrid <- seq(-4, 4, by = 0.1)
(fit <- fnhat_ES2013(x = xgrid, data = d, K = dnorm, h = n^(-1/5),
  ranktrafo = J2, sigma = 1) )
# }
# NOT RUN {
plot(fit, ylim = range(0, dnorm(0), fit$y), col = "blue")
curve(dnorm, add = TRUE);   rug(d, col = "red")
legend("topleft", lty = 1, col = c("blue", "black", "red"),
  legend = expression(hat(f)[n], phi, "data"))
# }
# NOT RUN {
 # The same data, but several sigma-values
sigmas <- seq(1, 4, length = 4)
(fit <- lapply(sigmas, function(sig)
  fnhat_ES2013(x = xgrid, data = d, K = dnorm, h = n^(-1/5),
    ranktrafo = J2, sigma = sig)) )

ymat <- sapply(fit, "[[", "y")
matplot(x = xgrid, y = ymat, type = "l", lty = 1, col = 2 + seq(sigmas),
  ylim = range(0, dnorm(0), ymat), main = "", xlab = "", ylab = "Density")
curve(dnorm, add = TRUE);   rug(d, col = "red")
legend("topleft", lty = 1, col = c("black", "red", NA), bty = "n",
  legend = expression(phi, "data", hat(f)[n]~"in other colors"))
# }
# NOT RUN {
 # Old-Faithful-eruptions-data and several sigma-values
d <- faithful$eruptions;     n <- length(d);     er <- extendrange(d)
xgrid <- seq(er[1], er[2], by = 0.1);    sigmas <- seq(1, 4, length = 4)
(fit <- lapply(sigmas, function(sig)
   fnhat_ES2013(x = xgrid, data = d, K = dnorm, h = n^(-1/5),
     ranktrafo = J2, sigma = sig)) )

ymat <- sapply(fit, "[[", "y");     dfit <- density(d, bw = "sj")
plot(dfit, ylim = range(0, dfit$y, ymat), main = "", xlab = "")
rug(d, col = "red")
matlines(x = xgrid, y = ymat, lty = 1, col = 2 + seq(sigmas))
legend("top", lty = 1, col = c("black", "red", NA), bty = "n",
  legend = expression("R's est.", "data", hat(f)[n]~"in other colors"))
# }

Run the code above in your browser using DataLab