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")
r
distributions
ecdf
Tal Galili
quelle
quelle
Antworten:
Es ist per Definition.
Die empirische Verteilungsfunktion einer Menge von Beobachtungen ist definiert durch(Xn)
Wobei die eingestellte Kardinalität ist. Dies ist von Natur aus eine Sprungfunktion. Es konvergiert fast sicher mit der tatsächlichen CDF# .
Beachten Sie auch, dass für jede Verteilung mit für mindestens zwei x (insbesondere nicht entartete diskrete Verteilungen) Ihre ECDF-Variante nicht zur tatsächlichen CDF konvergiert. Betrachten Sie zum Beispiel eine Bernoulli-Distribution mit CDFP(X=x)≠0 x
ist dies eine Schrittfunktion während ecdf2 konvergieren zu χ x ≥ 0 ⋅ ( p + ( 1 - p ) min ( x , 1 ) ) (eine stückweise lineare Funktion, die ( 0 , p ) und ( 1 , 1 ) verbindet
quelle