经验CDF函数通常由阶跃函数估算。是否有理由这样做而不是使用线性插值?阶跃函数是否具有使我们更喜欢它的任何有趣的理论特性?
这是两个的示例:
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")
相关 .................................................
“ ...由阶跃函数估计”掩盖了一个细微的误解:ECDF不仅由阶跃函数估计;它是通过定义这样的功能。它与随机变量的CDF相同。具体来说,给定任意有限的数字序列,请定义一个概率空间其中,离散和统一。令为将分配给的随机变量。ECDF是的CDF 。这种巨大的概念简化是对该定义的令人信服的论点。
—
ub