Empirische CDF-Funktionen werden üblicherweise durch eine Sprungfunktion geschätzt. Gibt es einen Grund, warum dies so gemacht wird und nicht durch Verwendung einer linearen Interpolation? Hat die Stufenfunktion interessante theoretische Eigenschaften, die uns bevorzugen?
Hier ist ein Beispiel für die beiden:
ecdf2 <- function (x) {
x <- sort(x)
n <- length(x)
if (n < 1)
stop("'x' must have 1 or more non-missing values")
vals <- unique(x)
rval <- approxfun(vals, cumsum(tabulate(match(x, vals)))/n,
method = "linear", yleft = 0, yright = 1, f = 0, ties = "ordered")
class(rval) <- c("ecdf", class(rval))
assign("nobs", n, envir = environment(rval))
attr(rval, "call") <- sys.call()
rval
}
set.seed(2016-08-18)
a <- rnorm(10)
a2 <- ecdf(a)
a3 <- ecdf2(a)
par(mfrow = c(1,2))
curve(a2, -2,2, main = "step function ecdf")
curve(a3, -2,2, main = "linear interpolation function ecdf")